Appearance
adam_prism_ic_object
ADAM, PRISM Initial Conditions class definition, CPU backend.
Source: src/app/prism/common/adam_prism_ic_object.F90
Dependencies
Contents
- prism_ic_object
- initialize
- load_from_file
- set_initial_conditions
- set_gaussian_wave_pulse
- set_gaussian_derivative_pulse
- description
Variables
| Name | Type | Attributes | Description |
|---|---|---|---|
INI_SECTION_NAME | character(len=18) | parameter | INI (config) file section name containing IC configs. |
IC_TYPE_VACUUM | character(len=6) | parameter | Vacuum IC TYPE parameter. |
IC_TYPE_RP | character(len=15) | parameter | Riemann Problem IC TYPE parameter. |
IC_TYPE_PLANE_WAVE | character(len=10) | parameter | Riemann Problem IC TYPE parameter. |
IC_TYPE_RMF | character(len=10) | parameter | Rotating Magnetic Field IC TYPE parameter. |
IC_TYPE_MAGNETIC_NOZZLE | character(len=15) | parameter | Nozzle IC TYPE parameter. |
IC_TYPE_RMF_NOZZLE | character(len=15) | parameter | Rotating Magnetic Field Nozzle IC TYPE parameter. |
IC_TYPE_UNIFORM_FIELD | character(len=13) | parameter | Uniform field IC type parameter |
IC_TYPE_GAUSSIAN_PULSE | character(len=14) | parameter | Gaussian pulse IC TYPE parameter. |
IC_TYPE_GAUSSIAN_DERIVATIVE_PULSE | character(len=25) | parameter | Gaussian-derivative pulse. |
IC_TYPES_ACCEPTED | character(len=*) | parameter | Types the IC applies. |
Derived Types
prism_ic_object
Initial Conditions class definition, CPU backend.
Components
| Name | Type | Attributes | Description |
|---|---|---|---|
amr_iterations | integer(kind=I4P) | Number of AMR iterations imposing IC. | |
ic_type | character(len=:) | allocatable | IC type. |
regions_number | integer(kind=I4P) | Number of IC regions. | |
q | real(kind=R8P) | allocatable | Primitive variables (Dx,Dy,Dz,Bx,By,Bz,Jx,Jy,Jz). |
emin | real(kind=R8P) | allocatable | IC regions bounding box. |
emax | real(kind=R8P) | allocatable | IC regions bounding box. |
kx | real(kind=R8P) | Plane wave number in x direction. | |
ky | real(kind=R8P) | Plane wave number in y direction. | |
kz | real(kind=R8P) | Plane wave number in z direction. | |
lambda | real(kind=R8P) | Plane wave wavelength. | |
B0 | real(kind=R8P) | Plane wave/Gaussian pulse background magnetic field amplitude. | |
B_x | real(kind=R8P) | Unifom field value | |
B_y | real(kind=R8P) | Unifom field value | |
B_z | real(kind=R8P) | Unifom field value | |
D_x | real(kind=R8P) | Unifom field value | |
D_y | real(kind=R8P) | Unifom field value | |
D_z | real(kind=R8P) | Unifom field value | |
RMF_frequency | real(kind=R8P) | Rotating magnetic field frequency. | |
RMF_B_amplitude | real(kind=R8P) | Rotating magnetic field amplitude. | |
RMF_rotation_axis | character(len=99) | Rotating magnetic field rotation axis (X, Y, Z). | |
alpha | integer(kind=I4P) | RMF rotation axis coordinate 1 | |
beta | integer(kind=I4P) | RMF rotation axis coordinate 2 | |
gamma | integer(kind=I4P) | RMF rotation axis coordinate 3 | |
pulse_direction | character(len=2) | ||
r0 | real(kind=R8P) | reference point for gaussian pulse at t0 | |
k0 | real(kind=R8P) | wave number for the gaussian pulse | |
sigma | real(kind=R8P) | standard deviation for the gaussian pulse |
Type-Bound Procedures
| Name | Attributes | Description |
|---|---|---|
description | pass(self) | Return pretty-printed object description. |
initialize | pass(self) | Initialize IC. |
load_from_file | pass(self) | Load config from file. |
set_initial_conditions | pass(self) | Set initial conditions on PRISM fields. |
Subroutines
initialize
Initialize the equation.
fortran
subroutine initialize(self, file_parameters)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
self | class(prism_ic_object) | inout | IC. | |
file_parameters | type(file_ini) | in | Simulation parameters ini file handler. |
Call graph
load_from_file
Load config from file.
fortran
subroutine load_from_file(self, file_parameters, go_on_fail)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
self | class(prism_ic_object) | inout | IC. | |
file_parameters | type(file_ini) | in | Simulation parameters ini file handler. | |
go_on_fail | logical | in | optional | Go on if load fails. |
Call graph
set_initial_conditions
Set initial conditions on PRISM fields.
fortran
subroutine set_initial_conditions(self, physics, field, grid, q)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
self | class(prism_ic_object) | in | IC. | |
physics | type(prism_physics_object) | in | Fluids physiscs. | |
field | type(field_object) | in | Field object. | |
grid | type(grid_object) | in | target | Grid (sibling realm component, threaded in). |
q | real(kind=R8P) | inout | Field cell centered variables. |
Call graph
set_gaussian_wave_pulse
Set a linearly polarized Gaussian-modulated electromagnetic wave packet. Propagation along +/-x: E_y, B_z. Propagation along +/-y: E_z, B_x. Propagation along +/-z: E_x, B_y.
fortran
subroutine set_gaussian_wave_pulse(x, i_dir, k0, x0, B0, sigma, q)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
x | real(kind=R8P) | in | Spatial coordinates. | |
i_dir | integer(kind=I4P) | in | Propagation direction: +/-1, +/-2, +/-3. | |
k0 | real(kind=R8P) | in | Central wave number. | |
x0 | real(kind=R8P) | in | Initial packet center along propagation direction. | |
B0 | real(kind=R8P) | in | Magnetic-field amplitude. | |
sigma | real(kind=R8P) | in | Gaussian standard deviation. | |
q | real(kind=R8P) | inout | Electromagnetic state: D(1:3), B(1:3). |
Call graph
set_gaussian_derivative_pulse
Set a linearly polarized pulse, the derivative of a Gaussian vector potential, with an optional carrier.
Along +x: A_y = A0 exp(-s^2/(2 sigma^2)) cos(k0 s), s = x - x0, and B_z = dA_y/dx, E_y = c B_z:
B_z = -A0 exp(-s^2/(2 sigma^2)) [(s/sigma^2) cos(k0 s) + k0 sin(k0 s)], A0 = B0/sqrt(k0^2 + 1/(e sigma^2)).
Without carrier (k0 = 0) it is the single-cycle pulse, A0 = B0 sigma e^(1/2), max|B| = B0 at s = -/+sigma; its power spectrum peaks at k sigma = 1 with a relative width of order one. With a carrier the spectrum is k [G(k - k0) + G(k + k0)], G Gaussian of width 1/sigma: a packet around k0 of relative width ~1/(k0 sigma), and A0 -> B0/k0 makes B0 the envelope amplitude for k0 sigma >> 1; max|B|/B0 is 1 at k0 = 0, 0.79 at k0 sigma = 1, 0.93 at 4, 0.98 at 8.
A_y vanishes on both sides, so the profile has zero area and no zero-frequency content for any k0: no net momentum to free particles, no quasi-static field in an absorbing layer. The sampled area is zero to round-off for sigma above a couple of cells (Poisson summation), so the profile is not truncated: a cut would leave a jump and an area of the order of the cut tail. Propagation along +/-x: E_y, B_z. Propagation along +/-y: E_z, B_x. Propagation along +/-z: E_x, B_y.
fortran
subroutine set_gaussian_derivative_pulse(x, i_dir, k0, x0, B0, sigma, q)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
x | real(kind=R8P) | in | Spatial coordinates. | |
i_dir | integer(kind=I4P) | in | Propagation direction: +/-1, +/-2, +/-3. | |
k0 | real(kind=R8P) | in | Carrier wave number (0: no carrier). | |
x0 | real(kind=R8P) | in | Initial pulse center along the propagation direction. | |
B0 | real(kind=R8P) | in | Peak (k0 = 0) or envelope (k0 sigma >> 1) magnetic field. | |
sigma | real(kind=R8P) | in | Standard deviation of the Gaussian vector potential. | |
q | real(kind=R8P) | inout | Electromagnetic state: D(1:3), B(1:3). |
Call graph
Functions
description
Return a pretty-formatted object description.
Attributes: pure
Returns: character(len=:)
fortran
function description(self) result(desc)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
self | class(prism_ic_object) | in | IC. |
Call graph