With Stored Jacobian

template<bool UseSIMD>
struct jacobian_matrix<specfem::dimension::type::dim2, true, UseSIMD> : public specfem::point::jacobian_matrix<specfem::dimension::type::dim2, false, UseSIMD>

Template specialization for 2D spectral elements with storing the Jacobian determinant.

Template Parameters:

UseSIMD – Boolean indicating whether to use SIMD

Typedefs

using simd = typename base_type::simd

SIMD data type.

Constructors

inline jacobian_matrix()

Default constructor.

inline jacobian_matrix(const value_type &xix, const value_type &gammax, const value_type &xiz, const value_type &gammaz, const value_type &jacobian)

Constructor with values.

Parameters:
  • xix\( \partial \xi / \partial x \)

  • gammax\( \partial \gamma / \partial x \)

  • xiz\( \partial \xi / \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, 2, UseSIMD> compute_normal(const specfem::mesh_entity::dim2::type &type) const

Compute the normal vector at a quadrature point.

Parameters:

type – Type of edge (bottom, top, left, right)

Returns:

specfem::datatype::VectorPointViewType<type_real, 2, UseSIMD> Normal vector

Public Members

value_type jacobian

Jacobian determinant \( J \).

value_type xix

\( \partial \xi / \partial x \)

value_type gammax

\( \partial \gamma / \partial x \)

value_type xiz

\( \partial \xi / \partial z \)

value_type gammaz

\( \partial \gamma / \partial z \)

Private Types

using base_type = jacobian_matrix<specfem::dimension::type::dim2, false, UseSIMD>

Base type of the point Jacobian matrix