specfem::point::jacobian_matrix¶
-
template<specfem::element::dimension_tag DimensionTag, bool StoreJacobian, bool UseSIMD>
struct jacobian_matrix¶ Store spatial derivatives of the basis functions at a quadrature point.
- Template Parameters:
DimensionTag – Dimension of the spectral element
StoreJacobian – Boolean indicating whether to store the Jacobian
UseSIMD – Boolean indicating whether to use SIMD
2D Specialization¶
3D Specialization¶
-
template<bool UseSIMD>
struct jacobian_matrix<specfem::element::dimension_tag::dim3, false, UseSIMD> : public specfem::data_access::Accessor<specfem::datatype::AccessorType::point, specfem::data_access::DataClassType::jacobian_matrix, specfem::element::dimension_tag::dim3, UseSIMD>¶ Template specialization for 3D spectral elements without storing the Jacobian determinant.
- Template Parameters:
UseSIMD – Boolean indicating whether to use SIMD
Subclassed by specfem::point::jacobian_matrix< specfem::element::dimension_tag::dim3, true, UseSIMD >
Constructors
-
inline jacobian_matrix()¶
Default constructor.
-
inline jacobian_matrix(const value_type &xix, const value_type &etax, const value_type &gammax, const value_type &xiy, const value_type &etay, const value_type &gammay, const value_type &xiz, const value_type &etaz, const value_type &gammaz)¶
Constructor with values.
- Parameters:
xix – \( \partial \xi / \partial x \)
etax – \( \partial \eta / \partial x \)
gammax – \( \partial \gamma / \partial x \)
xiy – \( \partial \xi / \partial y \)
etay – \( \partial \eta / \partial y \)
gammay – \( \partial \gamma / \partial y \)
xiz – \( \partial \xi / \partial z \)
etaz – \( \partial \eta / \partial z \)
gammaz – \( \partial \gamma / \partial z \)
-
inline jacobian_matrix(const value_type constant)¶
Constructor with constant value.
- Parameters:
constant – Value to initialize all members to
Public Members
-
value_type xix¶
\( \partial \xi / \partial x \)
-
value_type etax¶
\( \partial \eta / \partial x \)
-
value_type gammax¶
\( \partial \gamma / \partial x \)
-
value_type xiy¶
\( \partial \xi / \partial y \)
-
value_type etay¶
\( \partial \eta / \partial y \)
-
value_type gammay¶
\( \partial \gamma / \partial y \)
-
value_type xiz¶
\( \partial \xi / \partial z \)
-
value_type etaz¶
\( \partial \eta / \partial z \)
-
value_type gammaz¶
\( \partial \gamma / \partial z \)
Private Types
-
using base_type = specfem::data_access::Accessor<specfem::datatype::AccessorType::point, specfem::data_access::DataClassType::jacobian_matrix, specfem::element::dimension_tag::dim3, UseSIMD>¶
Base type of the point Jacobian matrix
-
template<bool UseSIMD>
struct jacobian_matrix<specfem::element::dimension_tag::dim3, true, UseSIMD> : public specfem::point::jacobian_matrix<specfem::element::dimension_tag::dim3, false, UseSIMD>¶ Template specialization for 3D spectral elements with storing the Jacobian determinant.
- Template Parameters:
UseSIMD – Boolean indicating whether to use SIMD
Constructors
-
inline jacobian_matrix()¶
Default constructor.
-
inline jacobian_matrix(const value_type &xix, const value_type &etax, const value_type &gammax, const value_type &xiy, const value_type &etay, const value_type &gammay, const value_type &xiz, const value_type &etaz, const value_type &gammaz, const value_type &jacobian)¶
Constructor with values.
- Parameters:
xix – \( \partial \xi / \partial x \)
etax – \( \partial \eta / \partial x \)
gammax – \( \partial \gamma / \partial x \)
xiy – \( \partial \xi / \partial y \)
etay – \( \partial \eta / \partial y \)
gammay – \( \partial \gamma / \partial y \)
xiz – \( \partial \xi / \partial z \)
etaz – \( \partial \eta / \partial z \)
gammaz – \( \partial \gamma / \partial z \)
jacobian – Jacobian determinant \( J \)
-
inline jacobian_matrix(const value_type constant)¶
Constructor with constant value.
- Parameters:
constant – Value to initialize all members to
Member functions
-
specfem::datatype::VectorPointViewType<type_real, 3, UseSIMD> compute_normal(const specfem::mesh_entity::dim3::type &type) const¶
Compute the normal vector at a quadrature point.
- Parameters:
type – Type of boundary face
- Returns:
specfem::datatype::VectorPointViewType<type_real, 3, UseSIMD> Normal vector
Public Members
-
value_type jacobian¶
Jacobian determinant \( J \).
-
value_type xix¶
\( \partial \xi / \partial x \)
-
value_type etax¶
\( \partial \eta / \partial x \)
-
value_type gammax¶
\( \partial \gamma / \partial x \)
-
value_type xiy¶
\( \partial \xi / \partial y \)
-
value_type etay¶
\( \partial \eta / \partial y \)
-
value_type gammay¶
\( \partial \gamma / \partial y \)
-
value_type xiz¶
\( \partial \xi / \partial z \)
-
value_type etaz¶
\( \partial \eta / \partial z \)
-
value_type gammaz¶
\( \partial \gamma / \partial z \)
Private Types
-
using base_type = jacobian_matrix<specfem::element::dimension_tag::dim3, false, UseSIMD>¶
Base type of the point Jacobian matrix