Skip to content

File hexapic.hpp

FileList > hexapic > source > hexapic.hpp

Core data structures, types, and global parameters for the HEXAPIC Particle-in-Cell (PIC) code. More...

  • #include <mpi.h>
  • #include <math.h>
  • #include <stdio.h>
  • #include <unistd.h>
  • #include <stdlib.h>
  • #include <string.h>
  • #include <limits.h>
  • #include <time.h>
  • #include <iostream>
  • #include <vector>
  • #include <set>
  • #include <fstream>
  • #include <sstream>
  • #include <petsc.h>
  • #include <iomanip>
  • #include <openPMD/openPMD.hpp>

Namespaces

Type Name
namespace openPMD

Classes

Type Name
struct Boundary
struct Cell
struct Collision
struct Grid
struct Neighbours
struct Particle
struct SecondaryEmission
struct Source
struct SourceSpecie
struct Species
struct Species_inject
struct Species_load

Public Types

Type Name
typedef void(* reactionFunction

Public Attributes

Type Name
Mat A
Matrix.
PetscScalar Bb
normalised basis for B
PetscScalar Bf
external magnetic field
std::vector< std::vector< std::string > > MCC_init_data
std::vector< std::vector< std::string > > PSI_init_data
PetscScalar Sconst
PetscScalar * V_global
PetscScalar * V_local
Vec b
Solution and source term.
PetscInt boris
std::vector< Cell > cells
std::vector< std::vector< PetscScalar > > chunks_float
std::vector< Collision > collisions
VecScatter ctx
PetscScalar dV
PetscInt davg
bool digital_smoothing
PetscInt dsteps
PetscScalar dt
PetscScalar dx
PetscScalar dx2_inv
PetscScalar dy
PetscScalar dy2_inv
double et
elapsed time for profiling
FILE * f
Grid grid
PetscScalar hdt
PetscErrorCode ierr
Error catcher.
KSP ksp
Krylov subspace solver context.
std::vector< MeshRecordComponent > meshes
int nmpi
PC pc
Preconditioner context.
std::vector< PetscScalar > rho
std::vector< PetscInt > rho_index
int rmpi
Series series
std::vector< Source > sources
std::vector< Species > species
std::vector< PetscScalar > t_store
std::vector< PetscScalar > trajx
std::vector< PetscScalar > trajy
std::vector< PetscScalar > trajz
PetscInt tstep
Vec x
Vec x_array

Public Functions

Type Name
void MCC ()
void PSI_init ()
void add_received_particles ()
void cells_init ()
void collisions_init ()
void create_output ()
void decompose_domain ()
void field_solver_petsc ()
void field_source_update ()
void grid2part (PetscScalar, PetscScalar, PetscScalar *, PetscScalar *)
void grid_init (int, char **)
void initial_particle_load ()
void inject_particle (int, PetscScalar, PetscScalar)
void inject_particles ()
PetscScalar normvel_MaxBol ()
PetscScalar normvel_vFv ()
void num_param_init ()
void part2grid ()
void particle_boundaries ()
void particle_boundaries_dd ()
void particle_mover_boris ()
void particle_wall_interaction (int, int, int, int)
void particles_init ()
void petsc_cleanup ()
void petsc_init (int, char **)
void petsc_plot_finalize ()
void petsc_plot_init ()
void petsc_plot_update (int)
void plot_profiling ()
void read_input_file (char **)
void remove_particle (int, int, int)
void save_output ()
void send_receive_particles ()
void source ()
void source_heating ()
void source_init ()
int specie_index (std::string)

Macros

Type Name
define EPS0 8.8542e-12
define EXTERNAL extern
define FALSE 0
define PI 3.141592653589793
define REAL PetscScalar
define TRUE 1
define TWOPI 6.28318530717959
define comm MPI\_COMM\_WORLD
define frand () ((REAL) rand() / (RAND\_MAX+1.0))
define np2c_global 2e6
define plot_3D FALSE
define q_e 1.602e-19

Detailed Description

Copyright:

Copyright © 2025

Public Types Documentation

typedef reactionFunction

typedef void(* reactionFunction) (int, int, int, int, int, int, int, PetscScalar);

Public Attributes Documentation

variable A

Matrix.

Mat A;


variable Bb

normalised basis for B

PetscScalar Bb[3][3];


variable Bf

external magnetic field

PetscScalar Bf[3];


variable MCC_init_data

std::vector<std::vector<std::string> > MCC_init_data;

variable PSI_init_data

std::vector<std::vector<std::string> > PSI_init_data;

variable Sconst

PetscScalar Sconst;

variable V_global

PetscScalar * V_global;

variable V_local

PetscScalar* V_local;

variable b

Solution and source term.

Vec b;


variable boris

PetscInt boris;

variable cells

std::vector<Cell> cells;

variable chunks_float

std::vector<std::vector< PetscScalar > > chunks_float;

variable collisions

std::vector<Collision> collisions;

variable ctx

VecScatter ctx;

variable dV

PetscScalar dV;

variable davg

PetscInt davg;

variable digital_smoothing

bool digital_smoothing;

variable dsteps

PetscInt dsteps;

variable dt

PetscScalar dt;

variable dx

PetscScalar dx;

variable dx2_inv

PetscScalar dx2_inv;

variable dy

PetscScalar dy;

variable dy2_inv

PetscScalar dy2_inv;

variable et

elapsed time for profiling

double et[10];


variable f

FILE* f;

variable grid

Grid grid;

variable hdt

PetscScalar hdt;

variable ierr

Error catcher.

PetscErrorCode ierr;


variable ksp

Krylov subspace solver context.

KSP ksp;


variable meshes

std::vector<MeshRecordComponent> meshes;

variable nmpi

int nmpi;

variable pc

Preconditioner context.

PC pc;


variable rho

std::vector<PetscScalar> rho;

variable rho_index

std::vector<PetscInt> rho_index;

variable rmpi

int rmpi;

variable series

Series series;

variable sources

std::vector<Source> sources;

variable species

std::vector<Species> species;

variable t_store

std::vector< PetscScalar > t_store;

variable trajx

std::vector< PetscScalar > trajx;

variable trajy

std::vector< PetscScalar > trajy;

variable trajz

std::vector< PetscScalar > trajz;

variable tstep

PetscInt tstep;

variable x

Vec x;

variable x_array

Vec x_array;

Public Functions Documentation

function MCC

void MCC () 

function PSI_init

void PSI_init () 

function add_received_particles

void add_received_particles () 

function cells_init

void cells_init () 

function collisions_init

void collisions_init () 

function create_output

void create_output () 

function decompose_domain

void decompose_domain () 

function field_solver_petsc

void field_solver_petsc () 

function field_source_update

void field_source_update () 

function grid2part

void grid2part (
    PetscScalar,
    PetscScalar,
    PetscScalar *,
    PetscScalar *
) 

function grid_init

void grid_init (
    int,
    char **
) 

function initial_particle_load

void initial_particle_load () 

function inject_particle

void inject_particle (
    int,
    PetscScalar,
    PetscScalar
) 

function inject_particles

void inject_particles () 

function normvel_MaxBol

PetscScalar normvel_MaxBol () 

function normvel_vFv

PetscScalar normvel_vFv () 

function num_param_init

void num_param_init () 

function part2grid

void part2grid () 

function particle_boundaries

void particle_boundaries () 

function particle_boundaries_dd

void particle_boundaries_dd () 

function particle_mover_boris

void particle_mover_boris () 

function particle_wall_interaction

void particle_wall_interaction (
    int,
    int,
    int,
    int
) 

function particles_init

void particles_init () 

function petsc_cleanup

void petsc_cleanup () 

function petsc_init

void petsc_init (
    int,
    char **
) 

function petsc_plot_finalize

void petsc_plot_finalize () 

function petsc_plot_init

void petsc_plot_init () 

function petsc_plot_update

void petsc_plot_update (
    int
) 

function plot_profiling

void plot_profiling () 

function read_input_file

void read_input_file (
    char **
) 

function remove_particle

void remove_particle (
    int,
    int,
    int
) 

function save_output

void save_output () 

function send_receive_particles

void send_receive_particles () 

function source

void source () 

function source_heating

void source_heating () 

function source_init

void source_init () 

function specie_index

int specie_index (
    std::string
) 

Macro Definition Documentation

define EPS0

#define EPS0 `8.8542e-12`

define EXTERNAL

#define EXTERNAL `extern`

define FALSE

#define FALSE `0`

define PI

#define PI `3.141592653589793`

define REAL

#define REAL `PetscScalar`

define TRUE

#define TRUE `1`

define TWOPI

#define TWOPI `6.28318530717959`

define comm

#define comm `MPI_COMM_WORLD`

define frand

#define frand (

) `((REAL) rand() / (RAND_MAX+1.0))`

define np2c_global

#define np2c_global `2e6`

define plot_3D

#define plot_3D `FALSE`

define q_e

#define q_e `1.602e-19`