Init_ECDGModel3D_t Subroutine

public subroutine Init_ECDGModel3D_t(this, mesh, geometry)

Arguments

TypeIntentOptionalAttributesName
class(ECDGModel3D_t), intent(out) :: this
type(Mesh3D), intent(in), target:: mesh
type(SEMHex), intent(in), target:: geometry

Calls

proc~~init_ecdgmodel3d_t~~CallsGraph proc~init_ecdgmodel3d_t Init_ECDGModel3D_t proc~init_dgmodel3d_t Init_DGModel3D_t proc~init_ecdgmodel3d_t->proc~init_dgmodel3d_t

Called by

proc~~init_ecdgmodel3d_t~~CalledByGraph proc~init_ecdgmodel3d_t Init_ECDGModel3D_t proc~init_ecadvection3d Init_ECAdvection3D proc~init_ecadvection3d->proc~init_ecdgmodel3d_t proc~init_esatmo3d Init_ESAtmo3D proc~init_esatmo3d->proc~init_ecdgmodel3d_t

Contents

Source Code


Source Code

  subroutine Init_ECDGModel3D_t(this,mesh,geometry)
    implicit none
    class(ECDGModel3D_t),intent(out) :: this
    type(Mesh3D),intent(in),target :: mesh
    type(SEMHex),intent(in),target :: geometry

    ! The entropy-conserving split form requires entropy-stable mortar operators at
    ! nonconforming interfaces. They are implemented for anisotropic (2-subface) faces
    ! only; the plain L2 projection of a 2x2 mortar would break the provable entropy
    ! estimate.
    if(mesh%nMortars > 0) then
      print*,__FILE__,' : Error : EC-DGSEM models do not support 2x2 nonconforming (mortar) faces.'
      error stop 1
    endif

#ifdef ENABLE_GPU
    ! The entropy-stable mortar coupling (ECMortarFlux) runs on the host and uses the
    ! host two-point flux; the GPU tendency has no device version of it yet.
    if(mesh%nAnisoMortars > 0) then
      print*,__FILE__,' : Error : EC-DGSEM models on GPU do not support anisotropic mortar faces yet.'
      error stop 1
    endif
#endif

    call Init_DGModel3D_t(this,mesh,geometry)

    call this%twoPointFlux%Init(geometry%x%interp,this%nvar,mesh%nElem)
    call this%twoPointFlux%AssociateGeometry(geometry)

    if(mesh%nAnisoMortars > 0) then
      call this%mortarNormal%Init(geometry%x%interp,3,mesh%nElem)
      call this%mortarNormal%AssociateGeometry(geometry)
      this%mortarNormalReady = .true.
    endif

  endsubroutine Init_ECDGModel3D_t