PIC

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]