PICLas Documentation
User Guide
User Guide
1. Installation
1.1. AppImage executable download
1.2. Prerequisites
1.3. Required Libraries
1.3.1. Installing GCC
1.3.2. Installing OpenMPI
1.3.3. Installing HDF5
1.3.4. Installing PETSc
1.4. Obtaining the source
1.5. Compiling the code
1.5.1. Directory paths
2. Mesh Generation
2.1. Mesh generation with HOPR
2.2. Mesh conversion with HOPR
2.2.1. Mesh generation with Gmsh
2.2.2. Mesh generation with Coreform Cubit
2.2.3. Mesh generation with OMNIS/HEXPRESS
2.2.4. Mesh generation with GridPro
2.2.5. Mesh generation with CENTAUR
2.2.6. Mesh generation with MeshGems/SALOME
3. Workflow
3.1. Compiler options
3.2. Solver settings
3.3. Setup of parameter file(s)
3.4. Simulation
3.4.1. Parallel execution
3.5. Post-processing
4. Features & Models
4.1. Particle Tracking
4.1.1. DoRefMapping
4.1.2. Tracing
4.1.3. Parameters for DoRefMapping and Tracing (NEEDS UPDATING)
4.1.4. Rotating Frame of Reference
4.2. Field Solver - Poisson Equation
4.2.1. CG Solver
4.2.2. PETSc Solver
4.3. Boundary Conditions - Field Solver
4.3.1. Maxwell’s Equations
4.3.2. Poisson’s Equation
4.3.3. Dielectric Materials
4.4. Boundary Conditions - Particle Solver
4.4.1. Reflective Wall
4.4.2. Rotational Periodicity
4.4.3. Porous Wall / Pump
4.4.4. Surface Chemistry
4.4.5. Deposition of Charges on Dielectric Surfaces
4.5. Particle Initialization & Emission
4.5.1. Initialization
4.5.2. Surface Flux
4.6. Particle-In-Cell
4.6.1. Charge and Current Deposition
4.7. Magnetic Background Field
4.7.1. Variable External Field
4.7.2. superB
4.8. Direct Simulation Monte Carlo
4.8.1. Species Definition
4.8.2. Pairing & Collision Modelling
4.8.3. Inelastic Collisions & Relaxation
4.8.4. Chemistry & Ionization
4.8.5. Additional Features
4.8.6. Ensuring Physical Simulation Results
4.9. Background Gas
4.9.1. Distribution from DSMC result
4.9.2. Regions
4.9.3. Trace species
4.9.4. Cross-section based collision probability
4.9.5. Cross-section based vibrational relaxation probability
4.9.6. Cross-section based electronic relaxation probability
4.10. Fokker-Planck Collision Operator
4.11. Bhatnagar-Gross-Krook Collision Operator
4.12. Features of the Particle Solver
4.12.1. Macroscopic Restart
4.12.2. Variable Time Step
4.12.3. Symmetric Simulations
4.12.4. Virtual Cell Merge
5. Visualization & Output
5.1. Particle Data
5.2. Field Solver and PIC
5.2.1. Element-polynomial field properties
5.2.2. Element-constant field/particle properties
5.2.3. Time-averaged Fields
5.3. Particle Flow and Surface Sampling
5.4. Integral Variables
5.4.1. Field Variables
5.4.2. Particle Variables
5.4.3. Surface Variables
5.5. Dynamic Mode Decomposition
5.5.1. Ritz spectrum (coaxial_DMD_Spec.dat)
5.5.2. Mode visualization (coaxial_DMD.h5)
6. Tools
6.1. Collision cross-section database
6.2. Userblock
6.2.1.
extract_userblock.py
6.2.2.
rebuild.py
7. Tutorials
7.1. Plasma Wave (PIC, Poisson’s Equation)
7.1.1. Mesh Generation with HOPR (pre-processing)
7.1.2. PIC Simulation with PICLas
7.1.3. Visualization (post-processing)
7.2. Adiabatic Box/Reservoir (DSMC, Relaxation/Chemistry)
7.2.1. Mesh Generation with HOPR (pre-processing)
7.2.2. Simulation: Chemistry disabled
7.2.3. Visualization, chemistry disabled (post-processing)
7.2.4. Simulation: Chemistry enabled
7.2.5. Visualization, chemistry enabled (post-processing)
7.3. Hypersonic Flow around the 70° Cone (DSMC) - 2D Mesh
7.3.1. Mesh Generation with HOPR (pre-processing)
7.3.2. Flow simulation with DSMC
7.3.3. Run the simulation
7.3.4. Visualization (post-processing)
7.4. Hypersonic Flow around the 70° Cone (DSMC) - 3D Mesh with Gmsh
7.4.1. Mesh generation with Gmsh
7.4.2. Flow simulation with DSMC
8. Cluster Guidelines
8.1. Simulating at HLRS
8.1.1. Cloning with the SSH protocol
8.1.2. Compiling and executing PICLas
9. Appendix
9.1. Tested compiler combinations
Developer Guide
Developer Guide
1. GitLab Workflow
1.1. Issues & Milestones
1.2. Merge Request
1.3. Release and deploy
1.3.1. Release Tag
1.3.2. Collaborative Numerics Group
1.3.3. GitHub
2. Documentation
2.1. Building documentation
2.2. Writing documentation
2.2.1. Figures
3. Style Guide
3.1. Header of Functions and Subroutines
3.2. Variables
3.3. Functions and Control Structures
3.4. Workflow Description
3.5. Special Rules
3.5.1. CALL Allocate_Shared()
3.5.2. USE MOD_Preproc
4. Troubleshooting
4.1. WriteArrayToHDF5() and the collective flag
4.2. Seemingly meaningless change in code triggers segmentation fault or slow down of the code
5. Code Extension
5.1. Surface Sampling & Output
6. Useful Functions
6.1. General Functions and Subroutines
6.2. Particle Functions and Subroutines
7. MPI Implementation
7.1. General Remarks: Things to consider
7.2. Construction of Halo Region (MPI 3.0 Shared Memory)
7.2.1. Mesh Geometry
7.2.2. Element/Side Mappings
7.2.3. Particle Element Mappings
8. Regression Testing
8.1. Reggie2.0 Tool
8.2. Regression Server
Gitlab Runner
Setup
8.2.1. Required Installation of Software on Clean Ubuntu Setup (18.04)
8.2.2. Installation Steps for Gitlab Runners
8.2.3.
Configuration files
8.2.4. Automatic Deployment to other platforms
9. Unit tests
9.1. Integration of unit test with CTest
9.2. Implementation of unit tests
9.2.1. CMakeLists.txt
9.2.2. General unit test structure
9.2.3. Generation of reference mesh data
10. Compiler Options
11. Developer Tools
11.1. WarningsCheck
11.2. Remove trailing white spaces
11.3. Module Environment
11.3.1. FAQ: Common Problems
12. Performance Analysis
12.1. Extrae and Paraver
12.1.1. Installation
12.1.2. Code Instrumentation
12.1.3. Tracing the code
12.1.4. User functions
12.2. Intel® VTune™
12.2.1. VTune Installation
12.2.2. Batch jobs
12.2.3. Usage
12.3. Valgrind
12.3.1. Installation of Valgrind
12.3.2. Execution of Valgrind
13. Building the AppImage Executable
13.1. piclas
13.2. piclas2vtk and other tools
13.3. Troubleshooting
14. Markdown Examples
14.1. hyperlinks
14.2. Code environment
14.3. Equations
14.4. Bibtex, cite
14.5. section references
14.6. Figures, caption
14.7. tables
14.8. unnumbered section headings
14.9. Code blocks for various languages
References
References
PICLas Documentation
Index
Index