PIC

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]