FE-Project
Loading...
Searching...
No Matches
scale_element_base::elementbase3d Type Reference

Derived type representing a 3D reference element. More...

Inheritance diagram for scale_element_base::elementbase3d:
scale_element_base::elementbase scale_element_hexahedral::hexahedralelement

Public Member Functions

procedure generate_l2projmat (elem, elem_in, l2projmat)
 Generate a projection matrix for L2 projection. This matrix maps nodal values on elem_in to nodal values on elem. It is intended for p-restriction, i.e. elem order <= elem_in order.
procedure generate_interpmat (elem, elem_in, interpmat)
 Generate an interpolation matrix by p-prolongation. This matrix maps nodal values on elem_in to nodal values on elem. It is intended for p-prolongation, i.e. elem order >= elem_in order.
procedure generate_modaltruncationmat (elem, polyorder_h_tr, polyorder_v_tr, truncatemat)
 Generate a nodal-to-nodal transfer matrix to remove several high modes.
Public Member Functions inherited from scale_element_base::elementbase
procedure islumpedmatrix (elem)
 Get a flag whether the lumped mass matrix is used.

Public Attributes

integer polyorder_h
 Polynomial order with the horizontal direction.
integer nnode_h1d
 Number of nodes along the horizontal coordinate.
integer nfaces_h
 Number of nodes on an horizontal face of the reference element.
integer nfp_h
 Number of horizontal faces of the reference element.
integer, dimension(:,:), allocatable fmask_h
 Array saving indices to extract nodal values on the horizontal faces.
integer polyorder_v
 Polynomial order with the vertical direction.
integer nnode_v
 Number of nodes along the vertical coordinate.
integer nfaces_v
 Number of nodes on an vertical face of the reference element.
integer nfp_v
 Number of vertical faces of the reference element.
integer, dimension(:,:), allocatable fmask_v
 Array saving indices to extract nodal values on the vertical faces.
integer, dimension(:,:), allocatable colmask
 Array saving indices to extract nodal values on the vertical columns.
integer, dimension(:,:), allocatable hslice
 Array saving indices to extract nodal values on the horizontal plane.
integer, dimension(:), allocatable indexh2dto3d
 Array saving indices to expand 2D horizontal nodal values into the 3D nodal values.
integer, dimension(:), allocatable indexh2dto3d_bnd
 Array saving indices to expand 2D horizontal nodal values into the 3D nodal values on element faces.
integer, dimension(:), allocatable indexz1dto3d
 Array saving indices to expand 1D vertical nodal values into the 3D nodal values.
real(rp), dimension(:), allocatable x1
 Array saving x1-coordinate of nodes within the reference element.
real(rp), dimension(:), allocatable x2
 Array saving x2-coordinate of nodes within the reference element.
real(rp), dimension(:), allocatable x3
 Array saving x3-coordinate of nodes within the reference element.
real(rp), dimension(:,:), allocatable dx1
 Elementwise differential matrix for the x1-coordinate direction (Dx1 = M^-1 Sx1)
real(rp), dimension(:,:), allocatable dx2
 Elementwise differential matrix for the x2-coordinate direction (Dx2 = M^-1 Sx2)
real(rp), dimension(:,:), allocatable dx3
 Elementwise differential matrix for the x3-coordinate direction (Dx3 = M^-1 Sx3)
real(rp), dimension(:,:), allocatable sx1
 Elementwise stiffness matrix for the x1-coordinate direction.
real(rp), dimension(:,:), allocatable sx2
 Elementwise stiffness matrix for the x2-coordinate direction.
real(rp), dimension(:,:), allocatable sx3
 Elementwise stiffness matrix for the x3-coordinate direction.
Public Attributes inherited from scale_element_base::elementbase
integer np
 Number of nodes within an element.
integer nfaces
 Number of faces.
integer nfptot
 Total number of nodes on faces.
integer nv
 Number of vertices with an element.
real(rp), dimension(:,:), allocatable v
 The Vandermonde matrix (V) whose size is Np x Np.
real(rp), dimension(:,:), allocatable invv
 Inversion of the Vandermonde matrix (V^-1) whose size is Np x Np.
real(rp), dimension(:,:), allocatable m
 Mass matrix (M) whose size is Np x Np.
real(rp), dimension(:,:), allocatable invm
 Inversion of the mass matrix (M^-1) whose size Np x NP.
real(rp), dimension(:,:), allocatable lift
 Lifting matrix with element boundary integrals whose size Np x NfpTot.
real(rp), dimension(:), allocatable intweight_lgl
 Weights of gaussian quadrature with the LGL nodes.

Detailed Description

Derived type representing a 3D reference element.

Definition at line 111 of file scale_element_base.F90.

Member Function/Subroutine Documentation

◆ generate_l2projmat()

procedure scale_element_base::elementbase3d::generate_l2projmat ( class(elementbase3d), intent(in) elem,
class(elementbase3d), intent(in) elem_in,
real(rp), dimension(elem%np,elem_in%np), intent(out) l2projmat )

Generate a projection matrix for L2 projection. This matrix maps nodal values on elem_in to nodal values on elem. It is intended for p-restriction, i.e. elem order <= elem_in order.

With an orthogonal Legendre modal basis, this corresponds to L2 projection onto the polynomial space represented by elem.

Definition at line 142 of file scale_element_base.F90.

◆ generate_interpmat()

procedure scale_element_base::elementbase3d::generate_interpmat ( class(elementbase3d), intent(in) elem,
class(elementbase3d), intent(in) elem_in,
real(rp), dimension(elem%np,elem_in%np), intent(out) interpmat )

Generate an interpolation matrix by p-prolongation. This matrix maps nodal values on elem_in to nodal values on elem. It is intended for p-prolongation, i.e. elem order >= elem_in order.

In Legendre modal space, higher modes not present in elem_in are set to zero.

Definition at line 143 of file scale_element_base.F90.

◆ generate_modaltruncationmat()

procedure scale_element_base::elementbase3d::generate_modaltruncationmat ( class(elementbase3d), intent(in) elem,
integer, intent(in) polyorder_h_tr,
integer, intent(in) polyorder_v_tr,
real(rp), dimension(elem%np,elem%np), intent(out) truncatemat )

Generate a nodal-to-nodal transfer matrix to remove several high modes.

Definition at line 144 of file scale_element_base.F90.

References scale_element_base::elementbase3d_final(), and scale_element_base::elementbase3d_init().

Member Data Documentation

◆ polyorder_h

integer scale_element_base::elementbase3d::polyorder_h

Polynomial order with the horizontal direction.

Definition at line 112 of file scale_element_base.F90.

112 integer :: PolyOrder_h !< Polynomial order with the horizontal direction

◆ nnode_h1d

integer scale_element_base::elementbase3d::nnode_h1d

Number of nodes along the horizontal coordinate.

Definition at line 113 of file scale_element_base.F90.

113 integer :: Nnode_h1D !< Number of nodes along the horizontal coordinate

◆ nfaces_h

integer scale_element_base::elementbase3d::nfaces_h

Number of nodes on an horizontal face of the reference element.

Definition at line 114 of file scale_element_base.F90.

114 integer :: Nfaces_h !< Number of nodes on an horizontal face of the reference element

◆ nfp_h

integer scale_element_base::elementbase3d::nfp_h

Number of horizontal faces of the reference element.

Definition at line 115 of file scale_element_base.F90.

115 integer :: Nfp_h !< Number of horizontal faces of the reference element

◆ fmask_h

integer, dimension(:,:), allocatable scale_element_base::elementbase3d::fmask_h

Array saving indices to extract nodal values on the horizontal faces.

Definition at line 116 of file scale_element_base.F90.

116 integer, allocatable :: Fmask_h(:,:) !< Array saving indices to extract nodal values on the horizontal faces

◆ polyorder_v

integer scale_element_base::elementbase3d::polyorder_v

Polynomial order with the vertical direction.

Definition at line 118 of file scale_element_base.F90.

118 integer :: PolyOrder_v !< Polynomial order with the vertical direction

◆ nnode_v

integer scale_element_base::elementbase3d::nnode_v

Number of nodes along the vertical coordinate.

Definition at line 119 of file scale_element_base.F90.

119 integer :: Nnode_v !< Number of nodes along the vertical coordinate

◆ nfaces_v

integer scale_element_base::elementbase3d::nfaces_v

Number of nodes on an vertical face of the reference element.

Definition at line 120 of file scale_element_base.F90.

120 integer :: Nfaces_v !< Number of nodes on an vertical face of the reference element

◆ nfp_v

integer scale_element_base::elementbase3d::nfp_v

Number of vertical faces of the reference element.

Definition at line 121 of file scale_element_base.F90.

121 integer :: Nfp_v !< Number of vertical faces of the reference element

◆ fmask_v

integer, dimension(:,:), allocatable scale_element_base::elementbase3d::fmask_v

Array saving indices to extract nodal values on the vertical faces.

Definition at line 122 of file scale_element_base.F90.

122 integer, allocatable :: Fmask_v(:,:) !< Array saving indices to extract nodal values on the vertical faces

◆ colmask

integer, dimension(:,:), allocatable scale_element_base::elementbase3d::colmask

Array saving indices to extract nodal values on the vertical columns.

Definition at line 124 of file scale_element_base.F90.

124 integer, allocatable :: Colmask(:,:) !< Array saving indices to extract nodal values on the vertical columns

◆ hslice

integer, dimension(:,:), allocatable scale_element_base::elementbase3d::hslice

Array saving indices to extract nodal values on the horizontal plane.

Definition at line 125 of file scale_element_base.F90.

125 integer, allocatable :: Hslice(:,:) !< Array saving indices to extract nodal values on the horizontal plane

◆ indexh2dto3d

integer, dimension(:), allocatable scale_element_base::elementbase3d::indexh2dto3d

Array saving indices to expand 2D horizontal nodal values into the 3D nodal values.

Definition at line 126 of file scale_element_base.F90.

126 integer, allocatable :: IndexH2Dto3D(:) !< Array saving indices to expand 2D horizontal nodal values into the 3D nodal values

◆ indexh2dto3d_bnd

integer, dimension(:), allocatable scale_element_base::elementbase3d::indexh2dto3d_bnd

Array saving indices to expand 2D horizontal nodal values into the 3D nodal values on element faces.

Definition at line 127 of file scale_element_base.F90.

127 integer, allocatable :: IndexH2Dto3D_bnd(:) !< Array saving indices to expand 2D horizontal nodal values into the 3D nodal values on element faces

◆ indexz1dto3d

integer, dimension(:), allocatable scale_element_base::elementbase3d::indexz1dto3d

Array saving indices to expand 1D vertical nodal values into the 3D nodal values.

Definition at line 128 of file scale_element_base.F90.

128 integer, allocatable :: IndexZ1Dto3D(:) !< Array saving indices to expand 1D vertical nodal values into the 3D nodal values

◆ x1

real(rp), dimension(:), allocatable scale_element_base::elementbase3d::x1

Array saving x1-coordinate of nodes within the reference element.

Definition at line 130 of file scale_element_base.F90.

130 real(RP), allocatable :: x1(:) !< Array saving x1-coordinate of nodes within the reference element

◆ x2

real(rp), dimension(:), allocatable scale_element_base::elementbase3d::x2

Array saving x2-coordinate of nodes within the reference element.

Definition at line 131 of file scale_element_base.F90.

131 real(RP), allocatable :: x2(:) !< Array saving x2-coordinate of nodes within the reference element

◆ x3

real(rp), dimension(:), allocatable scale_element_base::elementbase3d::x3

Array saving x3-coordinate of nodes within the reference element.

Definition at line 132 of file scale_element_base.F90.

132 real(RP), allocatable :: x3(:) !< Array saving x3-coordinate of nodes within the reference element

◆ dx1

real(rp), dimension(:,:), allocatable scale_element_base::elementbase3d::dx1

Elementwise differential matrix for the x1-coordinate direction (Dx1 = M^-1 Sx1)

Definition at line 134 of file scale_element_base.F90.

134 real(RP), allocatable :: Dx1(:,:) !< Elementwise differential matrix for the x1-coordinate direction (Dx1 = M^-1 Sx1)

◆ dx2

real(rp), dimension(:,:), allocatable scale_element_base::elementbase3d::dx2

Elementwise differential matrix for the x2-coordinate direction (Dx2 = M^-1 Sx2)

Definition at line 135 of file scale_element_base.F90.

135 real(RP), allocatable :: Dx2(:,:) !< Elementwise differential matrix for the x2-coordinate direction (Dx2 = M^-1 Sx2)

◆ dx3

real(rp), dimension(:,:), allocatable scale_element_base::elementbase3d::dx3

Elementwise differential matrix for the x3-coordinate direction (Dx3 = M^-1 Sx3)

Definition at line 136 of file scale_element_base.F90.

136 real(RP), allocatable :: Dx3(:,:) !< Elementwise differential matrix for the x3-coordinate direction (Dx3 = M^-1 Sx3)

◆ sx1

real(rp), dimension(:,:), allocatable scale_element_base::elementbase3d::sx1

Elementwise stiffness matrix for the x1-coordinate direction.

Definition at line 138 of file scale_element_base.F90.

138 real(RP), allocatable :: Sx1(:,:) !< Elementwise stiffness matrix for the x1-coordinate direction

◆ sx2

real(rp), dimension(:,:), allocatable scale_element_base::elementbase3d::sx2

Elementwise stiffness matrix for the x2-coordinate direction.

Definition at line 139 of file scale_element_base.F90.

139 real(RP), allocatable :: Sx2(:,:) !< Elementwise stiffness matrix for the x2-coordinate direction

◆ sx3

real(rp), dimension(:,:), allocatable scale_element_base::elementbase3d::sx3

Elementwise stiffness matrix for the x3-coordinate direction.

Definition at line 140 of file scale_element_base.F90.

140 real(RP), allocatable :: Sx3(:,:) !< Elementwise stiffness matrix for the x3-coordinate direction

The documentation for this type was generated from the following file: