MappedVector2D_t Derived Type

type, public, extends(Vector2D) :: MappedVector2D_t


Inherits

type~~mappedvector2d_t~~InheritsGraph type~mappedvector2d_t MappedVector2D_t type~semquad SEMQuad type~mappedvector2d_t->type~semquad geometry type~vector2d Vector2D type~mappedvector2d_t->type~vector2d type~semquad->type~vector2d x, nHat type~tensor2d Tensor2D type~semquad->type~tensor2d dxds, dsdx type~scalar2d Scalar2D type~semquad->type~scalar2d nScale, J type~vector2d_t Vector2D_t type~vector2d->type~vector2d_t type~tensor2d_t Tensor2D_t type~tensor2d->type~tensor2d_t type~self_dataobj SELF_DataObj type~vector2d_t->type~self_dataobj type~scalar2d_t Scalar2D_t type~scalar2d->type~scalar2d_t type~tensor2d_t->type~self_dataobj type~lagrange Lagrange type~self_dataobj->type~lagrange interp EquationParser EquationParser type~self_dataobj->EquationParser eqn type~metadata Metadata type~self_dataobj->type~metadata meta type~scalar2d_t->type~self_dataobj type~lagrange_t Lagrange_t type~lagrange->type~lagrange_t

Inherited by

type~~mappedvector2d_t~~InheritedByGraph type~mappedvector2d_t MappedVector2D_t type~mappedvector2d MappedVector2D type~mappedvector2d->type~mappedvector2d_t type~mappedvector2d~2 MappedVector2D type~mappedvector2d~2->type~mappedvector2d_t type~dgmodel2d_t DGModel2D_t type~dgmodel2d_t->type~mappedvector2d solutionGradient, flux type~esatmo2d_t ESAtmo2D_t type~esatmo2d_t->type~mappedvector2d diffFlux type~ecdgmodel2d ECDGModel2D type~esatmo2d_t->type~ecdgmodel2d type~dgmodel2d DGModel2D type~dgmodel2d->type~dgmodel2d_t type~esatmo2d~2 ESAtmo2D type~esatmo2d~2->type~esatmo2d_t type~dgmodel2d~2 DGModel2D type~dgmodel2d~2->type~dgmodel2d_t type~esatmo2d ESAtmo2D type~esatmo2d->type~esatmo2d_t type~ecdgmodel2d_t ECDGModel2D_t type~ecdgmodel2d_t->type~dgmodel2d type~nulldgmodel2d_t NullDGModel2D_t type~nulldgmodel2d_t->type~dgmodel2d type~advection_diffusion_2d_t advection_diffusion_2d_t type~advection_diffusion_2d_t->type~dgmodel2d type~lineareuler2d_t LinearEuler2D_t type~lineareuler2d_t->type~dgmodel2d type~linearshallowwater2d_t LinearShallowWater2D_t type~linearshallowwater2d_t->type~dgmodel2d type~ecdgmodel2d->type~ecdgmodel2d_t type~ecdgmodel2d~2 ECDGModel2D type~ecdgmodel2d~2->type~ecdgmodel2d_t type~nulldgmodel2d~2 NullDGModel2D type~nulldgmodel2d~2->type~nulldgmodel2d_t type~lineareuler2d LinearEuler2D type~lineareuler2d->type~lineareuler2d_t type~lineareuler2d~2 LinearEuler2D type~lineareuler2d~2->type~lineareuler2d_t type~linearshallowwater2d LinearShallowWater2D type~linearshallowwater2d->type~linearshallowwater2d_t type~linearshallowwater2d~2 LinearShallowWater2D type~linearshallowwater2d~2->type~linearshallowwater2d_t type~advection_diffusion_2d advection_diffusion_2d type~advection_diffusion_2d->type~advection_diffusion_2d_t type~nulldgmodel2d NullDGModel2D type~nulldgmodel2d->type~nulldgmodel2d_t type~advection_diffusion_2d~2 advection_diffusion_2d type~advection_diffusion_2d~2->type~advection_diffusion_2d_t type~lineareuler2d_pml_t LinearEuler2D_PML_t type~lineareuler2d_pml_t->type~lineareuler2d_t type~ecadvection2d_t ECAdvection2D_t type~ecadvection2d_t->type~ecdgmodel2d type~lineareuler2d_pml LinearEuler2D_PML type~lineareuler2d_pml->type~lineareuler2d_pml_t type~lineareuler2d_pml~2 LinearEuler2D_PML type~lineareuler2d_pml~2->type~lineareuler2d_pml_t type~ecadvection2d ECAdvection2D type~ecadvection2d->type~ecadvection2d_t type~ecadvection2d~2 ECAdvection2D type~ecadvection2d~2->type~ecadvection2d_t

Contents

Source Code


Components

TypeVisibilityAttributesNameInitial
integer, public :: M
integer, public :: N
real(kind=prec), public, pointer, contiguous, dimension(:,:,:,:,:):: avgBoundary
character(len=3), public :: backend ="cpu"
real(kind=prec), public, pointer, contiguous, dimension(:,:,:,:,:):: boundary
real(kind=prec), public, pointer, contiguous, dimension(:,:,:,:):: boundaryNormal
type(EquationParser), public, allocatable:: eqn(:)
real(kind=prec), public, pointer, contiguous, dimension(:,:,:,:,:):: extBoundary
type(SEMQuad), public, pointer:: geometry=> null()
logical, public :: geometry_associated =.false.
real(kind=prec), public, pointer, contiguous, dimension(:,:,:,:,:):: interior
type(Lagrange), public, pointer:: interp
type(Metadata), public, allocatable:: meta(:)
real(kind=prec), public, allocatable, dimension(:,:,:,:,:):: mortarBuff
integer, public :: nElem
integer, public :: nVar

Type-Bound Procedures

procedure, private :: ApplyFlip => ApplyFlip_MappedVector2D_t

procedure, public :: AssociateGeometry => AssociateGeometry_MappedVector2D_t

procedure, public :: AverageSides => AverageSides_Vector2D_t

procedure, public :: BoundaryInterp => BoundaryInterp_Vector2D_t

procedure, public :: DissociateGeometry => DissociateGeometry_MappedVector2D_t

generic, public :: Divergence => Divergence_Vector2D_t

  • public subroutine Divergence_Vector2D_t(this, df)

    Arguments

    TypeIntentOptionalAttributesName
    class(Vector2D_t), intent(in) :: this
    real(kind=prec) :: df(1:this%N+1,1:this%N+1,1:this%nelem,1:this%nvar)

procedure, public :: Free => Free_Vector2D_t

  • public subroutine Free_Vector2D_t(this)

    Arguments

    TypeIntentOptionalAttributesName
    class(Vector2D_t), intent(inout) :: this

generic, public :: Gradient => Gradient_Vector2D_t

  • public subroutine Gradient_Vector2D_t(this, df)

    Arguments

    TypeIntentOptionalAttributesName
    class(Vector2D_t), intent(in) :: this
    real(kind=prec), intent(out) :: df(1:this%N+1,1:this%N+1,1:this%nelem,1:this%nvar,1:2,1:2)

generic, public :: GridInterp => GridInterp_Vector2D_t

  • public subroutine GridInterp_Vector2D_t(this, f)

    Arguments

    TypeIntentOptionalAttributesName
    class(Vector2D_t), intent(in) :: this
    real(kind=prec), intent(out) :: f(1:this%M+1,1:this%M+1,1:this%nelem,1:this%nvar,1:2)

procedure, public :: Init => Init_Vector2D_t

  • public subroutine Init_Vector2D_t(this, interp, nVar, nElem)

    Arguments

    TypeIntentOptionalAttributesName
    class(Vector2D_t), intent(out) :: this
    type(Lagrange), intent(in), target:: interp
    integer, intent(in) :: nVar
    integer, intent(in) :: nElem

procedure, private :: MPIExchangeAsync => MPIExchangeAsync_MappedVector2D_t

procedure, private :: MPIMortarExchangeAsync => MPIMortarExchangeAsync_MappedVector2D_t

  • public subroutine MPIMortarExchangeAsync_MappedVector2D_t(this, mesh)

    Vector analogue of the scalar mortar exchange message posting; each physical direction of each variable is exchanged as its own message.

    Arguments

    TypeIntentOptionalAttributesName
    class(MappedVector2D_t), intent(inout) :: this
    type(Mesh2D), intent(inout) :: mesh

procedure, private :: MPIMortarFluxAsync => MPIMortarFluxAsync_MappedVector2D_t

  • public subroutine MPIMortarFluxAsync_MappedVector2D_t(this, mesh)

    Posts the one-directional messages for MortarFluxCollect : each remote small side sends its boundaryNormal trace to the big side's rank.

    Arguments

    TypeIntentOptionalAttributesName
    class(MappedVector2D_t), intent(inout) :: this
    type(Mesh2D), intent(inout) :: mesh

generic, public :: MappedDGDivergence => MappedDGDivergence_MappedVector2D_t

  • public subroutine MappedDGDivergence_MappedVector2D_t(this, df)

    Computes the divergence of a 2-D vector using the weak form On input, the attribute of the vector is assigned and the attribute is set to the physical directions of the vector. This method will project the vector onto the contravariant basis vectors.

    Arguments

    TypeIntentOptionalAttributesName
    class(MappedVector2D_t), intent(in) :: this
    real(kind=prec) :: df(1:this%N+1,1:this%N+1,1:this%nelem,1:this%nvar)

procedure, private :: MappedDGDivergence_MappedVector2D_t

  • public subroutine MappedDGDivergence_MappedVector2D_t(this, df)

    Computes the divergence of a 2-D vector using the weak form On input, the attribute of the vector is assigned and the attribute is set to the physical directions of the vector. This method will project the vector onto the contravariant basis vectors.

    Arguments

    TypeIntentOptionalAttributesName
    class(MappedVector2D_t), intent(in) :: this
    real(kind=prec) :: df(1:this%N+1,1:this%N+1,1:this%nelem,1:this%nvar)

generic, public :: MappedDivergence => MappedDivergence_MappedVector2D_t

procedure, private :: MappedDivergence_MappedVector2D_t

procedure, public :: MortarExchange => MortarExchange_MappedVector2D_t

  • public subroutine MortarExchange_MappedVector2D_t(this, mesh)

    Fills the extBoundary attribute on all sides participating in a 2:1 nonconforming (mortar) interface; vector analogue of the scalar MortarExchange (see MappedScalar2D_t for the algorithm description).

    Arguments

    TypeIntentOptionalAttributesName
    class(MappedVector2D_t), intent(inout) :: this
    type(Mesh2D), intent(inout) :: mesh

procedure, public :: MortarFluxCollect => MortarFluxCollect_MappedVector2D_t

  • public subroutine MortarFluxCollect_MappedVector2D_t(this, mesh)

    Replaces the big-side boundaryNormal trace on each mortar interface with the L2 projection of the two small sides' boundaryNormal traces.

    Read more…

    Arguments

    TypeIntentOptionalAttributesName
    class(MappedVector2D_t), intent(inout) :: this
    type(Mesh2D), intent(inout) :: mesh

procedure, public :: SetDescription => SetDescription_DataObj

  • public subroutine SetDescription_DataObj(this, ivar, description)

    Set the description of the ivar-th variable

    Arguments

    TypeIntentOptionalAttributesName
    class(SELF_DataObj), intent(inout) :: this
    integer, intent(in) :: ivar
    character, intent(in) :: description

generic, public :: SetEquation => SetEquation_DataObj, SetEquation_Vector2D_t

  • public subroutine SetEquation_DataObj(this, ivar, eqnChar)

    Sets the equation parser for the ivar-th variable

    Arguments

    TypeIntentOptionalAttributesName
    class(SELF_DataObj), intent(inout) :: this
    integer, intent(in) :: ivar
    character, intent(in) :: eqnChar
  • public subroutine SetEquation_Vector2D_t(this, idir, ivar, eqnChar)

    Sets the equation parser for the idir direction and ivar-th variable

    Arguments

    TypeIntentOptionalAttributesName
    class(Vector2D_t), intent(inout) :: this
    integer, intent(in) :: idir
    integer, intent(in) :: ivar
    character, intent(in) :: eqnChar

procedure, public :: SetInteriorFromEquation => SetInteriorFromEquation_MappedVector2D_t

  • public subroutine SetInteriorFromEquation_MappedVector2D_t(this, geometry, time)

    Sets the this % interior attribute using the eqn attribute, geometry (for physical positions), and provided simulation time.

    Arguments

    TypeIntentOptionalAttributesName
    class(MappedVector2D_t), intent(inout) :: this
    type(SEMQuad), intent(in) :: geometry
    real(kind=prec), intent(in) :: time

procedure, public :: SetName => SetName_DataObj

  • public subroutine SetName_DataObj(this, ivar, name)

    Set the name of the ivar-th variable

    Arguments

    TypeIntentOptionalAttributesName
    class(SELF_DataObj), intent(inout) :: this
    integer, intent(in) :: ivar
    character, intent(in) :: name

procedure, public :: SetUnits => SetUnits_DataObj

  • public subroutine SetUnits_DataObj(this, ivar, units)

    Set the units of the ivar-th variable

    Arguments

    TypeIntentOptionalAttributesName
    class(SELF_DataObj), intent(inout) :: this
    integer, intent(in) :: ivar
    character, intent(in) :: units

procedure, public :: SideExchange => SideExchange_MappedVector2D_t

procedure, public :: UpdateDevice => UpdateDevice_Vector2D_t

procedure, public :: UpdateHost => UpdateHost_Vector2D_t

generic, public :: WriteHDF5 => WriteHDF5_MPI_Vector2D_t, WriteHDF5_Vector2D_t

  • public subroutine WriteHDF5_MPI_Vector2D_t(this, fileId, group, elemoffset, nglobalelem)

    Arguments

    TypeIntentOptionalAttributesName
    class(Vector2D_t), intent(in) :: this
    integer(kind=HID_T), intent(in) :: fileId
    character, intent(in) :: group
    integer, intent(in) :: elemoffset
    integer, intent(in) :: nglobalelem
  • public subroutine WriteHDF5_Vector2D_t(this, fileId, group)

    Arguments

    TypeIntentOptionalAttributesName
    class(Vector2D_t), intent(in) :: this
    integer(kind=HID_T), intent(in) :: fileId
    character, intent(in) :: group

Source Code

  type,extends(Vector2D),public :: MappedVector2D_t
    logical :: geometry_associated = .false.
    type(SEMQuad),pointer :: geometry => null()

    ! Mortar exchange work array, allocated on first use for meshes with 2:1
    ! nonconforming interfaces; same slot layout as MappedScalar2D_t%mortarBuff with a
    ! trailing physical-direction index. MortarFluxCollect reuses slots 3 and 4 at
    ! idir=1 to stage the small sides' boundaryNormal traces.
    real(prec),allocatable,dimension(:,:,:,:,:) :: mortarBuff

  contains

    procedure,public :: AssociateGeometry => AssociateGeometry_MappedVector2D_t
    procedure,public :: DissociateGeometry => DissociateGeometry_MappedVector2D_t

    procedure,public :: SideExchange => SideExchange_MappedVector2D_t
    procedure,public :: MortarExchange => MortarExchange_MappedVector2D_t
    procedure,public :: MortarFluxCollect => MortarFluxCollect_MappedVector2D_t
    procedure,private :: MPIMortarExchangeAsync => MPIMortarExchangeAsync_MappedVector2D_t
    procedure,private :: MPIMortarFluxAsync => MPIMortarFluxAsync_MappedVector2D_t

    generic,public :: MappedDivergence => MappedDivergence_MappedVector2D_t
    procedure,private :: MappedDivergence_MappedVector2D_t

    generic,public :: MappedDGDivergence => MappedDGDivergence_MappedVector2D_t
    procedure,private :: MappedDGDivergence_MappedVector2D_t

    procedure,private :: MPIExchangeAsync => MPIExchangeAsync_MappedVector2D_t
    procedure,private :: ApplyFlip => ApplyFlip_MappedVector2D_t

    procedure,public :: SetInteriorFromEquation => SetInteriorFromEquation_MappedVector2D_t

  endtype MappedVector2D_t