A Programmer’s Guide to Nektar++
Department of Aeronautics, Imperial College London, UK
Scientific Computing and Imaging Institute, University of Utah, USA
October 30, 2024
Nektar++ Developer’s Guide
1
Preface
2
Introduction
2.1
The Ethos of Nektar++
2.2
The Structure of Nektar++
2.3
Assumed Proficiencies
2.4
Other Software Implementations and Frameworks
2.5
How to Use This Document
3
Preliminaries
3.1
Summary of Development Tools and Best Practices
3.2
Documentation and Tutorials
3.3
Compiling Tutorials
3.4
Core Nektar++ Programming Concepts
3.5
Design Patterns
3.6
Software Testing Approaches
I
Building-Blocks of Our Framework (Inside the Library)
4
Inside the Library: LibUtilities
4.1
BasicConst
4.2
BasicUtils
4.3
Communication
4.4
FFT
4.5
Foundations
4.6
Interpreter
4.7
Kernel
4.8
Linear Algebra
4.9
Memory
4.10
Polylib
4.11
SIMDLib
4.12
Time Integration
5
Inside the Library: StdRegions
5.1
The Fundamentals Behind StdRegions
5.2
The Fundamental Data Structures within StdRegions
5.3
The Fundamental Algorithms within StdRegions
6
Inside the Library: SpatialDomains
6.1
The Fundamentals Behind SpatialDomains
6.2
The Fundamental Data Structures within SpatialDomains
6.3
The Fundamental Algorithms within SpatialDomains
7
Inside the Library: LocalRegions
7.1
The Fundamentals Behind LocalRegions
7.2
The Fundamental Data Structures within LocalRegions
7.3
The Fundamental Algorithms within LocalRegions
8
Inside the Library: Collections
8.1
The Fundamentals Behind Collections
8.2
The Fundamental Data Structures within Collections
8.3
The Fundamental Algorithms within Collections
9
Inside the Library: MultiRegions
9.1
The Fundamentals Behind MultiRegions
9.2
The Fundamental Data Structures within MultiRegions
9.3
The Fundamental Algorithms within MultiRegions
9.4
Preconditioners
10
Inside the Library: GlobalMapping
10.1
The Fundamentals Behind GlobalMapping
10.2
The Fundamental Data Structures within GlobalMapping
10.3
The Fundamental Algorithms within GlobalMapping
11
Inside the Library: FieldUtils
11.1
The Fundamentals Behind FieldUtils
11.2
The Fundamental Data Structures within FieldUtils
11.3
The Fundamental Algorithms within FieldUtils
12
Inside the Library: SolverUtils
12.1
The Fundamentals Behind SolverUtils
12.2
The Fundamental Data Structures within SolverUtils
12.3
The Fundamental Algorithms within SolverUtils
II
Solvers
13
ADRSolver: Solving the Advection-Reaction-Diffusion Equation
14
IncNavierStokesSolver: Solving the Incompressible Navier-Stokes Equations
14.1
Fundamental Theories of IncNavierStokesSolver
14.2
Functions of the implementation
14.3
Structure of the algorithm
15
CompressibleFlowSolver: Solving the Compressible Navier-Stokes Equations
15.1
Fundamental Theories of CompressibleFlowSolver
15.2
Functions of the implementation
15.3
Data Structure of CompressibleFlowSolver
15.4
Flow Chart of CompressibleFlowSolver
III
Utilities
16
FieldConvert
17
NekMesh
17.1
Introduction
17.2
Theory
17.3
Input Modules
17.4
Process Modules
17.5
Output Modules
Bibliography
Bibliography
IV
NekPy: Python interface to
Nektar++
18
Introduction
18.1
Features and functionality
19
Installing NekPy
19.1
Compiling and installing Nektar++
19.2
Using the bindings
20
Package structure
21
NekPy wrapping guide
21.1
Defining a library
21.2
Basic class wrapping
22
Documentation
23
Memory management in NekPy
23.1
Memory management in C++ and Python
23.2
Passing C++ memory to Python
24
FieldConvert in NekPy
24.1
Idea and motivation
Bibliography
Bibliography
[
next
]