Stencil generator for logical boundary condition with scaled distribution extrapolation
Scaling logical boundary condition value generator initialization routine
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(ScalingLBCStencilGen), | intent(inout) | :: | this | |||
type(VSpace), | intent(in) | :: | vspaceObj |
VSpace object used to get grid data |
||
logical, | intent(in) | :: | isActive |
Set to true if the process containing this has a boundary where this is to be applied |
||
type(FScalingDerivation), | intent(in) | :: | fDeriv |
Derivation used to get scaling factors |
||
integer(kind=ik), | intent(in), | dimension(:) | :: | fDerivReqIndices |
Indices required for scaling extrapolation derivation |
|
integer(kind=ik), | intent(in) | :: | colL |
Column l harmonic |
||
real(kind=rk), | intent(in) | :: | dx |
Boundary cell width |
||
integer(kind=ik), | intent(in), | optional, | dimension(:) | :: | includedDecompHarmonics |
Harmonics to be included in the decomposition for this generator (useful for right boundary on staggered grid). Defaults to all harmonics. |
Calculate scaling logical boundary condition values in place
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(ScalingLBCStencilGen), | intent(inout) | :: | this | |||
type(VariableContainer), | intent(in) | :: | varCont | |||
type(RealArray), | intent(inout), | allocatable, dimension(:) | :: | res | ||
class(ModelboundData), | intent(in), | optional | :: | mbData | ||
class(ModelSurrogate), | intent(in), | optional | :: | hostModel |
JaggedArrayGenerator for calculating logical boundary condition for electron distribution function. Contains x,h,v dependencies. Expects xStencil = [0] or [-1], depending on whether the boundary is left or right, and whether variables are staggered. The hStencil should cover all harmonics and assumes no m>0 harmonics. Expects vStencil = [0,1]. Calculates v*f_{cl}, without taking the x width or boundary sign into account.
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
logical, | public | :: | userDefined | = | .false. |
True only if user explicitly sets it to true |
|
type(FScalingDerivation), | private | :: | fDeriv |
Derivation used to get scaling factors |
|||
integer(kind=ik), | private, | allocatable, dimension(:) | :: | fDerivReqVarIndices |
Required variable indices for scaling extrapolation derivation |
||
real(kind=rk), | private, | allocatable, dimension(:,:) | :: | bufferPl |
Tensor buffer |
||
real(kind=rk), | private, | allocatable, dimension(:) | :: | vGrid |
Copy of v grid |
||
real(kind=rk), | private, | allocatable, dimension(:) | :: | vGridWidths |
Copy of v grid widths |
||
integer(kind=ik), | private | :: | colL |
l harmonic index of the column harmonic |
|||
integer(kind=ik), | public, | allocatable, dimension(:) | :: | includedDecompHarmonics |
Harmonics to be included in the decomposition for this generator (useful for right boundary on staggered grid) |
||
real(kind=rk), | private | :: | dx |
Width of boundary cell |
|||
logical, | private | :: | isActive |
procedure, public :: isDefined => isDefinedObject | |
procedure, public :: makeDefined => makeDefinedObject | |
procedure, public :: makeUndefined => makeUndefinedObject | |
procedure, public :: calculate | |
procedure, public :: init => initScalingLBCGen | |
procedure, public :: calculateInPlace => calcScalingLBCVals |