| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| 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 | High-water-mark backing store for the arrays above (AMR Stage 6b; see SELF_DataPool). The public members are pointers remapped onto the leading part of these pools at the exact logical shape, so every extent, stride and shape() is unchanged while Resize can reuse the storage across an adaptation epoch. Nothing should index the pools directly. |
||
| type(EquationParser), | public, | allocatable | :: | eqn(:) | |||
| real(kind=prec), | public, | pointer, contiguous, dimension(:,:,:,:,:,:) | :: | extBoundary | |||
| 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(:) | |||
| real(kind=prec), | public, | allocatable, dimension(:,:,:,:,:,:) | :: | mortarBuff | |||
| integer, | public | :: | nElem | ||||
| integer, | public | :: | nVar | ||||
| real(kind=prec), | public, | pointer, contiguous | :: | pool_avgBoundary(:) | => | null() | |
| real(kind=prec), | public, | pointer, contiguous | :: | pool_boundary(:) | => | null() | |
| real(kind=prec), | public, | pointer, contiguous | :: | pool_boundaryNormal(:) | => | null() | |
| real(kind=prec), | public, | pointer, contiguous | :: | pool_extBoundary(:) | => | null() | |
| real(kind=prec), | public, | pointer, contiguous | :: | pool_interior(:) | => | null() |
| procedure, private :: ApplyFlip => ApplyFlip_MappedVector3D_t | |
| procedure, public :: AssociateGeometry => AssociateGeometry_MappedVector3D_t | |
| procedure, public :: AverageSides => AverageSides_Vector3D_t | |
| procedure, public :: BoundaryInterp => BoundaryInterp_Vector3D_t | |
| generic, public :: Curl => Curl_Vector3D_t | |
| procedure, public :: DissociateGeometry => DissociateGeometry_MappedVector3D_t | |
| generic, public :: Divergence => Divergence_Vector3D_t | |
| procedure, public :: Free => Free_Vector3D_t | |
| generic, public :: Gradient => Gradient_Vector3D_t | |
| generic, public :: GridInterp => GridInterp_Vector3D_t | |
| procedure, public :: Init => Init_Vector3D_t | |
| procedure, private :: MPIExchangeAsync => MPIExchangeAsync_MappedVector3D_t | |
| procedure, private :: MPIMortarExchangeAsync => MPIMortarExchangeAsync_MappedVector3D_t | |
| procedure, private :: MPIMortarFluxAsync => MPIMortarFluxAsync_MappedVector3D_t | |
| procedure, public :: MapArrays => MapArrays_Vector3D_t | |
| generic, public :: MappedDGDivergence => MappedDGDivergence_MappedVector3D_t | |
| procedure, private :: MappedDGDivergence_MappedVector3D_t | |
| generic, public :: MappedDivergence => MappedDivergence_MappedVector3D_t | |
| procedure, private :: MappedDivergence_MappedVector3D_t | |
| procedure, public :: MortarExchange => MortarExchange_MappedVector3D_t | |
| procedure, public :: MortarFluxCollect => MortarFluxCollect_MappedVector3D_t | |
| procedure, public :: Resize => Resize_MappedVector3D_t | |
| procedure, public :: SetDescription => SetDescription_DataObj | |
| generic, public :: SetEquation => SetEquation_DataObj, SetEquation_Vector3D_t | |
| procedure, public :: SetInteriorFromEquation => SetInteriorFromEquation_MappedVector3D_t | |
| procedure, public :: SetName => SetName_DataObj | |
| procedure, public :: SetUnits => SetUnits_DataObj | |
| procedure, public :: SideExchange => SideExchange_MappedVector3D_t | |
| procedure, public :: UpdateDevice => UpdateDevice_Vector3D_t | |
| procedure, public :: UpdateHost => UpdateHost_Vector3D_t | |
| generic, public :: WriteHDF5 => WriteHDF5_MPI_Vector3D_t, WriteHDF5_Vector3D_t |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(MappedVector3D_t), | intent(inout) | :: | this | |||
| type(Mesh3D), | intent(inout) | :: | mesh |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(MappedVector3D_t), | intent(inout) | :: | this | |||
| type(SEMHex), | intent(in), | target | :: | geometry |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(MappedVector3D_t), | intent(inout) | :: | this |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(MappedVector3D_t), | intent(inout) | :: | this | |||
| type(Mesh3D), | intent(inout) | :: | mesh |
Posts the point-to-point messages required for mortar interfaces whose big and small elements reside on different ranks; vector analogue of the scalar MPIMortarExchangeAsync with one message per direction component.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(MappedVector3D_t), | intent(inout) | :: | this | |||
| type(Mesh3D), | intent(inout) | :: | mesh |
Posts the one-directional messages for MortarFluxCollect : each remote small face sends its boundaryNormal trace to the big face's rank.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(MappedVector3D_t), | intent(inout) | :: | this | |||
| type(Mesh3D), | intent(inout) | :: | mesh |
Computes the divergence of a 3-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.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(MappedVector3D_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) |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(MappedVector3D_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) |
Fills the extBoundary attribute on all faces participating in a 2:1 nonconforming (mortar) interface; vector analogue of the scalar MortarExchange (see MappedScalar3D_t for the algorithm description).
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(MappedVector3D_t), | intent(inout) | :: | this | |||
| type(Mesh3D), | intent(inout) | :: | mesh |
Replaces the big-face boundaryNormal trace on each mortar interface with the L2 projection of the four small faces' boundaryNormal traces.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(MappedVector3D_t), | intent(inout) | :: | this | |||
| type(Mesh3D), | intent(inout) | :: | mesh |
Rebind to a new element count, reusing storage where it fits (AMR Stage 6b). See Resize_MappedScalar3D_t for why the mortar staging buffer is invalidated rather than resized.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(MappedVector3D_t), | intent(inout) | :: | this | |||
| type(Lagrange), | intent(in), | target | :: | interp | ||
| integer, | intent(in) | :: | nVar | |||
| integer, | intent(in) | :: | nElem |
Sets the this % interior attribute using the eqn attribute, geometry (for physical positions), and provided simulation time.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(MappedVector3D_t), | intent(inout) | :: | this | |||
| type(SEMHex), | intent(in) | :: | geometry | |||
| real(kind=prec), | intent(in) | :: | time |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(MappedVector3D_t), | intent(inout) | :: | this | |||
| type(Mesh3D), | intent(inout) | :: | mesh |