| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| type(block_grid_t), | public, | dimension(:), allocatable, target | :: | bg |
one block grid to rule them all |
||
| type(block_grid_t), | public, | dimension(:), allocatable, target | :: | bgc |
one block grid to rule them all |
||
| type(geo_t), | public, | target | :: | bgeo |
one geometry to rule them all: bgeo for the blocks themselves, bgeoc for their one-level-coarser representatives |
||
| type(geo_t), | public, | target | :: | bgeoc |
one geometry to rule them all: bgeo for the blocks themselves, bgeoc for their one-level-coarser representatives |
||
| double precision, | public, | dimension(:,:,:), allocatable | :: | collapsedData | |||
| type(grid_field), | public, | dimension(:), allocatable, target | :: | gridvars |
array of physical blocks of meshed fields for particles |
||
| type(state), | public, | dimension(:), allocatable, target | :: | ps |
array of physical states for all blocks on my processor |
||
| type(state), | public, | dimension(:), allocatable, target | :: | ps1 |
array of physical states, temp 1 for multi-step time integrator |
||
| type(state), | public, | dimension(:), allocatable, target | :: | ps2 |
array of physical states, temp 2 for multi-step time integrator |
||
| type(state), | public, | dimension(:), allocatable, target | :: | ps3 |
array of physical states, temp 3 for multi-step time integrator |
||
| type(state), | public, | dimension(:), allocatable, target | :: | ps4 |
array of physical states, temp 4 for multi-step time integrator |
||
| type(state_sub), | public, | dimension(:), allocatable, target | :: | ps_sub |
array of physical blocks in reduced dimension |
||
| type(state), | public, | dimension(:), allocatable, target | :: | psc |
array of physical blocks, one level coarser representative |
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| integer, | public | :: | istep | = | -1 |
timelevel |
|
| double precision, | public, | dimension(:,:,:,:,:), allocatable | :: | w |
cell center variables for all blocks and time-levels |
||
| double precision, | public, | dimension(:,:,:,:,:), allocatable | :: | ws |
fac center variables for all blocks and time-levels |
velocities store for constrained transport
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| double precision, | public, | dimension(:,:,:,:), allocatable | :: | cbarmax | |||
| double precision, | public, | dimension(:,:,:,:), allocatable | :: | cbarmin | |||
| double precision, | public, | dimension(:,:,:,:,:), allocatable | :: | vbarC | |||
| double precision, | public, | dimension(:,:,:,:,:), allocatable | :: | vbarLC | |||
| double precision, | public, | dimension(:,:,:,:,:), allocatable | :: | vbarRC | |||
| double precision, | public, | dimension(:,:,:,:), allocatable | :: | vnorm |
Cell metrics for all blocks at once, with the grid index last, exactly like block_grid_t holds the solution. One instance covers every block a rank can own (1:max_blocks), so the arrays are allocated once at startup instead of per block, and device kernels can index them directly by igrid rather than chasing a per-block pointer. The corresponding state components (ps(igrid)%x, %dx, ...) are bounds-remapped views into these arrays, so host code keeps working unchanged.
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| double precision, | public, | dimension(:,:,:,:,:), allocatable | :: | ds |
Cell sizes in length unit |
||
| double precision, | public, | dimension(:,:,:,:), allocatable | :: | dvolume |
Volumes of a cell |
||
| double precision, | public, | dimension(:,:,:,:,:), allocatable | :: | dx |
Cell sizes in coordinate units. Read on the host alone - by calc_x, by the collapsed output and by set_B0_grid - never by a kernel. |
||
| double precision, | public, | dimension(:,:,:,:,:), allocatable | :: | surfaceC |
Areas of cell-face surfaces |
||
| double precision, | public, | dimension(:,:,:,:,:), allocatable | :: | x |
Cell-center positions |
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| double precision, | public, | dimension(:,:,:,:), allocatable | :: | w |
Variables new state |
||
| double precision, | public, | dimension(:,:,:,:), allocatable | :: | wold |
Variables old state |
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| double precision, | public, | dimension(:,:,:,:,:), pointer | :: | B0 | => | Null() |
Time-independent magnetic field at cell center and cell interface |
| double precision, | public, | dimension(:,:,:,:), pointer | :: | J0 | => | Null() |
Time-independent electric current density at cell center |
| double precision, | public, | dimension(:,:,:,:), pointer | :: | ds | => | Null() |
Cell sizes at cell center in length unit |
| double precision, | public, | dimension(:,:,:,:), pointer | :: | dsC | => | Null() |
Cell sizes at cell face in length unit. Never associated: the matching geo_t member was dropped because its only reader, b_from_vector_potentialA, needs stagger_grid, which this fork does not support. That routine mpistops before touching this. |
| double precision, | public, | dimension(:,:,:), pointer | :: | dt | => | Null() |
Cell local timesteps |
| double precision, | public, | dimension(:,:,:), pointer | :: | dvolume | => | Null() |
Volumes of a cell |
| double precision, | public, | dimension(:,:,:,:), pointer | :: | dx | => | Null() |
Cell sizes in coordinate units |
| double precision, | public, | dimension(:,:,:,:,:), pointer | :: | equi_vars | => | Null() |
Time-independent equi vars (B0 is not into this array) |
| integer, | public | :: | igrid | = | -1 |
ID of a grid block |
|
| logical, | public, | dimension(:), pointer | :: | is_physical_boundary(:) | => | Null() |
If it face a physical boundary |
| integer, | public | :: | istep | = | -1 |
timelevel |
|
| integer, | public | :: | ixGmax1 |
index range of block array in cell centers |
|||
| integer, | public | :: | ixGmax2 |
index range of block array in cell centers |
|||
| integer, | public | :: | ixGmax3 |
index range of block array in cell centers |
|||
| integer, | public | :: | ixGmin1 |
index range of block array in cell centers |
|||
| integer, | public | :: | ixGmin2 |
index range of block array in cell centers |
|||
| integer, | public | :: | ixGmin3 |
index range of block array in cell centers |
|||
| integer, | public | :: | ixGsmax1 |
index range of block array in cell faces |
|||
| integer, | public | :: | ixGsmax2 |
index range of block array in cell faces |
|||
| integer, | public | :: | ixGsmax3 |
index range of block array in cell faces |
|||
| integer, | public | :: | ixGsmin1 |
index range of block array in cell faces |
|||
| integer, | public | :: | ixGsmin2 |
index range of block array in cell faces |
|||
| integer, | public | :: | ixGsmin3 |
index range of block array in cell faces |
|||
| integer, | public | :: | level |
level of AMR |
|||
| double precision, | public, | dimension(:), pointer | :: | special_values | => | Null() |
special values for a block |
| double precision, | public, | dimension(:,:,:,:), pointer | :: | surface | => | Null() |
Areas of cell-center surfaces. Never associated: the matching geo_t member was dropped because its only reader is curlvector's Stokesbased branch, which mpistops before touching this. |
| double precision, | public, | dimension(:,:,:,:), pointer | :: | surfaceC | => | Null() |
Areas of cell-face surfaces |
| double precision, | public, | dimension(:,:,:,:), pointer | :: | w | => | Null() |
Variables, normally cell center conservative values |
| double precision, | public, | dimension(:,:,:,:), allocatable | :: | wc |
Variables, cell corner values |
||
| double precision, | public, | dimension(:,:,:,:), allocatable | :: | we |
Variables, cell edge values |
||
| double precision, | public, | dimension(:,:,:,:), pointer | :: | wextra | => | Null() |
extra variables do not need ghost cell and equation flux |
| double precision, | public, | dimension(:,:,:,:), pointer | :: | ws | => | Null() |
Variables, cell face values |
| double precision, | public, | dimension(:,:,:,:), pointer | :: | x | => | Null() |
Cell-center positions |
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| double precision, | public, | dimension(:,:,:,:), allocatable | :: | ds |
Cell sizes in length unit |
||
| double precision, | public, | dimension(:,:), allocatable | :: | dvolume |
Volumes of a cell |
||
| double precision, | public, | dimension(:,:), allocatable | :: | dvolumecoarse |
Volumes of a cell, one level coarser representative |
||
| double precision, | public, | dimension(:,:,:), allocatable | :: | dx |
Cell sizes |
||
| double precision, | public, | dimension(:,:,:,:), allocatable | :: | dxcoarse |
Cell sizes, one level coarser |
||
| integer, | public | :: | igrid | = | -1 |
ID of a grid block |
|
| double precision, | public, | dimension(:,:,:), allocatable | :: | surface |
Areas of cell-center surfaces |
||
| double precision, | public, | dimension(:,:,:), allocatable | :: | surfaceC |
Areas of cell-face surfaces |
||
| double precision, | public, | dimension(:,:,:), allocatable | :: | w |
Variables, normally center |
||
| double precision, | public, | dimension(:,:,:), allocatable | :: | wC |
Variables for the cornerpositions on the slice |
||
| double precision, | public, | dimension(:,:,:), allocatable | :: | wcoarse |
Variables, normally center, one level coarser representative |
||
| double precision, | public, | dimension(:,:,:), allocatable | :: | x |
Cell-center positions |
||
| double precision, | public, | dimension(:,:,:), allocatable | :: | xC |
Corner positions on the slice |
||
| double precision, | public, | dimension(:,:,:), allocatable | :: | xcoarse |
Cell-center positions, one level coarser representative |