PICLas Documentation Logo

User Guide

  • User Guide
    • 1. Installation
      • 1.1. AppImage executable download
      • 1.2. Prerequisites
        • 1.2.1. Ubuntu or similar
        • 1.2.2. CentOS
      • 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 PyHOPE
      • 2.2. Mesh conversion with PyHOPE
        • 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.4.2. Profile-guided optimization (PGO)
      • 3.5. Post-processing
    • 4. Features & Models
      • 4.1. Variable polynomial degree (p-adaption)
        • 4.1.1. Refining boundary elements (pAdaptionType = non-periodic-BC)
      • 4.2. Particle Tracking
        • 4.2.1. DoRefMapping
        • 4.2.2. Tracing
        • 4.2.3. Parameters for DoRefMapping and Tracing (NEEDS UPDATING)
        • 4.2.4. Rotating Frame of Reference
        • 4.2.5. Cartesian background mesh (Fast Initialization Background Mesh, FIBGM)
      • 4.3. Field Solver - Poisson Equation
        • 4.3.1. PETSc Solver
        • 4.3.2. Internal CG Solver
        • 4.3.3. Symmetric Simulations
      • 4.4. Boundary Conditions - Field Solver
        • 4.4.1. Maxwell’s Equations
        • 4.4.2. Poisson’s Equation
        • 4.4.3. Dielectric Materials
      • 4.5. Boundary Conditions - Particle Solver
        • 4.5.1. Reflective Wall
        • 4.5.2. Rotational Periodicity
        • 4.5.3. Porous Wall / Pump
        • 4.5.4. Surface Chemistry
        • 4.5.5. Catalytic Surfaces
        • 4.5.6. Deposition of Charges on resolved Dielectric Surfaces
        • 4.5.7. Deposition of charges on distributed capacitance boundary condition (DCBC) surfaces
      • 4.6. Particle Initialization & Emission
        • 4.6.1. Initialization
        • 4.6.2. Surface Flux
      • 4.7. Particle-In-Cell
        • 4.7.1. Lorentz force
        • 4.7.2. Charge and Current Deposition
      • 4.8. Drift-diffusion model
        • 4.8.1. Finite volume solver
        • 4.8.2. Boundary conditions
        • 4.8.3. Plasma chemistry
        • 4.8.4. Visualisation
      • 4.9. Magnetic Background Field
        • 4.9.1. Read-in of an External Field
        • 4.9.2. Calculation with superB
      • 4.10. Direct Simulation Monte Carlo
        • 4.10.1. Species Definition
        • 4.10.2. Pairing & Collision Modelling
        • 4.10.3. Inelastic Collisions & Relaxation
        • 4.10.4. Chemistry & Ionization
        • 4.10.5. Granular Flows
        • 4.10.6. Additional Features
        • 4.10.7. Ensuring Physical Simulation Results
      • 4.11. Background Gas
        • 4.11.1. Distribution from DSMC result
        • 4.11.2. Regions
        • 4.11.3. Trace species
        • 4.11.4. Cross-section based collision probability
        • 4.11.5. Cross-section based vibrational relaxation probability
        • 4.11.6. Cross-section based electronic relaxation probability
      • 4.12. Unified Species Database
        • 4.12.1. Species data
        • 4.12.2. Reaction data
        • 4.12.3. Cross-section data
      • 4.13. Fokker-Planck Collision Operator
      • 4.14. Bhatnagar-Gross-Krook Collision Operator
      • 4.15. Features of the Particle Solver
        • 4.15.1. Macroscopic Restart
        • 4.15.2. Variable Time Step
        • 4.15.3. Symmetric Simulations
        • 4.15.4. Variable Particle Weighting
        • 4.15.5. Virtual Cell Merge
      • 4.16. Radiation & Radiation Transport
      • 4.17. Raytracing & Photoionization
        • 4.17.1. Pulse definition
        • 4.17.2. Surface interaction
        • 4.17.3. Photo-ionization probability
        • 4.17.4. Volume and surface super-sampling
      • 4.18. Discrete velocity method
        • 4.18.1. Finite volume solver
        • 4.18.2. Initial and boundary conditions
        • 4.18.3. Visualisation
    • 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.3.1. Electronic excitation
      • 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)
      • 5.6. Surface Group Output
    • 6. Tools
      • 6.1. Unified Species Database (USD)
        • 6.1.1. Maintain and edit 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 PyHOPE (pre-processing)
        • 7.1.2. PIC Simulation with PICLas
        • 7.1.3. Visualization (post-processing)
      • 7.2. Landau Damping (PIC, Poisson’s Equation)
        • 7.2.1. Mesh Generation with PyHOPE (pre-processing)
        • 7.2.2. PIC Simulation with PICLas
        • 7.2.3. Visualisation (post-processing)
      • 7.3. Two Stream Instability (PIC, Poisson’s Equation)
        • 7.3.1. Mesh Generation with PyHOPE (pre-processing)
        • 7.3.2. PIC Simulation with PICLas
        • 7.3.3. Visualization (post-processing)
      • 7.4. Negative Streamer Discharge (PIC, Poisson’s Equation)
        • 7.4.1. Drift-Diffusion Electron Fluid
        • 7.4.2. Particle-in-cell/Monte Carlo Collision (PIC/MCC)
        • 7.4.3. Comparison of Electron Fluid and PIC-MCC
      • 7.5. Adiabatic Box/Reservoir (DSMC, Relaxation/Chemistry)
        • 7.5.1. Mesh Generation with PyHOPE (pre-processing)
        • 7.5.2. Simulation: Chemistry disabled
        • 7.5.3. Visualization, chemistry disabled (post-processing)
        • 7.5.4. Simulation: Chemistry enabled
        • 7.5.5. Visualization, chemistry enabled (post-processing)
      • 7.6. Hypersonic Flow around the 70° Cone (DSMC) - 2D Mesh
        • 7.6.1. Mesh Generation with PyHOPE (pre-processing)
        • 7.6.2. Flow simulation with DSMC
        • 7.6.3. Run the simulation
        • 7.6.4. Visualization (post-processing)
      • 7.7. Hypersonic Flow around the 70° Cone (DSMC) - 3D Mesh with Gmsh
        • 7.7.1. Mesh generation with Gmsh
        • 7.7.2. Flow simulation with DSMC
    • 8. Cluster Guidelines
      • 8.1. Simulating at HLRS
        • 8.1.1. Cloning with the SSH protocol
        • 8.1.2. Setting up the module environment
        • 8.1.3. Installing PETSc with restricted internet access
        • 8.1.4. Compiling and executing PICLas
    • 9. Appendix
      • 9.1. Tested compiler combinations
      • 9.2. Unified Species Database (USD)
        • 9.2.1. Electronic database
        • 9.2.2. Reactions

Developer Guide

  • Developer Guide
    • 1. GitLab Workflow
      • 1.1. Issues & Milestones
      • 1.2. Merge Request (MR)
        • 1.2.1. Automatic release note generation
      • 1.3. Release and deploy
        • 1.3.1. Release Tag
        • 1.3.2. GitHub
    • 2. Documentation
      • 2.1. Building documentation
        • 2.1.1. HTML Version
        • 2.1.2. PDF Version
      • 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
      • 3.6. Code Annotations
    • 4. Best Practices
      • 4.1. MPI
      • 4.2. Shared Memory Windows
      • 4.3. Hawk
        • 4.3.1. Striping
        • 4.3.2. Species-zero bug
      • 4.4. CollectiveStop
    • 5. Troubleshooting
      • 5.1. WriteArrayToHDF5() and the collective flag
      • 5.2. Seemingly meaningless change in code triggers segmentation fault or slow down of the code
      • 5.3. Possible memory leak detection when using MPICH
        • 5.3.1. PETSc
    • 6. Code Extension
      • 6.1. Surface Sampling & Output
      • 6.2. Allocating particle data
      • 6.3. Insert new particles
      • 6.4. Remove particles
      • 6.5. Particle internal data container
        • 6.5.1. MPI communication
    • 7. Useful Functions
      • 7.1. General Functions and Subroutines
      • 7.2. Particle Functions and Subroutines
    • 8. MPI Implementation
      • 8.1. General Remarks: Things to consider
      • 8.2. Construction of Halo Region (MPI 3.0 Shared Memory)
        • 8.2.1. Mesh Geometry
        • 8.2.2. Element/Side Mappings
        • 8.2.3. Particle Element Mappings
      • 8.3. Custom communicators
        • 8.3.1. Available communicators
    • 9. Regression Testing
      • 9.1. reggie2.0 Tool
      • 9.2. Local execution of reggie2.0
      • 9.3. Compression of HDF5 reference files
      • 9.4. Running GitLab .gitlab-ci.yml Tests
      • 9.5. Remote Testing on Gitlab
      • 9.6. Code Coverage
        • 9.6.1. Coverage on GitLab
        • 9.6.2. Local coverage tests
        • 9.6.3. Reggie coverage
      • 9.7. Local Testing using gitlab-ci-local
        • 9.7.1. Example
      • 9.8. Regression Test Gitlab Runner Setup for self-hosted Servers
        • 9.8.1. Prerequisites: Installation of Software on Clean Ubuntu Setup (18.04)
        • 9.8.2. Installation of Gitlab Runners
        • 9.8.3. Configuration Files
        • 9.8.4. Automatic Deployment to Other Platforms (GitHub)
    • 10. Unit tests
      • 10.1. Integration of unit test with CTest
      • 10.2. Implementation of unit tests
        • 10.2.1. CMakeLists.txt
        • 10.2.2. General unit test structure
        • 10.2.3. Generation of reference mesh data
    • 11. Compiler Options
    • 12. Developer Tools
      • 12.1. WarningsCheck
      • 12.2. Remove trailing white spaces
      • 12.3. Module Environment
        • 12.3.1. FAQ: Common Problems
    • 13. Performance Analysis
      • 13.1. Extrae and Paraver
        • 13.1.1. Installation
        • 13.1.2. Code Instrumentation
        • 13.1.3. Tracing the code
        • 13.1.4. User functions
      • 13.2. Intel® VTune™
        • 13.2.1. VTune Installation
        • 13.2.2. Batch jobs
        • 13.2.3. Usage
      • 13.3. Valgrind
        • 13.3.1. Installation of Valgrind
        • 13.3.2. Execution of Valgrind
    • 14. Building the AppImage Executable
      • 14.1. piclas
      • 14.2. piclas2vtk and other tools
      • 14.3. Troubleshooting
    • 15. Markdown Examples
      • 15.1. Linking
        • 15.1.1. Hyperlinks
        • 15.1.2. Referencing other sections of the documentation
      • 15.2. Code environment
      • 15.3. Equations
      • 15.4. Bibtex, cite
      • 15.5. section references
      • 15.6. Figures, caption
      • 15.7. tables
      • 15.8. unnumbered section headings
      • 15.9. Code blocks for various languages

References

  • References
PICLas Documentation
  • User Guide
  • 4. Features & Models
  • View page source

4. Features & Models

Table of Contents

  • 4.1. Variable polynomial degree (p-adaption)
  • 4.2. Particle Tracking
  • 4.3. Field Solver - Poisson Equation
  • 4.4. Boundary Conditions - Field Solver
  • 4.5. Boundary Conditions - Particle Solver
  • 4.6. Particle Initialization & Emission
  • 4.7. Particle-In-Cell
  • 4.8. Drift-diffusion model
  • 4.9. Magnetic Background Field
  • 4.10. Direct Simulation Monte Carlo
  • 4.11. Background Gas
  • 4.12. Unified Species Database
  • 4.13. Fokker-Planck Collision Operator
  • 4.14. Bhatnagar-Gross-Krook Collision Operator
  • 4.15. Features of the Particle Solver
  • 4.16. Radiation & Radiation Transport
  • 4.17. Raytracing & Photoionization
  • 4.18. Discrete velocity method

The goal of PICLas is to enable to approximation of the complete Boltzmann equation:

\[ \frac{\partial f}{\partial t} + \mathbf{v}\cdot\frac{\partial f}{\partial \mathbf{x}} + \frac{\mathbf{F}}{m}\cdot\frac{\partial f}{\partial \mathbf{v}} = \left.\frac{\partial f}{\partial t}\right|_{\mathrm{coll}} \]
Previous Next

© Copyright 2026 PICLas Developers.

Built with Sphinx using a theme provided by Read the Docs.