general_mat_term_procedures Submodule

Contains module procedures associated with the general matrix term


Uses


Module Subroutines

module subroutine initGeneralTerm(this, gridObj, partitionObj, indexingObj, procRank, evolvedVar, implicitVar, varCont, sTemplate, vData, normConst, coordProfile, tData, evalTermGroup, mbData, copyTermName)

General matrix term initialization routine

Arguments

Type IntentOptional Attributes Name
class(GeneralMatrixTerm), intent(inout) :: this
type(Grid), intent(in) :: gridObj

Grid object used to initialize stencil

type(Partition), intent(in) :: partitionObj

Parition object used to determine local number of DoF

type(Indexing), intent(in) :: indexingObj

Indexing object used to initialize matrix row data

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

Current processor rank

character(len=*), intent(in) :: evolvedVar

Name of evolved variable

character(len=*), intent(in) :: implicitVar

Name of implicit variable

type(VariableContainer), intent(in) :: varCont

Reference variable container

type(StencilTemplate), intent(inout) :: sTemplate

StencilTemplate used

type(VarData), intent(in), optional :: vData

Required variable names and powers

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

Normalization constant

type(CoordProfiles), intent(in), optional :: coordProfile

Multiplicative coordinate profiles (globally indexed)

type(TimeSignalData), intent(in), optional :: tData

Explicit time dependence

integer(kind=ik), intent(in), optional :: evalTermGroup

Optional term group of host model to evaluate and use as additional row variable

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

Optional modelbound data object used when initializing fixed stancil generators which might require it

character(len=*), intent(in), optional :: copyTermName

Name of the term whose values should be copied and multiplied with this term's stencil

module subroutine updateGeneralTerm(this, varCont, indexingData, modelData, hostModel)

Update general matrix term if using any modelbound data, updating stencil values, evaluating other terms, or if there is any explicit time dependence

Arguments

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

Variable container - used to update stencil values and signal

type(MatrixTermIndexingData), intent(in) :: indexingData
class(ModelboundData), intent(in), optional :: modelData

Model data used to retrieve modelbound variable

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

Host model - used to evaluate term group

pure module subroutine generalRow(this, varCont, rowVals, indexingData)

Multiplies all required variables and raises them to their corresponding power,using modelbound row variable buffer if allocated, and adding spatial and time profiles

Arguments

Type IntentOptional Attributes Name
class(GeneralMatrixTerm), intent(inout) :: this
type(VariableContainer), intent(in) :: varCont
real(kind=rk), intent(inout), dimension(:) :: rowVals
type(MatrixTermIndexingData), intent(in) :: indexingData

pure module subroutine generalCol(this, varCont, colVals, indexingData)

Multiplies all required variables and raises them to their corresponding power,using modelbound variable buffer if allocated

Arguments

Type IntentOptional Attributes Name
class(GeneralMatrixTerm), intent(inout) :: this
type(VariableContainer), intent(in) :: varCont
type(RealArray), intent(inout), dimension(:) :: colVals
type(MatrixTermIndexingData), intent(in) :: indexingData