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:
.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,
init.py
and setup.py
files which every
Python package should contain,
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
).