bounded_ext_derivation_class Module

Houses derivation that extrapolates a quantity, optionally applying a lower and/or upper bound to the extrapolated value


Used by


Interfaces

interface

  • private module function calculateBExt(this, inputArray, indices) result(output)

    Arguments

    Type IntentOptional Attributes Name
    class(BoundedExtDerivation), intent(inout) :: this
    type(RealArray), intent(in), dimension(:) :: inputArray
    integer(kind=ik), intent(in), dimension(:) :: indices

    Return Value real(kind=rk), allocatable, dimension(:)

interface

  • private module subroutine initBExt(this, partitionObj, procRank, extrapolationObj, fixedLowerBound, fixedUpperBound, expectLowerBoundVar, expectUpperBoundVar)

    Initialize bounded extrapolation derivation object

    Arguments

    Type IntentOptional Attributes Name
    class(BoundedExtDerivation), intent(inout) :: this
    type(Partition), intent(in) :: partitionObj

    Partition object used to determine local processor grid chunk

    integer(kind=ik), intent(in) :: procRank

    Current processor rank

    class(Extrapolation), intent(in) :: extrapolationObj

    Extrapolation object used to calculate the extrapolated values

    real(kind=rk), intent(in), optional :: fixedLowerBound

    Optional fixed lower bound value

    real(kind=rk), intent(in), optional :: fixedUpperBound

    Optional fixed upper bound value

    logical, intent(in), optional :: expectLowerBoundVar

    True if lower bound variable is expected. Defaults to false.

    logical, intent(in), optional :: expectUpperBoundVar

    True if lower bound variable is expected. Defaults to false.


Derived Types

type, public, extends(Derivation) ::  BoundedExtDerivation

Calculates extrapolated value of a fluid quantity at a boundary cell edge, optionally applying a lower and/or upper bound to the extrapolated value. Accepts scalar variables for lower/upper bounds. Expects 1-3 variables, The first expected variable name is the interpolated variable. The second is the upper bound if no lower bound variable is expected, otherwise it is the lower bound. The third is the upper bound (if expected). Bounds are all expected to have positive values, and this will be ensured by taking their absolute values. If applied to the left boundary, will apply -abs(lowerBound) as upper bound and -abs(upperBound) as lower bound, i.e. the bounds are reflected around 0.

Components

Type Visibility Attributes Name Initial
logical, public :: userDefined = .false.

True only if user explicitly sets it to true

real(kind=rk), private, allocatable :: fixedLowerBound

Optional fixed lower bound value. Ignored if lower bound var expected.

real(kind=rk), private, allocatable :: fixedUpperBound

Optional fixed upper bound value. Ignored if upper bound var expected.

logical, private :: expectLowerBoundVar

True if lower bound variable is expected

logical, private :: expectUpperBoundVar

True if upper bound variable is expected

class(Extrapolation), public, allocatable :: extrapolationObj

Extrapolation object used to calculate the extrapolated values

Type-Bound Procedures

procedure, public :: isDefined => isDefinedObject
procedure, public :: makeDefined => makeDefinedObject
procedure, public :: makeUndefined => makeUndefinedObject
procedure, public :: init => initBExt
procedure, public :: calculate => calculateBExt