specfem::medium::material< dim2, elastic, isotropic >

template<specfem::dimension::type DimensionTag, specfem::element::medium_tag MediumTag>
struct material<DimensionTag, MediumTag, specfem::element::property_tag::isotropic, std::enable_if_t<specfem::element::is_elastic<MediumTag>::value>>
#include <material.hpp>

Material specialization for 2D elastic isotropic media.

This struct holds the properties of an elastic isotropic material in 2D space. It includes the density, shear wave speed, compressional wave speed, attenuation factors, and compaction gradient. The struct also provides

Template Parameters:
  • MediumTag – The medium tag that must satisfy elastic medium properties

  • PropertyTag – The property tag that must be isotropic

  • Enable – The enable_if condition that must be satisfied

Constructors

inline material(const type_real &density, const type_real &cs, const type_real &cp, const type_real &Qkappa, const type_real &Qmu, const type_real &compaction_grad)

Construct a new elastic isotropic material.

Parameters:
  • density – Density of the material

  • cs – Shear wave speed

  • cp – Compressional wave speed

  • Qkappa – Attenuation factor for bulk modulus

  • Qmu – Attenuation factor for shear modulus

  • compaction_grad – Compaction gradient

material() = default

Default constructor.

Public Functions

inline bool operator==(const material<dimension_tag, medium_tag, specfem::element::property_tag::isotropic> &other) const

Check if 2 materials have the same properties.

Parameters:

other – Material to compare with

Returns:

true If the materials have the same properties

inline bool operator!=(const material<dimension_tag, medium_tag, specfem::element::property_tag::isotropic> &other) const

Check if 2 materials have different properties.

Parameters:

other – Material to compare with

Returns:

true If the materials have different properties

inline specfem::point::properties<dimension_tag, medium_tag, property_tag, false> get_properties() const

Get the material properties.

Returns:

specfem::point::properties Material properties

inline std::string print() const

Print the material properties.

Returns:

std::string Formatted material properties

Public Static Attributes

static constexpr auto dimension_tag = DimensionTag

Dimension of the material.

static constexpr auto medium_tag = MediumTag

Medium tag.

static constexpr auto property_tag = specfem::element::property_tag::isotropic

Property tag.

specfem::medium::material< dim2, elastic, anisotropic >

template<specfem::element::medium_tag MediumTag>
struct material<specfem::dimension::type::dim2, MediumTag, specfem::element::property_tag::anisotropic> : public specfem::element::is_elastic<MediumTag>
#include <material.hpp>

Template specialization for elastic anisotropic material properties.

This struct holds the properties of an elastic anisotropic material in 2D space. It includes the density, elastic constants, and attenuation factors. The struct also provides constructors, comparison operators, and a method to retrieve the material properties.

Template Parameters:
  • MediumTag – The medium tag that must satisfy elastic medium properties

  • PropertyTag – The property tag that must be anisotropic

  • Enable – The enable_if condition that must be satisfied

Constructors

inline material(const type_real &density, const type_real &c11, const type_real &c13, const type_real &c15, const type_real &c33, const type_real &c35, const type_real &c55, const type_real &c12, const type_real &c23, const type_real &c25, const type_real &Qkappa, const type_real &Qmu)

Construct a new elastic anisotropic material.

Parameters:
  • density – Density of the material

  • c11 – Elastic constant

  • c13 – Elastic constant

  • c15 – Elastic constant

  • c33 – Elastic constant

  • c35 – Elastic constant

  • c55 – Elastic constant

  • c12 – Elastic constant

  • c23 – Elastic constant

  • c25 – Elastic constant

  • Qkappa – Attenuation factor for bulk modulus

  • Qmu – Attenuation factor for shear modulus

material() = default

Default constructor.

Public Functions

inline bool operator==(const material<dimension_tag, medium_tag, specfem::element::property_tag::anisotropic> &other) const

Check if 2 materials have the same properties.

Parameters:

other – Material to compare with

Returns:

true If the materials have the same properties

inline bool operator!=(const material<dimension_tag, medium_tag, specfem::element::property_tag::anisotropic> &other) const

Check if 2 materials have different properties.

Parameters:

other – Material to compare with

Returns:

true If the materials have different properties

inline specfem::point::properties<dimension_tag, medium_tag, property_tag, false> get_properties() const

Get the material properties.

Returns:

specfem::point::properties Material properties

inline std::string print() const

Print the material properties.

Returns:

std::string Formatted material properties

Public Static Attributes

static constexpr auto dimension_tag = specfem::dimension::type::dim2

Dimension of the material.

static constexpr auto medium_tag = MediumTag

Medium tag.

static constexpr auto property_tag = specfem::element::property_tag::anisotropic

Property tag.

specfem::medium::material< dim2, elastic, isotropic_cosserat >

template<specfem::dimension::type DimensionTag, specfem::element::medium_tag MediumTag>
class material<DimensionTag, MediumTag, specfem::element::property_tag::isotropic_cosserat, std::enable_if_t<specfem::element::is_elastic<MediumTag>::value>>
#include <material.hpp>

Material specialization for 2D elastic isotropic cosserat media.

properties

This struct holds the properties of an elastic isotropic cosserat material in 2D.

Template Parameters:
  • MediumTag – The medium tag that must satisfy elastic medium properties

  • PropertyTag – The property tag that must be isotropic

  • Enable – The enable_if condition that must be satisfied

Constructors

inline material(type_real rho, type_real kappa, type_real mu, type_real nu, type_real j, type_real lambda_c, type_real mu_c, type_real nu_c)

Construct a new elastic spin isotropic material.

Parameters:
  • rho – Density \( \rho \)

  • kappa – Bulk modulus \( \kappa \)

  • mu – Shear modulus \( \mu \)

  • nu – Symmetry breaking coupling modulus \( \nu \)

  • j – Inertia density \( j \)

  • lambda_c – Coupling modulus \( \lambda_c \)

  • mu_c – Coupling shear modulus \( \mu_c \)

  • nu_c – Coupling symmetry breaking modulus \( \nu_c \)

material() = default

Default constructor.

Public Functions

inline bool operator==(const material<dimension_tag, medium_tag, specfem::element::property_tag::isotropic_cosserat> &other) const

Check if 2 materials have the same properties.

Parameters:

other – Material to compare with

Returns:

true If the materials have the same properties

inline bool operator!=(const material<dimension_tag, specfem::element::medium_tag::elastic_psv_t, specfem::element::property_tag::isotropic_cosserat> &other) const

Check if 2 materials have different properties.

Parameters:

other – Material to compare with

Returns:

true If the materials have different properties

inline specfem::point::properties<dimension_tag, medium_tag, property_tag, false> get_properties() const

Get the material properties.

Returns:

specfem::point::properties Material properties

inline std::string print() const

Print the material properties.

Returns:

std::string Formatted material properties

Public Static Attributes

static constexpr auto dimension_tag = DimensionTag

Dimension of the material.

static constexpr auto medium_tag = MediumTag

Medium tag.

static constexpr auto property_tag = specfem::element::property_tag::isotropic_cosserat

Property tag.

Private Members

type_real rho

Density \( \rho \).

type_real kappa

Bulk modulus \( \kappa \).

type_real mu

Shear modulus \( \mu \).

type_real nu

Symmetry breaking coupling modulus \( \nu \).

type_real j

Intertia density \( j \).

type_real lambda_c

Coupling bulk modulus \( \lambda_c \).

type_real mu_c

Coupling shear modulus \( \mu_c \).

type_real nu_c

Coupling symmetry breaking modulus \( \nu_c \).