explicit_term_abstract_class Module

Houses abstract explicit term interfaces


Used by


Interfaces

interface

  • private module function unityFun(this, varCont) result(res)

    Default multiplicative function - returns a real vector of ones based on evolvedVarName. In general should use passed variable container to construct a vector conforming to the evolved variable

    Arguments

    Type IntentOptional Attributes Name
    class(ExplicitTerm), intent(in) :: this
    type(VariableContainer), intent(in) :: varCont

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

interface

  • private module function evaluateExpTerm(this, varCont) result(res)

    Evaluates the term as outerFun * [* operatorTerm%actOn(innerFun)] depending on whether the Operator is allocated

    Arguments

    Type IntentOptional Attributes Name
    class(ExplicitTerm), intent(in) :: this
    type(VariableContainer), intent(in) :: varCont

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

interface

  • private pure module function getEvolvedVarName(this) result(name)

    Get name of the evolved variable of this term

    Arguments

    Type IntentOptional Attributes Name
    class(ExplicitTerm), intent(in) :: this

    Return Value character(len=:), allocatable

interface

  • private module subroutine simpleUpdate(this, varCont, modelData, hostModel)

    Default update function - just calls update on Operator if allocated

    Arguments

    Type IntentOptional Attributes Name
    class(ExplicitTerm), intent(inout) :: this
    type(VariableContainer), intent(in) :: varCont

    Variable container used in update

    class(ModelboundData), intent(in), optional :: modelData

    Reference model data - unused

    class(ModelSurrogate), intent(in), optional :: hostModel

    Host model - unused

interface

  • private pure module subroutine setOperator(this, op)

    Setter for termOperator

    Arguments

    Type IntentOptional Attributes Name
    class(ExplicitTerm), intent(inout) :: this
    class(Operator), intent(in) :: op

interface

  • private pure module subroutine setEvolvedVar(this, evolvedVarName)

    Set evolved variable name

    Arguments

    Type IntentOptional Attributes Name
    class(ExplicitTerm), intent(inout) :: this
    character(len=*), intent(in) :: evolvedVarName

Derived Types

type, public, abstract, extends(Term) ::  ExplicitTerm

Abstract term providing basic interfaces for build terms used in explicit timestepping

Components

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

True only if user explicitly sets it to true

character(len=:), private, allocatable :: evolvedVarName

Name of evolved variable

class(Operator), private, allocatable :: termOperator

Optional operator used by this term

Type-Bound Procedures

procedure, public :: isDefined => isDefinedObject
procedure, public :: makeDefined => makeDefinedObject
procedure, public :: makeUndefined => makeUndefinedObject
procedure, public :: setOperator
procedure, public :: setEvolvedVar
procedure, public :: evaluate => evaluateExpTerm
procedure, private :: outerFun => unityFun
procedure, private :: innerFun => unityFun
procedure, public :: update => simpleUpdate
procedure, public :: getVarName => getEvolvedVarName