A significant amount of effort has been invested into developing efficient memory management
techniques, to enable the sharing of memory between Python and C++ for the ubiquitous
Nektar++ Array
structure which is used throughout the code. The computations carried out
in Nektar++ are usually highly demanding on the machines they are run on, therefore any
unnecessary data duplication or memory leaks would be detrimental to software
performance.
This section first outlines some precusor information relating to the basics of memory management in C++ and Python, before explaining the strategy used in NekPy to effectively use the resources when passing data between the different layers of the bindings.