specfem::point::jacobian_matrix

template<specfem::dimension::type 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

template<bool UseSIMD>
struct jacobian_matrix<specfem::dimension::type::dim2, false, UseSIMD> : public specfem::data_access::Accessor<specfem::data_access::AccessorType::point, specfem::data_access::DataClassType::jacobian_matrix, specfem::dimension::type::dim2, UseSIMD>

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

Template Parameters:

UseSIMD – Boolean indicating whether to use SIMD

Subclassed by specfem::point::jacobian_matrix< specfem::dimension::type::dim2, true, UseSIMD >

Typedefs

using simd = typename base_type::template simd<type_real>

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)

Constructor with values.

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

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

  • xiz\( \partial \xi / \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 gammax

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

value_type xiz

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

value_type gammaz

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

Private Types

using base_type = specfem::data_access::Accessor<specfem::data_access::AccessorType::point, specfem::data_access::DataClassType::jacobian_matrix, specfem::dimension::type::dim2, UseSIMD>

Jacobian matrix.

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

3D Specialization

template<bool UseSIMD>
struct jacobian_matrix<specfem::dimension::type::dim3, false, UseSIMD> : public specfem::data_access::Accessor<specfem::data_access::AccessorType::point, specfem::data_access::DataClassType::jacobian_matrix, specfem::dimension::type::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::dimension::type::dim3, true, UseSIMD >

Typedefs

using simd = typename base_type::template simd<type_real>

SIMD data type.

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::data_access::AccessorType::point, specfem::data_access::DataClassType::jacobian_matrix, specfem::dimension::type::dim3, UseSIMD>

Base type of the point Jacobian matrix

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

Template specialization for 3D 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 &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::dimension::type::dim3, false, UseSIMD>

Base type of the point Jacobian matrix