|
FE-Project
|
Derived type representing a 3D reference element. More...
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. | |
Derived type representing a 3D reference element.
Definition at line 111 of file scale_element_base.F90.
| 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.
| 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.
| 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().
| integer scale_element_base::elementbase3d::polyorder_h |
Polynomial order with the horizontal direction.
Definition at line 112 of file scale_element_base.F90.
| integer scale_element_base::elementbase3d::nnode_h1d |
Number of nodes along the horizontal coordinate.
Definition at line 113 of file scale_element_base.F90.
| 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.
| 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.
| 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.
| integer scale_element_base::elementbase3d::polyorder_v |
Polynomial order with the vertical direction.
Definition at line 118 of file scale_element_base.F90.
| integer scale_element_base::elementbase3d::nnode_v |
Number of nodes along the vertical coordinate.
Definition at line 119 of file scale_element_base.F90.
| 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.
| 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.
| 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.
| 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.
| 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.
| 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.
| 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.
| 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.
| 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.
| 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.
| 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.
| 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.
| 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.
| 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.
| 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.
| 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.
| 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.