Modules

ModuleSource FileDescription
analytic_divertor_equilibrium_m analytic_divertor_equilibrium_m.f90
array_generation_m array_generation_m.f90

Contains functions which create arrays

auxiliaries_test_diffusion_m test_diffusion.f90

Auxiliary routines for test_diffusion program

boundaries_perp_m boundaries_perp.f90

Setting of perpendicular boundary conditions

carthy_equilibrium_m carthy_equilibrium_m.f90

Module containing the implementation of an analytic tokamak equilibrium as described by Carthy (Phys. Plasmas 1999 https://doi.org/10.1063/1.873630) N.b. this equilibrium is axisymmetric - phi, when required, is not used

cerfons_equilibrium_m cerfons_equilibrium_m.f90

Module containing the implementation of an analytic tokamak equilibrium as described by Cerfon and Freidberg (Phys. Plasmas 2010 https://doi.org/10.1063/1.3328818) N.b. this equilibrium is axisymmetric - phi, when required, is not used

circular_equilibrium_m circular_equilibrium_m.f90

Definition of circular equilibrium, based on prescribed q-profile N.b. this equilibrium is axisymmetric - phi, when required, is not used

circular_toroidal_equilibrium_m circular_toroidal_equilibrium_m.f90

Implementation of a analytical toroidal equilibrium with nested circular fluxsurfaces. For an extensive reference we refer to: https://youjunhu.github.io/research_notes/tokamak_equilibrium_htlatex/ tokamak_equilibrium.html#x1-9400016

comm_handling_m comm_handling_m.f90

Contains information about MPI processes and functionality to change the communicator.

connection_length_m connection_length_m.f90

Connection length and shortest distance to the target routines

constants_m constants_m.f90

Definition of constant parameters

coords_polar_m coords_polar_m.f90

Coordinate transformations Cartesian (x,y) <-> Polar (rho, theta) rho is normalized flux surface label theta is geometric poloidal angle, measured ccw from +x with respect to magnetic axis

csr_samples_m csr_samples_m.f90

Module specifying sample matrices

csrmat_m csrmat_m.f90

Algebra routines for - vectors - sparse matrices in csr format

descriptors_m descriptors_m.f90

definition of descriptors, i.e. integer parameters

device_handling_m device_handling_m.f90

Functionality to choose accelerator device (GPU) When PARALLAX is compiled stand-alone, get_device_count always returns 1 (i.e. the CPU), and set_device_id is a sanity check confirming that it's called with id 0.

Read more…
divertor_equilibrium_m divertor_equilibrium_m.f90
dommaschk_equilibrium_m dommaschk_equilibrium_m.f90

[*] W. Dommaschk, "Representations for vacuum potentials in stellarators", Computer Physics Communications 40, pg. 203 (1986)

Read more…
   dommaschk_equilibrium_netcdf_s dommaschk_equilibrium_netcdf_s.f90
elementary_functions_m elementary_functions_m.f90

Elementary mathematical functions

equilibrium_factory_m equilibrium_factory_m.f90

Module capable of creating equilibrium objects

equilibrium_m equilibrium_m.f90
error_handling_m error_handling_m.f90

Contains functionality for error handling

   error_handler_s error_handler_s.f90

Contains functionality of the error handler type

   error_info_s error_info_s.f90

Contains functionality of the error info type

euclidean_geo_m euclidean_geo_m.f90

Collection of routines related with Euclidean geometry

fieldline_tracer_m fieldline_tracer_m.f90

Field line tracing via the DOP853 integrator

flare_equilibrium_m flare_equilibrium_m.f90

Equilibrium based on FLARE: (field line analysis and reconstruction for 3D boundary plasma modeling) see H. Frerichs 2024 Nucl. Fusion 64 106034 DOI 10.1088/1741-4326/ad7303

Read more…
gauss_quadrature_m gauss_quadrature_m.f90
helmholtz_netcdfio_m helmholtz_netcdfio_m.f90

I/O to NETCDF format for a Helmholtz problem, useful for debugging and benchmarks

helmholtz_operator_m helmholtz_operator_m.f90

Routines related with Helmholtz operator

helmholtz_solver_factory_m helmholtz_solver_factory_m.f90

Parameters and factory routine to create Helmholtz solver Factory routine for 2D Helmholtz solver

helpers_m helpers_m.f90

Module implementing useful routines for unit testing

interpolation_m interpolation_m.f90
kisslinger_m kisslinger_m.f90

Contains boundary data for 3D magnetic configurations provided in Kisslinger's format, see [Y Feng and W7-X-team 2022 Plasma Phys. Control. Fusion 64 125012, DOI 10.1088/1361-6587/ac9ed9], Figure A3

Read more…
list_operations_m list_operations_m.f90

Routines operating on lists, like sorting, removing duplicates etc...

map_factory_m map_factory_m.f90

Creates the parallel mapping matrices. These matrices are needed for the construction of parallel operators.

   map_factory_s map_factory_s.f90
mesh_cart_m mesh_cart_m.f90

Module implementing the 2d mesh

   mesh_2d_netcdfio_s mesh_cart_netcdfio_s.f90

Submodule related with I/O to netcdf of mesh

   mesh_cart_build_s mesh_cart_build_s.f90

Submodule related with building of mesh

   mesh_cart_communicate_s mesh_cart_communicate_s.f90

Submodule related with MPI communication of mesh

   mesh_cart_reorder_s mesh_cart_reorder_s.f90

Module implementing index-reorder functionality for grids. ! 2020-03-10 Chichi Lalescu: ! In this module functionality related to the mesh%reorder method is put together. ! The basic pieces are the functions for computing the 2D Morton z-index, i.e. functions for ! bit interleaving and appropriate bit masks. ! On top of that the method Morton_2D_shuffle_block adds the ability to assign Morton z-indices ! to square blocks rather than single grid nodes, which should provide much better options of ! cache-access optimization. ! ! 2020-01-10 Chichi Lalescu: ! In this module I'm putting together functionality related to the mesh%reorder method. ! While I am starting with a Morton z-index, I believe in the future we will need to do something ! slightly smarter, hence I think it's best to have this space dedicated to that.

   mesh_cart_s mesh_cart_s.f90

Ordinary mesh routines

mpi_mapping_auxiliaries_m mpi_mapping_auxiliaries_m.f90

Auxiliary routines for MPI mapping across planes

multigrid_m multigrid_m.f90

Multigrid for solving the Helmholtz problem

   multigrid_s multigrid_s.f90
multigrid_solver_m multigrid_solver_m.f90

Multigrid solver for the Helmholtz problem

   multigrid_solver_s multigrid_solver_s.f90
numerical_equilibrium_m numerical_equilibrium_m.f90

Defines the numerical equilibrium subclass N.b. this is axisymmetric; phi, when required, is not used.

Read more…
   initialise_numerical_equilibrium_s initialise_numerical_equilibrium.f90
PAccX_m helmholtz_solver_mgmres_cxx_s.f90

Module for interfacing with PAccX. It's unclear whether this should remain here, or whether a Fortran interface should be provided by the PAccX package itself. TODO: If the module stays here, then the two parameters should be moved to the helmholtz_solver_m module, and the interfaces should be moved to the helmholtz_solver_gmgmres_cxx_s submodule.

params_equi_circular_m params_equi_circular_m.f90

Module for parameter reading for the circular equilibrium type

params_equi_circular_toroidal_m params_equi_circular_toroidal_m.f90

Module for parameter reading for the circular toroidal equilibrium type

params_equi_dommaschk_m params_equi_dommaschk_m.f90

Module for parameter reading for the Dommaschk equilibrium type

params_equi_flare_m params_equi_flare_m.f90

Module for parameters of the flare equilibrium type

params_equi_salpha_m params_equi_salpha_m.f90

Module for parameter reading for the salpha equilibrium type

params_equi_slab_m params_equi_slab_m.f90

Module for parameter reading for the slab equilibrium type

perf_m perf_m.f90

Profiling

polar_grid_m polar_grid_m.f90

Module implementing polar grid The polar grid has dimension (nrho, ntheta) with uniform grid spacing rho is the radial coordinate as prescribed by the equilibrium theta is the geometric poloidal angle

   polar_grid_s polar_grid_s.f90
polar_map_factory_m polar_map_factory_m.f90

Creates matrix mapping from Cartesian to Polar grid

polygon_m polygon_m.f90
polynomials_m polynomials_m.f90

Contains functionality related to polynomials, such as evaluation and derivates. Polynomials are represented by their coeffcients given as arrays.

precision_m precision_m.f90

Definition of precision

reldiff_m reldiff_m.f90
root_finding_m root_finding_m.f90

Routines for finding zeros

safety_factor_m safety_factor_m.f90

Computes safety factor N.B. This module is currently axisymmetric - can only calculate pitch and safety factor for 2D equilibria PHITEMP parameter needed for equilibrium interface

salpha_equilibrium_m salpha_equilibrium_m.f90

Module containing the implementation of an salpha like equilibrium type. N.b. this equilibrium is axisymmetric - phi, when required, is not used

Read more…
screen_io_m screen_io_m.f90

parameter and routines usefule for screen I/O

slab_equilibrium_m slab_equilibrium.f90

Definition of slab equilibrium N.b. this equilibrium is axisymmetric - phi, when required, is not used

snapshots_test_diffusion_m test_diffusion.f90

Auxiliary module for test_diffusion for writing snapshopts to file

solver3d_factory_m solver3d_factory_m.f90

Factory routine for solver3d

solver3d_m solver3d_m.f90

3D solvers, involving MPI communication

   solver3d_CERFACS_s solver3d_CERFACS_s.f90

Iterative MPI solver based on CERFACS library

Read more…
   solver3d_PIM_s solver3d_PIM_s.f90

Iterative MPI solver based on PIM library [Rudnei Dias da Cunha and Tim Hopkins, Applied NumericalMathematics 16:33-50 (1995), https://doi.org/10.1016/0168-9274(95)00017-O]

splitting_m splitting_m.f90

Splitting methods

   splitting_gauss_seidel_cpu_s splitting_gauss_seidel_cpu_s.f90

Splitting solver with Gauss-Seidel splitting method on CPU

   splitting_gauss_seidel_redblack_cpu_s splitting_gauss_seidel_redblack_cpu_s.f90

Splitting solver with Red-Black Gauss-Seidel splitting method on CPU

   splitting_jacobi_cpu_s splitting_jacobi_cpu_s.f90

Splitting solver with Jacobi splitting method on CPU

status_codes_m status_codes_m.f90

Contains a collection of PARALLAX error and warning (=status) codes

testfunctions_m testfunctions_m.f90
vis_vtk3d_m vis_vtk3d_m.f90

3d Visualisation of mesh: Lifts mesh to 3d (aligned boxes) and outpots to vtk

zonal_averages_factory_m zonal_averages_factory_m.f90

Creates matrices to compute polar averages - flux-surface average (which is actually a volume average) - surface average (an actual surface average, e.g. for computation of fluxes)

Read more…