specfem::point::properties

template<typename Tags>
using specfem::point::properties = impl::properties<Tags::dimension_tag, Tags::medium_tag, Tags::property_tag, Tags::using_simd>

Properties of a quadrature point.

This class serves as a container for physical properties at a specific quadrature point within an element. It is templated on dimension, medium type, and property type to provide specialized storage and accessors for different physical models (e.g., acoustic, elastic, poroelastic).

Usage Example

The following example demonstrates how to instantiate and use the properties class for a 2D elastic isotropic medium:

#include "specfem/point/properties.hpp"

// Define types
using namespace specfem::element;
constexpr auto dim = specfem::element::dimension_tag::dim2;
constexpr bool use_simd = false;

// Instantiate properties for 2D Elastic Isotropic medium
// Requires Bulk Modulus (kappa), Shear Modulus (mu), and Density (rho)
double kappa = 20.0;
double mu = 10.0;
double rho = 2500.0;

specfem::point::properties<specfem::tags::Tags<
    dim, medium_tag::elastic, property_tag::isotropic, use_simd>>
    props(kappa, mu, rho);

// Access properties
double k = props.kappa();
double m = props.mu();
double r = props.rho();

// Derived properties are also available
double l2m = props.lambdaplus2mu(); // lambda + 2*mu

See Also

Note

Medium-specific specializations are available in the implementation details. See specfem::medium_container::properties::point_container.

Template Parameters:

Tags – The tags for the element where the quadrature point is located