specfem::medium::material

template<specfem::dimension::type dimension_tag, specfem::element::medium_tag MediumTag, specfem::element::property_tag PropertyTag, typename Enable = void>
class material

Template for material properties in seismic simulations.

This template stores physical material parameters (density, elastic moduli, wave speeds) and converts them to computational point properties. Different specializations handle various combinations of spatial dimension, medium type, and material properties.

Each specialization provides:

  • Constructor accepting medium-specific physical parameters

  • get_properties() method returning specfem::point::properties

  • Equality comparison operators (==, !=)

Example usage:

// Create 2D elastic isotropic material
using Mat = specfem::medium::material<
    specfem::dimension::type::dim2,
    specfem::element::medium_tag::elastic,
    specfem::element::property_tag::isotropic>;

Mat material(lambda, mu, density);
auto properties = material.get_properties();

Note

This stores properties for a domain section. For GLL-level properties, use specfem::assembly::properties.

Template Parameters:
  • dimension_tag – Spatial dimension (dim2 or dim3)

  • MediumTag – Medium type (acoustic, elastic, etc.)

  • PropertyTag – Property type (isotropic, anisotropic, etc.)

  • Enable – SFINAE parameter for template specialization

Dimension-Specific Specializations

2D Specializations

3D Specializations