Skip to content

PRISM Common ​

The common/ directory contains all backend-independent modules shared by the CPU and FNL backends of PRISM. Every type described here is aggregated into prism_common_object, which serves as the base type for both backends.

Source Layout ​

FileModuleDescription
adam_prism_parameters.F90adam_prism_parametersPhysical constants, eigenvalue and eigenvector matrices
adam_prism_physics_object.F90adam_prism_physics_objectPhysical model selection, variable counts, eigenvector dispatch
adam_prism_numerics_object.F90adam_prism_numerics_objectTemporal/spatial scheme selection, divergence correction config
adam_prism_common_object.F90adam_prism_common_objectBase aggregate type for all backends
adam_prism_bc_object.F90adam_prism_bc_objectBoundary conditions handler
adam_prism_ic_object.F90adam_prism_ic_objectInitial conditions handler
adam_prism_io_object.F90adam_prism_io_objectI/O configuration and output routines
adam_prism_time_object.F90adam_prism_time_objectTime integration control
adam_prism_coil_object.F90adam_prism_coil_objectCurrent-carrying coil current density sources
adam_prism_fWLayer_object.F90adam_prism_fWLayer_objectFar-wave absorbing boundary layer
adam_prism_external_fields_object.F90adam_prism_external_fields_objectExternally prescribed electromagnetic fields
adam_prism_rk_bc_object.F90adam_prism_rk_bc_objectRK sub-step integrator for boundary conditions
adam_prism_pic_object.F90adam_prism_pic_objectParticle-in-Cell configuration and particle-grid weighting
adam_prism_particle_injection_object.F90adam_prism_particle_injection_objectInitial particle space and velocity distribution
adam_prism_leapfrog_pic_object.F90adam_prism_leapfrog_pic_objectLeapfrog (Boris) PIC particle time integrator
adam_prism_rk_pic_object.F90adam_prism_rk_pic_objectRunge-Kutta PIC particle time integrator
adam_prism_riemann_library.F90adam_prism_riemann_libraryMaxwell Riemann solvers (LLF, HLL) and convective flux routines
adam_prism_common_library.F90adam_prism_common_libraryBarrel re-export of all common modules

adam_prism_parameters — Physical Constants ​

Module-level parameters (all save):

ConstantValueDescription
NV_MAX11Maximum supported variable count (static array sizing)
MU01.256637e-6Vacuum magnetic permeability (H/m)
EPS08.854187e-12Vacuum permittivity (F/m)
C01/√(MU0·EPS0)Vacuum speed of light (m/s)
E_CHARGE-1.6e-19Electron charge (C)
E_MASS9.11e-31Electron mass (kg)
K_B1.380649e-23Boltzmann constant (J/K)
PI3.141592653589793π

Derived constants: MU0_SQ = √MU0, MU0_SQ_I2 = 1/(2√MU0), EPS0_SQ = √EPS0, EPS0_SQ_I2 = 1/(2√EPS0).

Eigensystem Arrays ​

The Maxwell system has wave speeds ±c0 and two degenerate zero speeds. The module provides target arrays used by prism_physics_object to set eigenvector pointers:

SymbolShapeDescription
EV(6)[0, 0, c0, c0, −c0, −c0]Eigenvalues of the 6-variable system
ER(6,6,3)real, targetRight eigenvectors for x, y, z directions
EL(6,6,3)real, targetLeft eigenvectors for x, y, z directions
IEV(6)all onesIdentity eigenvalues (conservative reconstruction)
IERL(6,6,3)identityIdentity right/left eigenvectors (conservative)
IEV_D(7), IERL_D(7,7,3)7-variableWith D divergence-cleaning scalar φ
IEV_B(7), IERL_B(7,7,3)7-variableWith B divergence-cleaning scalar ψ
IEV_D_B(8), IERL_D_B(8,8,3)8-variableWith both φ and ψ

adam_prism_physics_object — Physical Model ​

The prism_physics_object reads the physical model from the [physics] INI section and assembles the variable layout and eigensystem pointers.

INI Keys ([physics]) ​

KeyValuesDescription
physical_modelelectromagnetic / PICSelect EM or Particle-in-Cell model
chireal > 0Divergence-cleaning propagation speed coefficient (hyperbolic only); evmax = chi · c₀

Accepted aliases for electromagnetic: Maxwell, EM, em, maxwell. For PIC: pic, ParticleInCell.

Data Members ​

MemberDefaultDescription
physical_model—Selected model string
nv_c6Conservative variable count (D, B — grows by nv_cl)
nv_s3Source variable count (J, always zero flux)
nv_cl0Divergence-cleaning variable count (0, 1, or 2)
nv_pic0PIC charge density variable count (0 or 1)
nvnv_c + nv_s + nv_cl + nv_picTotal variable count
var_Jx/Jy/Jz7/8/9 (no cleaning)Q-vector indices of J components; shift with cleaning
chi0Cleaning speed coefficient
evmaxc₀ or chi·c₀Maximum eigenvalue (maximum signal speed)
erw, elwpointerRight/left eigenvectors for WENO characteristic reconstruction

Variable Index Constants ​

fortran
VAR_DX = 1,  VAR_DY = 2,  VAR_DZ = 3
VAR_BX = 4,  VAR_BY = 5,  VAR_BZ = 6
! J indices shift depending on cleaning: var_Jx = 7, 8, or 9

Eigenvector Dispatch ​

At initialize, the pointers erw and elw are set based on the combination of reconstruction_vars and div_corr_var:

reconstruction_varsDiv correctionerw / elw
CONSERVATIVEanyIERL / IERL_D / IERL_B / IERL_D_B (identity)
CHARACTERISTICSnone / POISSONER(6,6,3) / EL(6,6,3)
CHARACTERISTICSHYPERBOLIC, D onlyER_D(7,7,3) / EL_D(7,7,3)
CHARACTERISTICSHYPERBOLIC, B onlyER_B(7,7,3) / EL_B(7,7,3)
CHARACTERISTICSHYPERBOLIC, D+BER_D_B(8,8,3) / EL_D_B(8,8,3)

For hyperbolic divergence cleaning the enlarged eigensystem uses the cleaning speed ch = chi·c₀: eigenvalues include 0, ±ch, ±c₀.


adam_prism_numerics_object — Numerical Schemes ​

Configured from the [numerics] INI section.

INI Keys ([numerics]) ​

KeyValuesDescription
scheme_timeRUNGE_KUTTA / LEAPFROG / BLANES_MOAN / COMMUTATOR_FREE_MAGNUSTemporal integration scheme
scheme_spaceWENO / FD_CENTERED / FV_CENTEREDSpatial discretisation scheme
fdv_orderintegerOrder of centered FD/FV schemes
reconstruction_variablesCONSERVATIVE / CHARACTERISTICSWENO reconstruction basis
constrained_transportNO / D / B / DBEnable Constrained Transport on D and/or B
divergence_correctionPOISSON / HYPERBOLICDivergence error control strategy (absent = none)

The half-stencil width is derived as fdv_half_stencil = fdv_order / 2. Per-derivative stencil widths in fdv_half_stencils(6) are incremented progressively for higher-order derivatives.


adam_prism_common_object — Base Aggregate Type ​

prism_common_object aggregates every framework and PRISM sub-object and owns all simulation field arrays. Both backends (prism_cpu_object, prism_fnl_object) extend this type.

Data Members ​

Framework objects:

MemberTypeDescription
mpihmpih_objectMPI handler
adamadam_objectTop-level ADAM framework handle
fieldfield_object pointerField storage and metrics
gridgrid_object pointerGrid geometry
amramr_objectAMR marker handler
ibib_objectImmersed Boundary handler
slicesslices_objectSlice output handler
leapfrogleapfrog_objectLeapfrog field integrator
blanesmoanblanesmoan_objectBlanes-Moan field integrator
cfmcfm_objectCommutator-Free Magnus integrator
rkrk_objectRunge-Kutta field integrator
wenoweno_objectWENO reconstructor
flailflail_objectLinear algebra methods (Poisson solver)

PRISM sub-objects:

MemberTypeDescription
ioprism_io_objectI/O configuration
numericsprism_numerics_objectScheme selection
physicsprism_physics_objectPhysical model and variable layout
icprism_ic_objectInitial conditions
bcprism_bc_objectBoundary conditions
rk_bcprism_rk_bc_objectRK sub-step BC integrator
timeprism_time_objectTime control
fWLayerprism_fWLayer_objectFar-wave absorbing layer
coilprism_coil_objectCoil current density sources
external_fieldsprism_external_fields_objectPrescribed external fields
picprism_pic_objectPIC configuration and weighting
particle_injectionprism_particle_injection_objectInitial particle distribution
leapfrog_picprism_leapfrog_pic_objectLeapfrog PIC integrator
rk_picprism_rk_pic_objectRK PIC integrator

Convenience pointers (bound to field/physics members at init):

ngc, ni, nj, nk, nb, blocks_number, nv, nv_c, nv_s, nv_cl

Field arrays (allocated in allocate_common):

ArrayShapeDescription
q(nv, 1-ngc:ni+ngc, …, nb)Conservative state vector (D, B, J, ±φ/ψ, ±ρ)
dqsame as qResidual right-hand side
curlsame as qCurl of field components (optional output)
divergencesame as qDivergence of field components (optional output)
q_pic(8, particle_number)PIC particle state (PIC model only)
pic_fields(8, particle_number)Field values at particle locations (PIC model only)

Energy diagnostics:

MemberDescription
energy_D(:)Time history of electric field energy
energy_B(:)Time history of magnetic field energy
rms_energy_error_D/BRMS relative energy error

initialize_common Sequence ​

The 34-step initialization sequence called by both backends:

  1. mpih%initialize — MPI setup
  2. io%initialize(filename) — load and parse INI file
  3. bc%initialize — read boundary condition types
  4. numerics%initialize — read scheme selections and divergence correction
  5. physics%initialize — configure physical model and eigensystem (uses numerics outputs)
  6. adam%grid%initialize — initialize grid from INI (with BC type array)
  7. adam%compute_blocks_number — estimate blocks from available memory
  8. adam%initialize — allocate tree, maps, and field storage for nv variables
  9. Associate convenience pointers (field, grid, ngc, ni, …, nv_cl)
  10. pic%initialize — PIC configuration and particle count (PIC model only)
  11. particle_injection%initialize — particle distribution config (PIC model only)
  12. adam%refine_uniform — uniform mesh refinement to configured levels
  13. adam%prune — prune tree regions defined by ijkl_prune
  14. amr%initialize — AMR marker configuration
  15. field%compute_metrics — cell geometry and metrics
  16. time%initialize — read it_max, time_max, CFL
  17. ic%initialize — read initial conditions type and parameters
  18. fWLayer%initialize — compute far-wave layer damping function
  19. coil%initialize — compute coil current density fields
  20. ib%initialize — immersed boundary setup
  21. slices%initialize — slice output configuration
  22. external_fields%initialize — external field type and parameters
  23. rk%initialize — RK coefficients (if RUNGE_KUTTA)
  24. rk_bc%initialize — RK-BC stage arrays (if RUNGE_KUTTA)
  25. leapfrog%initialize — leapfrog weights (if LEAPFROG)
  26. blanesmoan%initialize — Blanes-Moan weights (if BLANES_MOAN)
  27. cfm%initialize — CFM weights (if COMMUTATOR_FREE_MAGNUS)
  28. weno%initialize — WENO stencil configuration (if WENO)
  29. leapfrog_pic%initialize — Boris leapfrog PIC (if PIC + LEAPFROG)
  30. rk_pic%initialize — RK PIC (if PIC + RUNGE_KUTTA)
  31. flail%initialize — linear algebra methods
  32. check_ngc_number — verify ngc ≥ weno%S and ngc ≥ fdv_half_stencil; stop on failure
  33. allocate_common — allocate dq, divergence, curl, and PIC arrays
  34. io_initialize — register auxiliary output fields with the I/O layer

io_initialize registers auxiliary fields conditionally:

ConditionRegistered fieldNames
io%save_residual_fieldsdqres_Dx … res_Jz [± res_ph/res_ps/res_rh]
io%save_divergence_fieldsdivergencediv_D, div_B, div_J, totvar, div_05, div_06, div_09…div_11 [± div_07/div_08/div_12]
coil%total_coils_number > 0coil%j_vec, coil%coil_flagj_vec_1/2/3, f_Gauss, coil_flag
io%save_curl_fieldscurlcurlD_x/y/z, curlB_x/y/z, curlJ_x/y/z

Methods ​

MethodDescription
allocate_commonAllocate dq, divergence, curl, and PIC arrays
initialize_commonFull 34-step initialization (called by backend initialize)
load_restart_filesLoad q and time from HDF5 restart files
save_energy_errorWrite energy error history if save frequency triggered
save_restart_filesSave HDF5 restart files and an XH5F snapshot
save_xh5fSave simulation data in XDMF+HDF5 format with variable names

adam_prism_bc_object — Boundary Conditions ​

Reads one BC type per face from six INI sections.

INI Sections ​

[bc_x_min], [bc_x_max], [bc_y_min], [bc_y_max], [bc_z_min], [bc_z_max]

Each section requires the key type:

type valueInteger constantDescription
extrapolationBC_EXTRAPOLATION = 1Zero-gradient extrapolation
NeumannBC_NEUMANN = 2Neumann (zero normal derivative)
DirichletBC_DIRICHLET = 3Dirichlet (prescribed field values)
Silver_MullerBC_Silver_Muller = 4Silver-Müller absorbing BC
periodicBC_PERIOD = 5Periodic
radiativeBC_radiative = 6Radiative (first-order absorbing)

The object stores bc_type(6) (integer codes) and q(9,6) (field values for Dirichlet BCs, one set per face).


adam_prism_ic_object — Initial Conditions ​

Configured from the [initial_conditions] INI section.

IC Types ​

type valueDescription
vacuumAll fields set to zero
riemann-problemPiecewise constant regions; each region in [initial_conditions_region_N]
plane_waveSinusoidal electromagnetic plane wave
rmf_fieldRotating Magnetic Field (reads from [external_fields])
uniform_fieldUniform background B and/or D
magnetic_nozzleMagnetic nozzle configuration (parameters TBD)
rmf_magnetic_nozzleCombined RMF + magnetic nozzle

INI Keys ([initial_conditions]) ​

KeyDescription
amr_iterationsNumber of AMR iterations during IC application
typeIC type string (see table above)
regions_numberNumber of regions (Riemann problem only)
kx, ky, kzWave number direction cosines (plane wave)
lambdaWavelength (plane wave)
B0Background magnetic field amplitude (plane wave)
B_x, B_y, B_zUniform background B components

Region sections (riemann-problem): [initial_conditions_region_N] with keys Dx, Dy, Dz, Bx, By, Bz, Jx, Jy, Jz, emin_x/y/z, emax_x/y/z.


adam_prism_io_object — I/O Handler ​

Configured from the [IO] INI section.

INI Keys ([IO]) ​

KeyDefaultDescription
output_basename—Prefix for all output files
it_save100Field output save frequency (iterations)
restart.false.Enable restart from existing files
restart_basename—Prefix for restart files
restart_save100Restart save frequency
residuals_save10Residuals log save frequency
save_memory_status.false.Log memory usage during allocations
save_residual_fields.false.Include dq in field output
save_curl_fields.false.Include curl field in output
save_divergence_fields.false.Include divergence field in output
save_gradient_fields.false.Include gradient field in output
save_laplacian_fields.false.Include Laplacian field in output

Output Files ​

FileColumnsTrigger
<basename>-energy_error.datit blocks time error_D error_B rms_D rms_BEvery energy_error_save iterations
<basename>-residuals.datit time blocks rq1 … rqNEvery residuals_save iterations

adam_prism_time_object — Time Handler ​

Configured from the [time] INI section.

INI Keys ([time]) ​

KeyDefaultDescription
it_max-1Maximum iteration count (−1 = terminate by time)
time_max1.0Maximum physical time
CFL0.3CFL number for time-step control

Termination Logic (is_to_save) ​

ConditionMeaning
mod(it, it_save) == 0Periodic save
it == it_maxFinal iteration (when it_max > 0)
it_max ≤ 0 .and. time ≥ time_maxPhysical time limit reached
it_max > 0 .and. it ≥ it_maxIteration limit reached

print_progress prints it, time-step dt, current time, and a percentage completion based on whichever termination criterion is active.


adam_prism_coil_object — Coil Sources ​

Models current-carrying coils as volumetric current density J sources.

INI Section ([coils_input]) ​

KeyValuesDescription
rectangular_coils_numberintegerNumber of rectangular coils
circular_coils_numberintegerNumber of circular coils

Per-coil configuration (section [coil_N]):

KeyValuesDescription
coil_typerectangular / circularLoop geometry
current_typeDC_current / AC_currentCurrent waveform
normal+x / -x / +y / -y / +z / -zCoil plane normal
ArealCurrent amplitude (A)
frealFrequency (Hz) — AC only
phaserealInitial phase (rad) — AC only
x_center, y_center, z_centerrealCoil centre coordinates
lx, lyrealRectangular loop dimensions
r_coilrealCircular loop radius
sigmarealGaussian current distribution width

Internal Arrays ​

ArrayShapeDescription
J_vec(total_coils_number, 4, ni, nj, nk, nb)Per-coil current density vector and Gaussian weight
coil_flag(ni, nj, nk, nb)Integer flag: which coil passes through each cell

J_vec(:,1:3,…) holds current density direction components; J_vec(:,4,…) holds the Gaussian distribution value f_Gauss.


adam_prism_fWLayer_object — Far-Wave Absorbing Layer ​

Implements a sponge-like damping layer at domain boundaries to absorb outgoing electromagnetic waves, following Barbas notation.

INI Section ([fWLayer]) ​

KeyDescription
CLayer width in cells (0 = layer disabled)
layer_xm, layer_xp, …Boolean flags for each of the six sides (−x, +x, −y, +y, −z, +z)

Damping Function ​

The damping factor is not stored: compute_fwl_factor evaluates it per cell, on demand, from the cell's distance to the boundary and the face's profile geometry. It is declared !$acc routine seq / !$omp declare target, so one function serves both the CPU and the device backend.

For a face spanning profile_cells cells over a physical profile_extent, a cell at center_distance from the boundary-cell center gets the profile-shape coefficient

fi={1150(−7Cr2+255Cr+250)Cr<4025Cr≥40

with C_r = profile_cells, and from it the damping factor

f=1filog10[r(10fi−1)+1],r=clamp(center_distanceprofile_extent,0,1)

A face with profile_cells <= 0 or profile_extent <= 0 returns f = 1 (no damping). profile_cells and profile_extent are derived per face at initialization from the requested physical width (see compute_absorbing_face_range); on a uniform mesh profile_extent equals C*ds, which is what the former cell-count C input expressed directly.

7e39318b removed the f array from prism_fWLayer_object together with its HDF5 save block, so fWL_x, fWL_y and fWL_z are no longer emitted as output fields.


adam_prism_external_fields_object — External Fields ​

Prescribed electromagnetic fields added to (and subtracted from) the state vector around each time step.

INI Section ([external_fields]) ​

KeyValuesDescription
ef_typeRMF / magnetic_nozzle / RMF_and_magnetic_nozzle / noneExternal field type
RMF_frequencyrealRotating magnetic field frequency (Hz)
RMF_B_amplituderealRotating magnetic field amplitude (T)
RMF_rotation_axisX / Y / ZRotation axis

At initialization, the add_external_fields and sub_external_fields procedure pointers are dispatched to the corresponding implementation (add_external_fields_rmf, etc.) based on ef_type.


adam_prism_rk_bc_object — RK-BC Integrator ​

Stores the per-stage boundary condition state during Runge-Kutta sub-stepping.

Data Members ​

MemberDescription
q_bc_rk(:,:,:,:,:,:)Per-stage BC field values
dq_bc_rk(:,:,:,:,:)Per-stage BC residuals
ark, brk, crkLow-storage RK coefficients
alph, beta, gammSSP RK coefficients
ssa, ssbSymplectic-splitting RK coefficients
nrkNumber of RK stages

Methods ​

MethodDescription
initializeMirror the parent rk_object coefficient set
initialize_stagesZero the stage arrays
assign_stageCopy current q to the stage buffer
compute_stageAdvance the BC state for one RK sub-step

adam_prism_pic_object — Particle-in-Cell ​

Manages macro-particle configuration, grid-particle mapping, and weighting.

INI Section ([PIC]) ​

KeyValuesDescription
problem_typeplasma / single_particleSimulation scenario
plasma_densityrealInitial plasma number density (m⁻³) — plasma only
neutral_fractionrealFraction of neutral particles — plasma only
particle_weighting_modelCIC / NGP / TSCCharge deposition scheme
current_weighting_modelCIC / NGP / TSCCurrent deposition scheme
field_weighting_model0D / 1DField interpolation order at particle positions
scheme_timeLEAPFROG / RUNGE_KUTTAParticle time integrator

Particle Count ​

For plasma: particle_number = plasma_density × domain_volume. The population is split into ions, electrons, and neutrals according to neutral_fraction. For single_particle: particle_number = 1.

Weighting Models ​

SchemeMethodDescription
NGPNearest Grid PointParticle charge/current deposited to the containing cell only
CICCloud-in-CellTrilinear interpolation to 3×3×3 neighbourhood
TSCTriangular Shaped CloudQuadratic weight function over 3×3×3 neighbourhood

Field interpolation models:

ModelDescription
0DZero-order: field value at the nearest grid point
1DFirst-order: piecewise-linear field interpolation at particle position

At initialization, the three procedure pointers particle_weighting, current_weighting, and field_weighting are dispatched to the selected method implementations.

neighbour_list(4, particle_number) ​

Stores the current grid indices (block, i, j, k) for each particle, updated each time step by particle_cartesian_grid_index.


adam_prism_particle_injection_object — Particle Injection ​

Sets the initial spatial and velocity distributions for PIC particles.

INI Section ([particle_injection]) ​

KeyValuesDescription
space_distributionUniform_domain_space_distribution / Uniform_boxes_space_distribution / Uniform_cell_space_distribution / Space_random_number_generator / Space_layered_number_generatorInitial spatial distribution
velocity_distributionUniform_Maxwellian / Non_uniform_Maxwellian / Velocity_random_number_generator / Velocity_layered_number_generatorInitial velocity distribution
T_i, T_e, T_nrealIon/electron/neutral temperature (uniform Maxwellian)
T_i_x/y/z, T_e_x/y/z, T_n_x/y/zrealPer-axis temperatures (non-uniform Maxwellian)
v_drift_x/y/zrealDrift velocity components
box_numberrealNumber of boxes for charge-neutral injection
space_pairinglogicalPair ions and electrons in space
velocity_pairinglogicalPair ion/electron velocities
v_av_correctionlogicalCorrect mean velocity after sampling
x_position, y_position, z_positionrealInitial position (single particle)
charge, massrealCharge and mass (single particle)

At initialization, the procedure pointers particle_space_injection and particle_velocity_injection are dispatched to the selected distribution subroutines.


adam_prism_leapfrog_pic_object — Leapfrog PIC Integrator ​

Implements the Boris leapfrog particle pusher, integrating particle equations of motion staggered in time relative to the field update. The Boris method is energy-conserving and second-order accurate for the Lorentz force equation.


adam_prism_rk_pic_object — Runge-Kutta PIC Integrator ​

Implements explicit Runge-Kutta time integration for PIC particle trajectories, sharing RK coefficients with the parent field integrator rk_object.


adam_prism_riemann_library — Riemann Solvers ​

Provides the Maxwell convective flux routines and Riemann solvers used in all spatial schemes.

Public Routines ​

RoutineDescription
compute_riemann_maxwell_llfLLF (Rusanov) solver
compute_riemann_maxwell_hllHLL (Harten–Lax–van Leer) solver (internal)
compute_convective_fluxes_maxwellBase flux for the 6-variable system
compute_convective_fluxes_maxwell_div_dFlux extended with D-cleaning scalar φ
compute_convective_fluxes_maxwell_div_bFlux extended with B-cleaning scalar ψ
compute_convective_fluxes_maxwell_div_d_bFlux with both φ and ψ
compute_eigenvalues_vectorMaximum wave speed for time-step control

LLF Solver ​

FLLF(qL,qR)=12[F(qL)+F(qR)−c0(qR−qL)]

applied to the 6 conservative variables (D, B). The J source variables have zero flux and are not passed through the Riemann solver.

HLL Solver ​

FHLL=λ+FL−λ−FR+λ+λ−(qR−qL)λ+−λ−,λ+=c0,λ−=−c0

compute_convective_fluxes_interface ​

Abstract interface for flux routines, allowing procedure pointer dispatch in backend implementations:

fortran
subroutine compute_convective_fluxes_interface(sir, q, f, chi)
  real(R8P), intent(in)    :: sir(3)  ! directional unit increment (x, y, or z)
  real(R8P), intent(in)    :: q(1:)   ! state vector
  real(R8P), intent(inout) :: f(1:)   ! computed fluxes
  real(R8P), intent(in)    :: chi     ! divergence-cleaning speed coefficient
end subroutine

adam_prism_common_library — Barrel Re-export ​

A single convenience module that re-exports all 17 common modules. Both backends use only this one use statement:

fortran
use adam_prism_common_library

Modules re-exported: adam_prism_parameters, adam_prism_physics_object, adam_prism_numerics_object, adam_prism_common_object, adam_prism_bc_object, adam_prism_ic_object, adam_prism_io_object, adam_prism_time_object, adam_prism_coil_object, adam_prism_fWLayer_object, adam_prism_external_fields_object, adam_prism_rk_bc_object, adam_prism_pic_object, adam_prism_particle_injection_object, adam_prism_leapfrog_pic_object, adam_prism_rk_pic_object, adam_prism_riemann_library.


License ​

PRISM is part of the ADAM framework, released under the GNU Lesser General Public License v3.0 (LGPLv3).

Copyright (C) Andrea Di Mascio, Federico Negro, Giacomo Rossi, Francesco Salvadore, Stefano Zaghi.