| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(ECDGModel3D_t), | intent(out) | :: | this | |||
| type(Mesh3D), | intent(in), | target | :: | mesh | ||
| type(SEMHex), | intent(in), | target | :: | geometry |
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