specfem::medium_container::material¶
-
template<specfem::element::dimension_tag dimension_tag, specfem::element::medium_tag MediumTag, specfem::element::property_tag PropertyTag, specfem::element::attenuation_tag AttenuationTag, 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_container::material< specfem::element::dimension_tag::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.)
AttenuationTag – Attenuation model (no_attenuation, constant_q, etc.)
Enable – SFINAE parameter for template specialization
Dimension-Specific Specializations¶
2D Specializations¶
specfem::medium_container::material< dim2, elastic, isotropic >specfem::medium_container::material< dim2, elastic, anisotropic >specfem::medium_container::material< dim2, elastic, isotropic_cosserat >specfem::medium_container::material< dim2, acoustic, isotropic >specfem::medium_container::material< dim2, poroelastic, isotropic >specfem::medium_container::material< dim2, electromagnetic, isotropic >