Appearance
adam_prism_common_object
Source: src/app/prism/common/adam_prism_common_object.F90
Dependencies
Contents
- prism_common_object
- amr_update
- mark_by_geometry
- mark_by_j_vec_total_variation
- allocate_common
- compute_auxiliary_fields
- compute_fields_number
- initialize
- initialize_block_face_data
- initialize_pic_time_zero
- fold_deposited_ghosts
- verify_no_pic_deposition_on_coils
- weight_pic_fields_time_zero
- save_pic_self_force_diagnostic_time_zero
- initialize_single_particle_output
- write_single_particle_output
- load_restart_files
- load_pic_restart_files
- save_divergence_history
- save_grms_history
- save_magnetic_field_at_center_domain_history
- save_probes_history
- sample_probes
- sync_probes
- save_energy_error
- save_energy_history
- save_coils_current_diagnostics
- save_restart_files
- save_pic_restart_files
- save_xh5f
- save_slices
- initialize_coils
- compute_coils_current_time_zero
- impose_pic_fields_time_zero
- print_source_progress
- set_helicon_coil
- compute_Helicon_coil_amplitude
- compute_helicon_radial_gradient_centered
- cartesian_to_cylindrical
- cylindrical_to_cartesian
- cylindrical_vector_to_cartesian
- write_rectangular_current_tab
- write_helicon_current_tab
- compute_rectangular_current_flux_sides
- compute_helicon_current_flux_segments
- helicon_segment_tangent
- set_rectangular_coil_x
- set_rectangular_coil_y
- set_rectangular_coil_z
- set_circular_coil_x
- set_circular_coil_y
- set_circular_coil_z
- set_solenoid_x
- set_solenoid_y
- set_solenoid_z
- coupling_descriptor_forest
- has_current_density
- global_max
- helicon_radial_primitive
- helicon_coil_A_at_point
- wrap_to_pi
- compute_signed_area
- compute_windings_number
- rectangular_coil_A_at_point
- erf_function
- tangential_window
- erf_primitive_function
- build_A_ghost_stencil_rectangular
- build_A_ghost_stencil_helicon
- crossproduct
Derived Types
prism_common_object
Maxwell equations system class definition, common data to all backends.
Inheritance
Extends: realm_object
Components
| Name | Type | Attributes | Description |
|---|---|---|---|
io | type(io_object) | IO handler. | |
amr | type(amr_object) | AMR marker handler. | |
slices | type(slices_object) | Slices handler. | |
blanesmoan | type(blanesmoan_object) | Blanes-Moan integrator. | |
cfm | type(cfm_object) | Commutator-Free Magnus integrator. | |
leapfrog | type(leapfrog_object) | Leapfrog integrator. | |
flail | type(flail_object) | FLAIL, the elliptic solver library (issue #84). | |
weno | type(weno_object) | WENO reconstructor. | |
ib | type(ib_object) | Immersed boundary. | |
rk | type(rk_object) | Runge-Kutta integrator. | |
adam | type(adam_object) | ADAM, grid + tree + field + maps orchestrator. | |
fdv_scheme | character(len=:) | allocatable | FDV scheme, fd/fv. |
fdv_order | integer(kind=I4P) | Order of finite difference/volume schemes, general order. | |
fdv_half_stencil | integer(kind=I4P) | Half stencil length of finite difference/volume schemes. | |
fdv_half_stencils | integer(kind=I4P) | Half stencil length of fdv schemes for each derivative up to 6. | |
ngc | integer(kind=I4P) | pointer | Number of ghost cells. |
ni | integer(kind=I4P) | pointer | Number of cells in i direction. |
nj | integer(kind=I4P) | pointer | Number of cells in j direction. |
nk | integer(kind=I4P) | pointer | Number of cells in k direction. |
nb | integer(kind=I4P) | pointer | Total blocks number for MPI. |
blocks_number | integer(kind=I4P) | pointer | Actual blocks number. |
nv | integer(kind=I4P) | pointer | Number of variables in q vector. |
realm_index | integer(kind=I4P) | Inter-realm seam coupling — currently-published stage buffer key. | |
stage_active | integer(kind=I4P) | A copy of the forest's flux register (its faces and lookup, the accumulators unused), refreshed by the forest each | |
flux_register_copy | type(flux_register_object) | Procedure pointer TBPs for FDV operators (set at initialization by backend). | |
compute_block_total_variation | procedure(compute_block_total_variation_interface) | pass(self), pointer | Compute TV. |
compute_curl | procedure(compute_curl_interface) | pass(self), pointer | Compute curl. |
compute_curl_extended | procedure(compute_curl_interface) | pass(self), pointer | Compute curl on extended support. |
compute_derivative1 | procedure(compute_derivative1_interface) | pass(self), pointer | Compute deriv1. |
compute_derivative2 | procedure(compute_derivative2_interface) | pass(self), pointer | Compute deriv2. |
compute_derivative4 | procedure(compute_derivative4_interface) | pass(self), pointer | Compute deriv4. |
compute_divergence | procedure(compute_divergence_interface) | pass(self), pointer | Compute dive. |
compute_gradient | procedure(compute_gradient_interface) | pass(self), pointer | Compute grad. |
compute_gradient_extended | procedure(compute_gradient_interface) | pass(self), pointer | Compute gradient on extended support. |
compute_laplacian | procedure(compute_laplacian_interface) | pass(self), pointer | Compute laplac. |
save_em_only | logical | [IO] save_fields = em: the XH5F output holds D and B only. | |
amr_locked_ | logical | AMR regrid lock (issue #22 GA6): set .true. by backends whose device/topology | |
blocks_fields_number | integer(kind=I4P) | Block-sized fields per block of the blocks budget (issue #112). | |
reserved_memory | real(kind=R8P) | Memory reserved outside the blocks by the budget, GB (issue #112). | |
estimate_backend_memory | procedure(estimate_backend_memory_interface) | pointer, nopass | Backend memory |
nv_c | integer(kind=I4P) | pointer | Number of conservative variables in q vector. |
nv_s | integer(kind=I4P) | pointer | Number of source variables in q vector. |
nv_cl | integer(kind=I4P) | pointer | Number of divergence cleaning variables in q vector. |
q | real(kind=R8P) | allocatable | Conservative cell centered variables. |
dq | real(kind=R8P) | allocatable | Residuals right hand side. |
q_pic | real(kind=R8P) | allocatable | PIC variables. |
pic_fields | real(kind=R8P) | allocatable | Fields value at particle locations. |
curl | real(kind=R8P) | allocatable | Curl fields. |
divergence | real(kind=R8P) | allocatable | Divergence fields. |
q_name | type(string) | allocatable | Fields names [1:nv]. |
dq_name | type(string) | allocatable | Residuals names [1:nv]. |
q_pic_name | type(string) | allocatable | PIC Fields names. |
curl_name | type(string) | allocatable | Curl fields names. |
div_name | type(string) | allocatable | Divergence fields names. |
energy_D | real(kind=R8P) | allocatable | Energy of field D, time history. |
energy_B | real(kind=R8P) | allocatable | Energy of field B, time history. |
coil_power | real(kind=R8P) | allocatable | Power of coils, time history. |
Poynting_flux | real(kind=R8P) | allocatable | Total Poynting flux from boundary, time history. |
rms_energy_error_D | real(kind=R8P) | RMS energy error of D field. | |
rms_energy_error_B | real(kind=R8P) | RMS energy error of B field. | |
max_divergence_D | real(kind=R8P) | Maximum of divergence of D field. | |
max_divergence_B | real(kind=R8P) | Maximum of divergence of B field. | |
max_divergence_J | real(kind=R8P) | Maximum of divergence of J field. | |
single_particle_output_last_time | real(kind=R8P) | Last time written to single-particle history. | |
single_particle_output_written | logical | Single-particle history write sentinel. | |
bc | type(prism_bc_object) | Boundary conditions. | |
coil | type(prism_coil_object) | Coil source term. | |
external_fields | type(prism_external_fields_object) | External fields. | |
fWLayer | type(prism_fWLayer_object) | Far-field weighted layer. | |
grms | type(prism_grms_object) | Grms diagnostic. | |
ic | type(prism_ic_object) | Initial conditions. | |
leapfrog_pic | type(prism_leapfrog_pic_object) | Leapfrog PIC integrator. | |
magnetic_field_at_center_domain | type(prism_magnetic_field_at_center_domain_object) | Domain-center B diagnostic. | |
numerics | type(prism_numerics_object) | Numerics configuration. | |
particle_injection | type(prism_particle_injection_object) | Particle injection. | |
physics | type(prism_physics_object) | Physics configuration. | |
pic | type(prism_pic_object) | PIC state. | |
plasma_freq | type(prism_plasma_frequencies_object) | Plasma frequencies and the PIC time-step limit. | |
pml | type(prism_pml_object) | Perfectly matched layer. | |
probes | type(prism_probes_object) | Field probes. | |
rk_pic | type(prism_rk_pic_object) | Runge-Kutta PIC handler. | |
rk_pml | type(prism_rk_pml_object) | Runge-Kutta PML auxiliary handler. | |
time | type(prism_time_object) | Time integration state. |
Type-Bound Procedures
| Name | Attributes | Description |
|---|---|---|
load_fdv_from_file | pass(self) | Load FDV config from file. |
initialize_forest | pass(self) | Invoked by forest%initialize per realm at startup. |
compute_local_dt_forest | pass(self) | Invoked by forest%compute_global_dt during the min reduction. |
advance_one_step_forest | pass(self) | Invoked by forest%evolve_one_step per realm per timestep. |
stages_per_step_forest | pass(self) | Number of integrator stages this realm exposes per step. |
open_step_forest | pass(self) | Per-step prologue (multi-realm path). |
begin_stage_forest | pass(self) | Begin one integrator stage on this realm (multi-realm path). |
end_stage_forest | pass(self) | End the stage: residuals + assignment (multi-realm path). |
close_step_forest | pass(self) | Per-step epilogue (multi-realm path). |
post_step_forest | pass(self) | Invoked by forest%post_step per realm per timestep. |
runtime_amr_forest | pass(self) | Whether this realm regrids during the run (#74). |
regrid_forest | pass(self) | Invoked by forest%regrid per realm per timestep (#74). |
regrid_begin_forest | pass(self) | Multi-realm regrid, phase 1: is it a regrid step (#110). |
regrid_mark_forest | pass(self) | Phase 2: mark one sweep, marks on the tree (#110). |
regrid_apply_forest | pass(self) | Phase 3: adapt to the (balanced) tree marks (#110). |
regrid_end_forest | pass(self) | Phase 4: refresh the grid-dependent state (#110). |
is_done_forest | pass(self) | Invoked by forest%is_done during the termination reduction. |
finalize_forest | pass(self) | Invoked by forest%finalize per realm at shutdown. |
finalize_mpi_forest | pass(self) | Process-global MPI finalize; forest calls it ONCE after all. |
fill_seam_from_peer_forest | pass(self) | Receive-side roundtrip: copy peer's interior into self's ghosts. |
pack_seam_cells_forest | pass(self) | Pack own cells of the cross-rank seam send rows. |
unpack_seam_cells_forest | pass(self) | Unpack the cross-rank seam receive rows into own ghosts. |
after_topology_build_forest | pass(self) | Backend hook invoked once after the forest builds the seam maps. |
apply_reflux_to_stage_forest | pass(self) | Apply Berger-Colella reflux to self's stage buffer. |
close_block_xh5f | nopass | Close XH5F file block. |
close_file_xh5f | nopass | Close XH5F file. |
open_block_xh5f | pass(self) | Open block file XH5F. |
open_file_xh5f | pass(self) | Open file XH5F. |
save_q_xh5f | pass(self) | Save in XH5F (XDMF/HDF5) format. |
compute_curl_fd_extended | pass(self) | Compute curl of vector field, finite difference, even for half gcs. |
compute_gradient_fd_extended | pass(self) | Compute gradient of scalar field, finite difference, even for half |
amr_update | pass(self) | Do AMR update (init-time only where amr_locked_). |
mark_by_geometry | pass(self) | Mark blocks to be refined by a primitive geometric box. |
mark_by_j_vec_total_variation | pass(self) | Mark by j_vec total variation (backend override; common |
allocate_common | pass(self) | Allocate common data. |
compute_auxiliary_fields | pass(self) | Compute auxiliary fields. |
compute_fields_number | pass(self) | Compute the block-sized fields allocated per block. |
initialize | pass(self) | Initialize the equation common data. |
initialize_block_face_data | pass(self) | (Re)build the per-block face data on the current grid. |
fold_deposited_ghosts | pass(self) | Fold PIC deposits spilled into ghosts, locally and across ranks. |
initialize_pic_time_zero | pass(self) | Host-side PIC particle injection plus charge/current deposition at t=0. |
verify_no_pic_deposition_on_coils | pass(self) | Guard against PIC deposition on coil cells. |
weight_pic_fields_time_zero | pass(self) | Host-side PIC field interpolation at t=0. |
save_pic_self_force_diagnostic_time_zero | pass(self) | Temporary PIC self-force diagnostic at t=0. |
load_restart_files | pass(self) | Load restart files. |
save_energy_error | pass(self) | Save energy error history. |
save_energy_history | pass(self) | Save energy history. |
save_coils_current_diagnostics | pass(self) | Save instantaneous coil-current diagnostics. |
save_divergence_history | pass(self) | Save divergence history. |
save_grms_history | pass(self) | Save Grms history. |
save_magnetic_field_at_center_domain_history | pass(self) | Save domain-center B history. |
save_probes_history | pass(self) | Save the field probes history on its cadence. |
sample_probes | pass(self) | Sample the fields at the probes (backend override). |
sync_probes | pass(self) | Sync the probe stencils with the backend (backend override). |
save_restart_files | pass(self) | Save restart files. |
save_slices | pass(self) | Save the slices on their cadence. |
save_xh5f | pass(self) | Save simulation data in XH5F format. |
initialize_coils | pass(self) | Initialize coils. |
compute_coils_current_time_zero | pass(self) | Host-side coil current initialization at t=0. |
impose_pic_fields_time_zero | pass(self) | Host-side elliptic initialization for PIC/current-driven fields. |
has_current_density | pass(self) | True if the current density is non-zero on any rank. |
set_rectangular_coil_x | pass(self) | Subroutine to set a rectangular coil source with +-x normal |
set_rectangular_coil_y | pass(self) | Subroutine to set a rectangular coil source with +-y normal |
set_rectangular_coil_z | pass(self) | Subroutine to set a rectangular coil source with +-z normal |
set_circular_coil_x | pass(self) | Subroutine to set a circular coil source with +-x normal |
set_circular_coil_y | pass(self) | Subroutine to set a circular coil source with +-y normal |
set_circular_coil_z | pass(self) | Subroutine to set a circular coil source with +-z normal |
set_solenoid_x | pass(self) | Subroutine to set a solenoid source with +-x normal |
set_solenoid_y | pass(self) | Subroutine to set a solenoid source with +-y normal |
set_solenoid_z | pass(self) | Subroutine to set a solenoid source with +-z normal |
set_helicon_coil | pass(self) | Subroutine to set a helicon coil source. |
compute_rectangular_current_flux_sides | pass(self) | Precompute rectangular side-current fluxes. |
compute_helicon_current_flux_segments | pass(self) | Precompute helicon segment-current fluxes. |
coupling_descriptor_forest | pass(self) | Report (scheme_time, rk_scheme, nv) for β admissibility. |
Subroutines
amr_update
Do AMR update.
fortran
subroutine amr_update(self)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
self | class(prism_common_object) | inout | The equation. |
Call graph
mark_by_geometry
Mark blocks to be refined by a primitive axis-aligned box (deterministic, solution-independent).
A block is flagged TO_BE_REFINED iff its centroid lies inside [box_emin, box_emax] AND its current refinement level is below target_level. This is the AMR_GEO + AMR_GEO_PRIMITIVE_BOX marker: it produces a deterministic 2:1 coarse-fine jump at known coordinates, decoupled from the IB/solid geometry, for the issue #13 intra-realm AMR seam test fixture (#13 §7.5, M0).
fortran
subroutine mark_by_geometry(self, box_emin, box_emax, target_level, do_init)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
self | class(prism_common_object) | inout | The equation. | |
box_emin | real(kind=R8P) | in | Box minimum corner. | |
box_emax | real(kind=R8P) | in | Box maximum corner. | |
target_level | integer(kind=I4P) | in | Refine blocks below this level. | |
do_init | logical | in | optional | Re-initialize refinements queries. |
Call graph
mark_by_j_vec_total_variation
Mark blocks by j_vec total variation — common DEFAULT: unavailable. The real marker needs backend-specific ghost updates and coil initialization; prism_cpu_object overrides this with the working host implementation. Backends without an override stop loudly instead of marking from stale data (issue #22 F0).
fortran
subroutine mark_by_j_vec_total_variation(self, tv_tol, delta_type, delta_fine, delta_coarse, threshold, do_init)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
self | class(prism_common_object) | inout | The equation. | |
tv_tol | real(kind=R8P) | in | Total variation tolerance value. | |
delta_type | character(len=*) | in | Delta criterion type. | |
delta_fine | real(kind=R8P) | in | Maximum cell delta in fine grids. | |
delta_coarse | real(kind=R8P) | in | Minimum cell delta in coarse grids. | |
threshold | real(kind=R8P) | in | optional | Threshold for sphere proximity. |
do_init | logical | in | optional | Re-initialize refinements queries. |
Call graph
allocate_common
Allocate common data.
fortran
subroutine allocate_common(self)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
self | class(prism_common_object) | inout | The equation. |
Call graph
compute_auxiliary_fields
Compute auxiliary fields.
fortran
subroutine compute_auxiliary_fields(self)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
self | class(prism_common_object) | inout | The equation. |
Call graph
compute_fields_number
Compute the block-sized fields PRISM allocates per block, the fields_number of the blocks budget.
Both backends allocate the same nb-sized arrays, on the host (CPU) or on the device (FNL), so one count serves both: q, dq, curl, divergence (4 nv), the Runge-Kutta stages (rk_stored_stages_number nv), the coils current density (3 per coil), the two PIC charge-continuity accumulators (only with a charge-conservation history), and the flux arrays of the scheme in use: the cell fluxes flxyz_c (9 nv) for FV and WENO, the face fluxes (3 nv, counted as full block fields) for FV only, none for centered FD (issue #112). Backend-only arrays are added by the backend estimate of initialize; face-local PML storage is not block-sized and is not counted. The FNL estimate also takes curl and divergence off the count: there they are host arrays only, recomputed from q at the saves (issue #112 C). Requires physics and numerics initialized; loads the coils number (it needs no grid or field).
fortran
subroutine compute_fields_number(self, file_parameters, fields_number)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
self | class(prism_common_object) | inout | The equation. | |
file_parameters | type(file_ini) | in | Simulation parameters ini file handler. | |
fields_number | integer(kind=I4P) | out | Block-sized fields allocated per block. |
Call graph
initialize
Initialize the equation common data.
fortran
subroutine initialize(self, filename, memory_avail, nv, fields_number, verbose, L0)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
self | class(prism_common_object) | inout | target | The equation. |
filename | character(len=*) | in | Input file name. | |
memory_avail | real(kind=R8P) | in | value | Memory available for single MPI process. |
nv | integer(kind=I4P) | in | optional | Number of field variables. |
fields_number | integer(kind=I4P) | in | optional | Block-sized fields per block (default: computed). |
verbose | logical | in | optional | Trigger verbose output. |
L0 | real(kind=R8P) | in | optional | Adimensionalization parameter. |
Call graph
initialize_block_face_data
(Re)build the per-block face data on the current grid: the PEC faces of the external fields, the fWLayer ranges and the PML support with its RK storage. All are indexed by local block, so they must follow every change of the block set: the uniform refinement in initialize, each init-time amr_update, a restart (issue #95, P5.1). Every initializer called here resets its object first; the PML auxiliary state restarts from zero, as at any initialization.
fortran
subroutine initialize_block_face_data(self)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
self | class(prism_common_object) | inout | The equation. |
Call graph
initialize_pic_time_zero
Initialize PIC particles and deposit host-side charge/current sources at t=0.
fortran
subroutine initialize_pic_time_zero(self)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
self | class(prism_common_object) | inout | The equation. |
Call graph
fold_deposited_ghosts
Fold the PIC deposits that spilled into ghost cells back onto the cells they mirror, on this rank and across ranks, then refill the ghosts: the result equals a single-block deposit of the same particles. With one rank this is reduce_ghost_local alone. Collective.
fortran
subroutine fold_deposited_ghosts(self, q, v_first, v_last)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
self | class(prism_common_object) | inout | The equation. | |
q | real(kind=R8P) | inout | Field variables. | |
v_first | integer(kind=I4P) | in | First variable to fold. | |
v_last | integer(kind=I4P) | in | Last variable to fold. |
Call graph
verify_no_pic_deposition_on_coils
Ensure PIC deposition does not populate cells carrying analytic coil current.
fortran
subroutine verify_no_pic_deposition_on_coils(self, q, check_current, check_charge, context)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
self | class(prism_common_object) | in | The equation. | |
q | real(kind=R8P) | in | Deposited field. | |
check_current | logical | in | optional | Check Jx/Jy/Jz overlap. |
check_charge | logical | in | optional | Check rho overlap. |
context | character(len=*) | in | optional | Call-site label. |
Call graph
weight_pic_fields_time_zero
Interpolate initialized fields at particle positions at t=0.
fortran
subroutine weight_pic_fields_time_zero(self)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
self | class(prism_common_object) | inout | The equation. |
Call graph
save_pic_self_force_diagnostic_time_zero
Temporary diagnostic for single-particle PIC self-force analysis.
fortran
subroutine save_pic_self_force_diagnostic_time_zero(self)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
self | class(prism_common_object) | in |
Call graph
initialize_single_particle_output
Reset the single-particle output file before a fresh run from t = 0 (rank 0 writes it).
fortran
subroutine initialize_single_particle_output(filename)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
filename | character(len=*) | in |
Call graph
write_single_particle_output
Append the single-particle trajectory/state sample. The particle lives on one rank (the owner of its block): the sample is reduced over the ranks and rank 0 writes it. Collective.
fortran
subroutine write_single_particle_output(filename, time, q_pic, pic_fields, particle_number)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
filename | character(len=*) | in | ||
time | real(kind=R8P) | in | ||
q_pic | real(kind=R8P) | in | ||
pic_fields | real(kind=R8P) | in | ||
particle_number | integer(kind=I4P) | in | Particles owned by this rank. |
Call graph
load_restart_files
Save restart files.
fortran
subroutine load_restart_files(self, t, time)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
self | class(prism_common_object) | inout | The equation. | |
t | integer(kind=I4P) | out | Time iteration. | |
time | real(kind=R8P) | out | Time. |
Call graph
load_pic_restart_files
Load PIC restart data stored outside the ADAM field restart.
fortran
subroutine load_pic_restart_files(self)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
self | class(prism_common_object) | inout | The equation. |
Call graph
save_divergence_history
Save divergence history.
fortran
subroutine save_divergence_history(self, is_to_open, is_to_close, div_D, div_B, div_J, current_solver_residual)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
self | class(prism_common_object) | inout | The equation. | |
is_to_open | logical | in | optional | Flag to open file before first saving. |
is_to_close | logical | in | optional | Flag to close file after last saving. |
div_D | real(kind=R8P) | in | Maximum of divergence of D field. | |
div_B | real(kind=R8P) | in | Maximum of divergence of B | |
div_J | real(kind=R8P) | in | Maximum of divergence of J field. | |
current_solver_residual | real(kind=R8P) | in | optional | Maximum current linear-solve residual. |
Call graph
save_grms_history
Save Grms history.
fortran
subroutine save_grms_history(self, is_to_open, is_to_close)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
self | class(prism_common_object) | inout | The equation. | |
is_to_open | logical | in | optional | Flag to open file before first saving. |
is_to_close | logical | in | optional | Flag to close file after last saving. |
Call graph
save_magnetic_field_at_center_domain_history
Save domain-center magnetic-field history.
fortran
subroutine save_magnetic_field_at_center_domain_history(self, is_to_open, is_to_close)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
self | class(prism_common_object) | inout | The equation. | |
is_to_open | logical | in | optional | Flag to open file before first saving. |
is_to_close | logical | in | optional | Flag to close file after last saving. |
Call graph
save_probes_history
Save the field probes history on its cadence ([probes] save_every and the last step); collective.
With is_to_open the stencils are built on the current grid, synced with the backend and the files opened. The probes sample q as stored: the external fields, if any, are not added.
fortran
subroutine save_probes_history(self, is_to_open)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
self | class(prism_common_object) | inout | The equation. | |
is_to_open | logical | in | optional | Flag to open the files before the first saving. |
Call graph
sample_probes
Sample the fields at the probes: local sums of the host q (CPU); a device backend overrides it.
fortran
subroutine sample_probes(self)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
self | class(prism_common_object) | inout | The equation. |
Call graph
sync_probes
Sync the probe stencils with the backend after they are built: nothing on the host; a device backend overrides it.
fortran
subroutine sync_probes(self)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
self | class(prism_common_object) | inout | The equation. |
Call graph
save_energy_error
Save energy error history.
fortran
subroutine save_energy_error(self, is_to_open, is_to_close)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
self | class(prism_common_object) | inout | The equation. | |
is_to_open | logical | in | optional | Flag to open file before first saving. |
is_to_close | logical | in | optional | Flag to close file after last saving. |
Call graph
save_energy_history
Save energy history.
fortran
subroutine save_energy_history(self, is_to_open, is_to_close)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
self | class(prism_common_object) | inout | The equation. | |
is_to_open | logical | in | optional | Flag to open file before first saving. |
is_to_close | logical | in | optional | Flag to close file after last saving. |
Call graph
save_coils_current_diagnostics
Save instantaneous coil-current diagnostics.
fortran
subroutine save_coils_current_diagnostics(self)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
self | class(prism_common_object) | inout | The equation. |
Call graph
save_restart_files
Save restart files.
fortran
subroutine save_restart_files(self)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
self | class(prism_common_object) | inout | The equation. |
Call graph
save_pic_restart_files
Save PIC restart data stored outside the ADAM field restart.
fortran
subroutine save_pic_restart_files(self)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
self | class(prism_common_object) | in | The equation. |
Call graph
save_xh5f
Save simulation data in HDF5 format.
fortran
subroutine save_xh5f(self, output_basename, with_ghost)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
self | class(prism_common_object) | inout | The equation. | |
output_basename | character(len=*) | in | optional | Output basename. |
with_ghost | logical | in | optional | Flag to save ghost cells. |
Call graph
save_slices
Save the slices (library slices_object, [slices] / [slice_N]) on their cadence, one file per field set: <basename>-slice_NN-<it>.mat holds q (the total field when external fields are applied, as the XH5F output), <basename>-curl-slice_NN-<it>.mat and <basename>-div-slice_NN-<it>.mat the curl and divergence fields when their XH5F output is enabled ([IO] save_curl_fields, save_divergence_fields). The caller has refreshed the ghost cells of the host q and computed the auxiliary fields. These are computed on the interior cells only, so their intra-realm ghost cells are refreshed here: the stencil of a point in the half cell next to a block face reads them. Their physical-boundary ghost cells are not set: a point in the half cell next to the domain boundary interpolates with them.
fortran
subroutine save_slices(self)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
self | class(prism_common_object) | inout | The equation. |
Call graph
initialize_coils
Initialize coils.
fortran
subroutine initialize_coils(self)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
self | class(prism_common_object) | inout | The equation. |
Call graph
compute_coils_current_time_zero
Compute coils current sources on the host at time t=0.
fortran
subroutine compute_coils_current_time_zero(self)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
self | class(prism_common_object) | inout | The equation. |
Call graph
impose_pic_fields_time_zero
Compute initial condition for the fields in presence of plasma or current sources.
The electric field (PIC): D(G) phi = -rho/eps, then D <- D - eps G phi. The magnetic field: D(G) A_d = -mu J_d per component, then B <- B + curl A. D(G) is PRISM's own operator, the order-p centred derivative composed with itself (fdv_order), so the corrected field satisfies div D = rho to round-off with PRISM's divergence (issue #84, E3a). The solves run by FLAIL's FFT solver (E3b); an exact/open face holds the free-space potential of the source in its ghosts, summed over the whole domain (E3c). A refined grid is refused: the wide operator across 2:1 faces is not defined yet (E7).
fortran
subroutine impose_pic_fields_time_zero(self, ivar)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
self | class(prism_common_object) | inout | The equation. | |
ivar | integer(kind=I4P) | in | Variable (start) index in q. |
Call graph
print_source_progress
fortran
subroutine print_source_progress(label, progress_done, progress_total, last_percent)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
label | character(len=*) | in | ||
progress_done | integer(kind=I4P) | in | ||
progress_total | integer(kind=I4P) | in | ||
last_percent | integer(kind=I4P) | inout |
Call graph
set_helicon_coil
Set helicon coil.
fortran
subroutine set_helicon_coil(self, n)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
self | class(prism_common_object) | inout | Cpu object. | |
n | integer(kind=I4P) | in | Coil number. |
Call graph
compute_Helicon_coil_amplitude
Compute amplitude correction for helicon coil
fortran
subroutine compute_Helicon_coil_amplitude(I_target, radius, sigma, n, amplitude)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
I_target | real(kind=R8P) | in | ||
radius | real(kind=R8P) | in | ||
sigma | real(kind=R8P) | in | ||
n | integer(kind=I4P) | in | ||
amplitude | real(kind=R8P) | out |
Call graph
compute_helicon_radial_gradient_centered
Compute the discrete centered gradient of the radial helicon primitive.
fortran
subroutine compute_helicon_radial_gradient_centered(hs, dxyz, cell_coord, x_c, y_c, z_c, normal, Radius, sigma, grad_G)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
hs | integer(kind=I4P) | in | ||
dxyz | real(kind=R8P) | in | ||
cell_coord | real(kind=R8P) | in | ||
x_c | real(kind=R8P) | in | ||
y_c | real(kind=R8P) | in | ||
z_c | real(kind=R8P) | in | ||
normal | character(len=2) | in | ||
Radius | real(kind=R8P) | in | ||
sigma | real(kind=R8P) | in | ||
grad_G | real(kind=R8P) | out |
Call graph
cartesian_to_cylindrical
Convert cartesian coordinates to cylindrical coordinates with respect to the coil center and normal direction.
Attributes: pure
fortran
subroutine cartesian_to_cylindrical(x, y, z, x_c, y_c, z_c, normal, r, theta, axial)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
x | real(kind=R8P) | in | Cartesian coordinates. | |
y | real(kind=R8P) | in | Cartesian coordinates. | |
z | real(kind=R8P) | in | Cartesian coordinates. | |
x_c | real(kind=R8P) | in | Coil center coordinates. | |
y_c | real(kind=R8P) | in | Coil center coordinates. | |
z_c | real(kind=R8P) | in | Coil center coordinates. | |
normal | character(len=2) | in | Normal direction. | |
r | real(kind=R8P) | out | Cylindrical coordinates. | |
theta | real(kind=R8P) | out | Cylindrical coordinates. | |
axial | real(kind=R8P) | out | Cylindrical coordinates. |
Call graph
cylindrical_to_cartesian
Convert cylindrical coordinates to cartesian coordinates with respect to the coil center and normal direction.
Attributes: pure
fortran
subroutine cylindrical_to_cartesian(r, theta, axial, x_c, y_c, z_c, normal, x, y, z)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
r | real(kind=R8P) | in | ||
theta | real(kind=R8P) | in | ||
axial | real(kind=R8P) | in | ||
x_c | real(kind=R8P) | in | ||
y_c | real(kind=R8P) | in | ||
z_c | real(kind=R8P) | in | ||
normal | character(len=2) | in | ||
x | real(kind=R8P) | out | ||
y | real(kind=R8P) | out | ||
z | real(kind=R8P) | out |
Call graph
cylindrical_vector_to_cartesian
Convert cylindrical vector A components to cartesian vector components.
Attributes: pure
fortran
subroutine cylindrical_vector_to_cartesian(A_r, A_theta, A_axial, theta, normal, A_x, A_y, A_z)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
A_r | real(kind=R8P) | in | ||
A_theta | real(kind=R8P) | in | ||
A_axial | real(kind=R8P) | in | ||
theta | real(kind=R8P) | in | ||
normal | character(len=2) | in | ||
A_x | real(kind=R8P) | out | ||
A_y | real(kind=R8P) | out | ||
A_z | real(kind=R8P) | out |
write_rectangular_current_tab
Append numerical per-side rectangular current measured from the analytic J_vec support.
fortran
subroutine write_rectangular_current_tab(self, filename, coil_id, current_density, time)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
self | class(prism_common_object) | inout | The equation. | |
filename | character(len=*) | in | Output file name. | |
coil_id | integer(kind=I4P) | in | Coil index. | |
current_density | real(kind=R8P) | in | Current density coefficient. | |
time | real(kind=R8P) | in | Current time. |
Call graph
write_helicon_current_tab
Append numerical per-segment helicon current measured from the analytic J_vec support.
fortran
subroutine write_helicon_current_tab(self, filename, coil_id, current_density, time)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
self | class(prism_common_object) | inout | The equation. | |
filename | character(len=*) | in | Output file name. | |
coil_id | integer(kind=I4P) | in | Coil index. | |
current_density | real(kind=R8P) | in | Current density coefficient. | |
time | real(kind=R8P) | in | Current time. |
Call graph
compute_rectangular_current_flux_sides
Numerically measure the current crossing each local side-normal section of a rectangular coil.
fortran
subroutine compute_rectangular_current_flux_sides(self, coil_id, i_dir_n, i_dir_a, i_dir_b, a1, a2, b1, b2, verse)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
self | class(prism_common_object) | inout | The equation. | |
coil_id | integer(kind=I4P) | in | Coil index. | |
i_dir_n | integer(kind=I4P) | in | Coil-normal direction. | |
i_dir_a | integer(kind=I4P) | in | First in-plane direction. | |
i_dir_b | integer(kind=I4P) | in | Second in-plane direction. | |
a1 | real(kind=R8P) | in | Bounds along the local a direction. | |
a2 | real(kind=R8P) | in | Bounds along the local a direction. | |
b1 | real(kind=R8P) | in | Bounds along the local b direction. | |
b2 | real(kind=R8P) | in | Bounds along the local b direction. | |
verse | real(kind=R8P) | in | Coil orientation sign. |
Call graph
compute_helicon_current_flux_segments
Numerically measure the current crossing each local segment-normal section.
fortran
subroutine compute_helicon_current_flux_segments(self, coil_id)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
self | class(prism_common_object) | inout | The equation. | |
coil_id | integer(kind=I4P) | in | Coil index. |
Call graph
helicon_segment_tangent
Build the local 3D unit tangent of a helicon segment from its unrolled-cylinder tangent.
Attributes: pure
fortran
subroutine helicon_segment_tangent(normal, theta, ds, da, length, t_hat)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
normal | character(len=2) | in | Coil normal. | |
theta | real(kind=R8P) | in | Segment midpoint angle. | |
ds | real(kind=R8P) | in | Unrolled segment increments. | |
da | real(kind=R8P) | in | Unrolled segment increments. | |
length | real(kind=R8P) | in | Segment length. | |
t_hat | real(kind=R8P) | out | Cartesian tangent. |
Call graph
set_rectangular_coil_x
Set rectangular coil with normal direction parallel to x.
fortran
subroutine set_rectangular_coil_x(self, n, verse)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
self | class(prism_common_object) | inout | Cpu object. | |
n | integer(kind=I4P) | in | Coil number. | |
verse | real(kind=R8P) | in | Coil normal direction, +1=+x, -1=-x. |
Call graph
set_rectangular_coil_y
Set rectangular coil with normal direction parallel to y.
fortran
subroutine set_rectangular_coil_y(self, n, verse)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
self | class(prism_common_object) | inout | Cpu object. | |
n | integer(kind=I4P) | in | Coil number. | |
verse | real(kind=R8P) | in | Coil normal direction, +1=+y, -1=-y. |
Call graph
set_rectangular_coil_z
Set rectangular coil with normal direction parallel to z.
fortran
subroutine set_rectangular_coil_z(self, n, verse)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
self | class(prism_common_object) | inout | Cpu object. | |
n | integer(kind=I4P) | in | Coil number. | |
verse | real(kind=R8P) | in | Coil normal direction, +1=+z, -1=-z. |
Call graph
set_circular_coil_x
Set circular coil with normal direction parallel to x.
fortran
subroutine set_circular_coil_x(self, n, verse)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
self | class(prism_common_object) | inout | Cpu object. | |
n | integer(kind=I4P) | in | Coil number. | |
verse | real(kind=R8P) | in | Coil normal direction, +1=+x, -1=-x. |
Call graph
set_circular_coil_y
Set circular coil with normal direction parallel to y.
fortran
subroutine set_circular_coil_y(self, n, verse)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
self | class(prism_common_object) | inout | Cpu object. | |
n | integer(kind=I4P) | in | Coil number. | |
verse | real(kind=R8P) | in | Coil normal direction, +1=+y, -1=-y. |
Call graph
set_circular_coil_z
Set circular coil with normal direction parallel to z.
fortran
subroutine set_circular_coil_z(self, n, verse)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
self | class(prism_common_object) | inout | Cpu object. | |
n | integer(kind=I4P) | in | Coil number. | |
verse | real(kind=R8P) | in | Coil normal direction, +1=+z, -1=-z. |
Call graph
set_solenoid_x
Set solenoid with axis direction parallel to x.
fortran
subroutine set_solenoid_x(self, n, verse)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
self | class(prism_common_object) | inout | Cpu object. | |
n | integer(kind=I4P) | in | Coil number. | |
verse | real(kind=R8P) | in | Solenoid axis direction, +1=+x, -1=-x. |
Call graph
set_solenoid_y
Set solenoid with axis direction parallel to y.
fortran
subroutine set_solenoid_y(self, n, verse)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
self | class(prism_common_object) | inout | Cpu object. | |
n | integer(kind=I4P) | in | Coil number. | |
verse | real(kind=R8P) | in | Solenoid axis direction, +1=+y, -1=-y. |
Call graph
set_solenoid_z
Set solenoid with axis direction parallel to z.
fortran
subroutine set_solenoid_z(self, n, verse)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
self | class(prism_common_object) | inout | Cpu object. | |
n | integer(kind=I4P) | in | Coil number. | |
verse | real(kind=R8P) | in | Solenoid axis direction, +1=+z, -1=-z. |
Call graph
coupling_descriptor_forest
Report this realm's coupling descriptor for β admissibility.
Returns (numerics%scheme_time, rk%scheme, physics%nv). β admits a seam between two realms iff all three values agree. Spatial operator (numerics%scheme_space) is intentionally NOT in the descriptor — β exists precisely to support different spatial operators per realm.
Provided on prism_common_object so both prism_cpu_object and prism_fnl_object inherit a single implementation.
fortran
subroutine coupling_descriptor_forest(self, scheme_time, rk_scheme, nv)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
self | class(prism_common_object) | in | The realm. | |
scheme_time | character(len=:) | out | allocatable | Time-integration family tag ("runge_kutta", "leapfrog", ...). |
rk_scheme | character(len=:) | out | allocatable | Within-family scheme tag ("runge-kutta-ssp-54", ...). |
nv | integer(kind=I4P) | out | Number of conserved variables on this realm. |
Call graph
Functions
has_current_density
Return true if the current density (host q) is non-zero on any rank; every rank must call it. It decides whether the elliptic magnetic-field initialization runs. A rank-local test let the ranks holding current enter that solve while the others skipped it, and the solve's ghost exchange then waited forever (issue #84).
Returns: logical
fortran
function has_current_density(self) result(has)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
self | class(prism_common_object) | in | The equation. |
Call graph
global_max
Return the maximum of local over all MPI ranks; every rank must call it. The FLAIL convergence tests use it (issue #84): a rank-local test let ranks leave the elliptic iterations at different counts, and the inter-block ghost exchange of the next sweep then waited forever on the ranks that left.
Returns: real(kind=R8P)
fortran
function global_max(local) result(global)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
local | real(kind=R8P) | in | This rank's value. |
Call graph
helicon_radial_primitive
Primitive of the radial helicon window.
G'(r) = W_r(r)
W_r(r) = 0.5 * [E(r; R - sigma) - E(r; R + sigma)].
Returns: real(kind=R8P)
fortran
function helicon_radial_primitive(r, Radius, sigma) result(G)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
r | real(kind=R8P) | in | ||
Radius | real(kind=R8P) | in | ||
sigma | real(kind=R8P) | in |
Call graph
helicon_coil_A_at_point
Compute helicon/saddle coil auxiliary vector potential A at one point.
Returns: real(kind=R8P)
fortran
function helicon_coil_A_at_point(hs, dxyz, cell_coord, x_c, y_c, z_c, normal, Radius, N_points, s_map, csi_map, eta, theta_c, sigma) result(Ap)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
hs | integer(kind=I4P) | in | ||
dxyz | real(kind=R8P) | in | ||
cell_coord | real(kind=R8P) | in | Coordinate cartesiane del punto di valutazione. | |
x_c | real(kind=R8P) | in | Coordinata x centro cilindro. | |
y_c | real(kind=R8P) | in | Coordinata x centro cilindro. | |
z_c | real(kind=R8P) | in | Coordinata z centro cilindro. | |
normal | character(len=2) | in | Asse cilindro. | |
Radius | real(kind=R8P) | in | Raggio cilindro. | |
N_points | integer(kind=I4P) | in | Numero di punti della spline. | |
s_map | real(kind=R8P) | in | s coordinates of the spline points for the helicon coil case. | |
csi_map | real(kind=R8P) | in | csi coordinates of the spline points for the helicon coil case. | |
eta | real(kind=R8P) | in | ||
theta_c | real(kind=R8P) | in | ||
sigma | real(kind=R8P) | in | Smearing. |
Call graph
wrap_to_pi
Wrap angle to [-pi, pi).
Attributes: pure, elemental
Returns: real(kind=R8P)
fortran
function wrap_to_pi(alpha) result(alpha_w)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
alpha | real(kind=R8P) | in |
Call graph
compute_signed_area
Compute signed area of a a 2D polygon
Returns: real(kind=R8P)
fortran
function compute_signed_area(N_points, x_points, y_points) result(signed_area)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
N_points | integer(kind=I4P) | in | ||
x_points | real(kind=R8P) | in | ||
y_points | real(kind=R8P) | in |
Call graph
compute_windings_number
Returns: real(kind=R8P)
fortran
function compute_windings_number(N_points, x_points, y_points, coord) result(w_n)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
N_points | integer(kind=I4P) | in | ||
x_points | real(kind=R8P) | in | ||
y_points | real(kind=R8P) | in | ||
coord | real(kind=R8P) | in |
Call graph
rectangular_coil_A_at_point
Returns: real(kind=R8P)
fortran
function rectangular_coil_A_at_point(xp, xc, idir_n, idir_a, idir_b, a1, a2, b1, b2, sigma) result(Ap)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
xp | real(kind=R8P) | in | Punto di valutazione. | |
xc | real(kind=R8P) | in | Centro spira. | |
idir_n | integer(kind=I4P) | in | Componente normale: 1=x, 2=y, 3=z. | |
idir_a | integer(kind=I4P) | in | Prima coordinata locale nel piano spira. | |
idir_b | integer(kind=I4P) | in | Seconda coordinata locale nel piano spira. | |
a1 | real(kind=R8P) | in | Estremi lato locale a. | |
a2 | real(kind=R8P) | in | Estremi lato locale a. | |
b1 | real(kind=R8P) | in | Estremi lato locale b. | |
b2 | real(kind=R8P) | in | Estremi lato locale b. | |
sigma | real(kind=R8P) | in | Smearing unico della spira. |
Call graph
erf_function
Returns: real(kind=R8P)
fortran
function erf_function(s, mu, sigma) result(res)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
s | real(kind=R8P) | in | ||
mu | real(kind=R8P) | in | ||
sigma | real(kind=R8P) | in |
Call graph
tangential_window
Returns: real(kind=R8P)
fortran
function tangential_window(s, smin, smax, sigma) result(res)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
s | real(kind=R8P) | in | ||
smin | real(kind=R8P) | in | ||
smax | real(kind=R8P) | in | ||
sigma | real(kind=R8P) | in |
Call graph
erf_primitive_function
Primitive of erf((s-mu)/(sqrt(2)*sigma)).
Returns: real(kind=R8P)
fortran
function erf_primitive_function(s, mu, sigma) result(res)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
s | real(kind=R8P) | in | ||
mu | real(kind=R8P) | in | ||
sigma | real(kind=R8P) | in |
Call graph
build_A_ghost_stencil_rectangular
Build rectangular-coil ghost cell A array to compute J_vec value through the curl.
Returns: real(kind=R8P)
fortran
function build_A_ghost_stencil_rectangular(hs, dxyz, gc_coord, x_c, y_c, z_c, sigma, i_dir_n, i_dir_a, i_dir_b, a1, a2, b1, b2) result(A_gc)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
hs | integer(kind=I4P) | in | Half-stencil size for the curl computation. | |
dxyz | real(kind=R8P) | in | Space steps. | |
gc_coord | real(kind=R8P) | in | Ghost cell coordinates. | |
x_c | real(kind=R8P) | in | Center coordinates. | |
y_c | real(kind=R8P) | in | Center coordinates. | |
z_c | real(kind=R8P) | in | Center coordinates. | |
sigma | real(kind=R8P) | in | Width of the Gaussian profile. | |
i_dir_n | integer(kind=I4P) | in | Direction indices for the normal and tangential | |
i_dir_a | integer(kind=I4P) | in | Direction indices for the normal and tangential | |
i_dir_b | integer(kind=I4P) | in | Direction indices for the normal and tangential | |
a1 | real(kind=R8P) | in | Local coordinates of the rectangular coil | |
a2 | real(kind=R8P) | in | Local coordinates of the rectangular coil | |
b1 | real(kind=R8P) | in | Local coordinates of the rectangular coil | |
b2 | real(kind=R8P) | in | Local coordinates of the rectangular coil |
Call graph
build_A_ghost_stencil_helicon
Build the helicon A stencil at a ghost cell without reading outside allocated arrays.
Returns: real(kind=R8P)
fortran
function build_A_ghost_stencil_helicon(hs, dxyz, gc_coord, x_c, y_c, z_c, sigma, N_points, s_map, csi_map, eta, theta_c, r_coil, normal) result(A_gc)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
hs | integer(kind=I4P) | in | ||
dxyz | real(kind=R8P) | in | ||
gc_coord | real(kind=R8P) | in | ||
x_c | real(kind=R8P) | in | ||
y_c | real(kind=R8P) | in | ||
z_c | real(kind=R8P) | in | ||
sigma | real(kind=R8P) | in | ||
N_points | integer(kind=I4P) | in | ||
s_map | real(kind=R8P) | in | ||
csi_map | real(kind=R8P) | in | ||
eta | real(kind=R8P) | in | ||
theta_c | real(kind=R8P) | in | ||
r_coil | real(kind=R8P) | in | ||
normal | character(len=2) | in |
Call graph
crossproduct
Returns: real(kind=R8P)
fortran
function crossproduct(a, b) result(cross)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
a | real(kind=R8P) | in | Left hand side. | |
b | real(kind=R8P) | in | Left hand side. |
Call graph