The NekPy wrapper is designed to mimic the library structure of Nektar++, with directories
for the LibUtilities
, SpatialDomains
and StdRegions
libraries. This is a deliberate design
decision, so that classes and definitions in Nektar++ can be easily located inside
NekPy.
There are also some other directories and files:
LibUtilities/Python/NekPyConfig.hpp is a convenience header that all
.cpp
files should import. It sets appropriate namespaces for boost::python
and boost::python::numpy
, depending on whether the Boost.NumPy
library was
compiled or is included in Boost,
cmake/python contains templates for init.py
and setup.py
files which every
Python package should contain,
cmake/ThirdPartyPython.cmake is a CMake configuration file which searches
for Boost.Python
and prepares make
targets for installing NekPy.
Figure 20.1 shows the location of Python wrapper files within Nektar++ structure.
Every sub-module of Nektar++ hosts an additional folder for Python files and the
structure of the Python folder mimics the structure of the sub-module itself, as
shown on the left of the figure with LibUtilities
sub-module. Individual .cpp
files, such as Expansion.cpp
contain the wrappers for classes and methods from
corresponding Nektar++ library files whereas .cpp
files named after sub-modules (e.g.
LibUtilities.cpp
) contain BOOST_PYTHON_MODULE
definitions which create package modules
(e.g. NekPy.LibUtilities
).