Geometry-aware two-point vector and split-form divergence for 3-D.
The MappedDivergence routine follows the construction described in
Winters, Kopriva, Gassner, Hindenlang,
"Construction of Modern Robust Nodal Discontinuous Galerkin Spectral
Element Methods for the Compressible Navier-Stokes Equations",
Lecture Notes in Computational Science and Engineering, 2021.
The contravariant two-point flux in the r-th computational direction is
F~^r_{(i,n),j,k} = sum_d (Ja^r_d(i,j,k) + Ja^r_d(n,j,k))/2 * f^d_{(i,n),j,k}
and similarly for the xi^2 and xi^3 sums (averaging (i,j,k)-(i,n,k) and
(i,j,k)-(i,j,n) respectively). The physical divergence is
(1/J_{i,j,k}) * 2 * sum_n [ D_{n,i} F~^1 + D_{n,j} F~^2 + D_{n,k} F~^3 ]
interior(n,i,j,k,iEl,iVar,d) stores the physical-space two-point flux
f^d in the d-th physical direction.
Uses
module~~self_mappedtwopointvector_3d_t~~UsesGraph
module~self_mappedtwopointvector_3d_t
SELF_MappedTwoPointVector_3D_t
module~self_geometry_3d
SELF_Geometry_3D
module~self_mappedtwopointvector_3d_t->module~self_geometry_3d
module~self_constants
SELF_Constants
module~self_mappedtwopointvector_3d_t->module~self_constants
module~self_twopointvector_3d
SELF_TwoPointVector_3D
module~self_mappedtwopointvector_3d_t->module~self_twopointvector_3d
module~self_lagrange~3
SELF_Lagrange
module~self_mappedtwopointvector_3d_t->module~self_lagrange~3
iso_c_binding
iso_c_binding
module~self_mappedtwopointvector_3d_t->iso_c_binding
module~self_geometry_3d->module~self_constants
module~self_geometry_3d->module~self_lagrange~3
module~self_data
SELF_Data
module~self_geometry_3d->module~self_data
module~self_supportroutines
SELF_SupportRoutines
module~self_geometry_3d->module~self_supportroutines
module~self_vector_3d~2
SELF_Vector_3D
module~self_geometry_3d->module~self_vector_3d~2
module~self_tensor_3d
SELF_Tensor_3D
module~self_geometry_3d->module~self_tensor_3d
module~self_scalar_3d~2
SELF_Scalar_3D
module~self_geometry_3d->module~self_scalar_3d~2
module~self_mesh_3d~2
SELF_Mesh_3D
module~self_geometry_3d->module~self_mesh_3d~2
module~self_constants->iso_c_binding
iso_fortran_env
iso_fortran_env
module~self_constants->iso_fortran_env
module~self_twopointvector_3d_t
SELF_TwoPointVector_3D_t
module~self_twopointvector_3d->module~self_twopointvector_3d_t
module~self_lagrange~3->module~self_constants
module~self_lagrange~3->iso_c_binding
module~self_lagrange_t
SELF_Lagrange_t
module~self_lagrange~3->module~self_lagrange_t
module~self_lagrange~3->iso_fortran_env
module~self_data->module~self_constants
module~self_data->module~self_lagrange~3
module~self_data->iso_c_binding
module~self_hdf5
SELF_HDF5
module~self_data->module~self_hdf5
module~self_metadata
SELF_Metadata
module~self_data->module~self_metadata
HDF5
HDF5
module~self_data->HDF5
FEQParse
FEQParse
module~self_data->FEQParse
module~self_supportroutines->module~self_constants
module~self_supportroutines->iso_fortran_env
module~self_twopointvector_3d_t->module~self_constants
module~self_twopointvector_3d_t->module~self_lagrange~3
module~self_twopointvector_3d_t->iso_c_binding
module~self_twopointvector_3d_t->module~self_data
module~self_twopointvector_3d_t->module~self_metadata
module~self_twopointvector_3d_t->FEQParse
module~self_lagrange_t->module~self_constants
module~self_lagrange_t->iso_c_binding
module~self_lagrange_t->module~self_supportroutines
module~self_lagrange_t->iso_fortran_env
module~self_lagrange_t->module~self_hdf5
module~self_quadrature
SELF_Quadrature
module~self_lagrange_t->module~self_quadrature
module~self_lagrange_t->HDF5
module~self_vector_3d_t
SELF_Vector_3D_t
module~self_vector_3d~2->module~self_vector_3d_t
module~self_tensor_3d_t
SELF_Tensor_3D_t
module~self_tensor_3d->module~self_tensor_3d_t
module~self_scalar_3d~2->module~self_constants
module~self_scalar_3d~2->iso_c_binding
module~self_scalar_3d_t
SELF_Scalar_3D_t
module~self_scalar_3d~2->module~self_scalar_3d_t
module~self_mesh_3d_t
SELF_Mesh_3D_t
module~self_mesh_3d~2->module~self_mesh_3d_t
module~self_hdf5->module~self_constants
module~self_hdf5->iso_fortran_env
module~self_hdf5->HDF5
mpi
mpi
module~self_hdf5->mpi
module~self_metadata->module~self_hdf5
module~self_metadata->HDF5
module~self_vector_3d_t->module~self_constants
module~self_vector_3d_t->module~self_lagrange~3
module~self_vector_3d_t->iso_c_binding
module~self_vector_3d_t->module~self_data
module~self_vector_3d_t->module~self_hdf5
module~self_vector_3d_t->module~self_metadata
module~self_vector_3d_t->HDF5
module~self_vector_3d_t->FEQParse
module~self_tensor_3d_t->module~self_constants
module~self_tensor_3d_t->module~self_lagrange~3
module~self_tensor_3d_t->iso_c_binding
module~self_tensor_3d_t->module~self_data
module~self_tensor_3d_t->module~self_hdf5
module~self_tensor_3d_t->module~self_metadata
module~self_tensor_3d_t->HDF5
module~self_tensor_3d_t->FEQParse
module~self_scalar_3d_t->module~self_constants
module~self_scalar_3d_t->module~self_lagrange~3
module~self_scalar_3d_t->iso_c_binding
module~self_scalar_3d_t->module~self_data
module~self_scalar_3d_t->module~self_hdf5
module~self_scalar_3d_t->module~self_metadata
module~self_scalar_3d_t->HDF5
module~self_scalar_3d_t->FEQParse
module~self_mesh_3d_t->module~self_constants
module~self_mesh_3d_t->module~self_lagrange~3
module~self_mesh_3d_t->iso_c_binding
module~self_mesh_3d_t->module~self_supportroutines
module~self_mesh_3d_t->module~self_hdf5
module~self_mesh_3d_t->HDF5
module~self_mesh
SELF_Mesh
module~self_mesh_3d_t->module~self_mesh
module~self_domaindecomposition~2
SELF_DomainDecomposition
module~self_mesh_3d_t->module~self_domaindecomposition~2
module~self_quadrature->module~self_constants
module~self_quadrature->iso_fortran_env
module~self_mesh->module~self_constants
module~self_mesh->iso_c_binding
module~self_mesh->module~self_domaindecomposition~2
module~self_domaindecomposition_t
SELF_DomainDecomposition_t
module~self_domaindecomposition~2->module~self_domaindecomposition_t
module~self_domaindecomposition_t->module~self_constants
module~self_domaindecomposition_t->module~self_lagrange~3
module~self_domaindecomposition_t->iso_c_binding
module~self_domaindecomposition_t->module~self_supportroutines
module~self_domaindecomposition_t->mpi
Nodes of different colours represent the following:
Graph Key
Module
Module
Submodule
Submodule
Subroutine
Subroutine
Function
Function
Program
Program
This Page's Entity
This Page's Entity
Solid arrows point from a submodule to the (sub)module which it is
descended from. Dashed arrows point from a module or program unit to
modules which it uses. Where possible, edges connecting nodes are given different colours to make them easier to distinguish in large graphs.
Used by
module~~self_mappedtwopointvector_3d_t~~UsedByGraph
module~self_mappedtwopointvector_3d_t
SELF_MappedTwoPointVector_3D_t
module~self_mappedtwopointvector_3d~2
SELF_MappedTwoPointVector_3D
module~self_mappedtwopointvector_3d~2->module~self_mappedtwopointvector_3d_t
module~self_mappedtwopointvector_3d
SELF_MappedTwoPointVector_3D
module~self_mappedtwopointvector_3d->module~self_mappedtwopointvector_3d_t
module~self_ecdgmodel3d_t
SELF_ECDGModel3D_t
module~self_ecdgmodel3d_t->module~self_mappedtwopointvector_3d~2
module~self_ecadvection3d_t
SELF_ECAdvection3D_t
module~self_ecadvection3d_t->module~self_ecdgmodel3d_t
module~self_ecadvection3d
SELF_ECAdvection3D
module~self_ecadvection3d->module~self_ecdgmodel3d_t
module~self_ecadvection3d->module~self_ecadvection3d_t
module~self_ecdgmodel3d~2
SELF_ECDGModel3D
module~self_ecdgmodel3d~2->module~self_ecdgmodel3d_t
module~self_ecdgmodel3d
SELF_ECDGModel3D
module~self_ecdgmodel3d->module~self_ecdgmodel3d_t
module~self_ecadvection3d~2
SELF_ECAdvection3D
module~self_ecadvection3d~2->module~self_ecadvection3d_t
Nodes of different colours represent the following:
Graph Key
Module
Module
Submodule
Submodule
Subroutine
Subroutine
Function
Function
Program
Program
This Page's Entity
This Page's Entity
Solid arrows point from a submodule to the (sub)module which it is
descended from. Dashed arrows point from a module or program unit to
modules which it uses. Where possible, edges connecting nodes are given different colours to make them easier to distinguish in large graphs.
Derived Types
Components
Type Visibility Attributes Name Initial
integer,
public ::
M
integer,
public ::
N
character(len=3),
public ::
backend = "cpu"
type(EquationParser),
public, allocatable ::
eqn (:)
type(SEMHex ),
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 (:)
integer,
public ::
nElem
integer,
public ::
nVar
Type-Bound Procedures
procedure, public :: AssociateGeometry => AssociateGeometry_MappedTwoPointVector3D_t
procedure, public :: DissociateGeometry => DissociateGeometry_MappedTwoPointVector3D_t
generic, public :: Divergence => Divergence_TwoPointVector3D_t
procedure, public :: Free => Free_TwoPointVector3D_t
procedure, public :: Init => Init_TwoPointVector3D_t
generic, public :: MappedDivergence => MappedDivergence_MappedTwoPointVector3D_t
procedure, private :: MappedDivergence_MappedTwoPointVector3D_t
procedure, public :: SetDescription => SetDescription_DataObj
generic, public :: SetEquation => SetEquation_DataObj
procedure, public :: SetName => SetName_DataObj
procedure, public :: SetUnits => SetUnits_DataObj
procedure, public :: UpdateDevice => UpdateDevice_TwoPointVector3D_t
procedure, public :: UpdateHost => UpdateHost_TwoPointVector3D_t
Subroutines
Computes the physical-space divergence of a 3-D split-form vector field
on a curvilinear mesh.
Read more…
Arguments
Type Intent Optional Attributes Name
class(MappedTwoPointVector3D_t ),
intent(in)
::
this
real(kind=prec),
intent(out)
::
df (1:this%N+1,1:this%N+1,1:this%N+1,1:this%nElem,1:this%nVar)