A Programmer’s Guide to Nektar++
Department of Aeronautics, Imperial College London, UK
Scientific Computing and Imaging Institute, University of Utah, USA
January 31, 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
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
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
]