specfem::interface::interface_tag

enum class specfem::interface::interface_tag

Interface coupling direction types.

Directional coupling: elastic_acoustic (elastic→acoustic), acoustic_elastic (acoustic→elastic).

Values:

enumerator elastic_acoustic

Elastic to acoustic interface - elastic field couples to acoustic

enumerator acoustic_elastic

Acoustic to elastic interface - acoustic field couples to elastic

specfem::interface::attributes

template<specfem::dimension::type DimensionTag, specfem::interface::interface_tag InterfaceTag>
class attributes

Compile-time interface field type determination.

using attrs = attributes<dim2, interface_tag::elastic_acoustic>;
static_assert(attrs::self_medium() == medium_tag::elastic_psv);

Template Parameters:
  • DimensionTag – Spatial dimension (2D or 3D)

  • InterfaceTag – Interface coupling type

Attribute Specializations

template<>
class attributes<specfem::dimension::type::dim2, specfem::interface::interface_tag::elastic_acoustic>

2D elastic→acoustic coupling attributes.

Self: elastic_psv (vector acceleration), Coupled: acoustic (scalar acceleration).

Public Types

template<specfem::connections::type ConnectionTag>
using self_field_t = typename self_field<ConnectionTag>::type

Type alias for self field.

template<specfem::connections::type ConnectionTag>
using coupled_field_t = typename coupled_field<ConnectionTag>::type

Type alias for coupled field.

Public Static Functions

static inline constexpr specfem::element::medium_tag self_medium()

Self medium (receives coupling).

Returns:

elastic_psv medium tag

static inline constexpr specfem::element::medium_tag coupled_medium()

Coupled medium (provides coupling).

Returns:

acoustic medium tag

template<>
struct coupled_field

Coupled field type for connection types.

Template Parameters:

ConnectionTag – Connection type (weakly_conforming, etc.)

template<>
template<>
struct coupled_field<specfem::connections::type::weakly_conforming>

2D weakly conforming elastic→acoustic coupled field type.

Public Types

using type = specfem::point::acceleration<specfem::dimension::type::dim2, specfem::element::medium_tag::acoustic, false>

scalar acceleration

template<>
struct self_field

Self field type for connection types.

Template Parameters:

ConnectionTag – Connection type (weakly_conforming, etc.)

template<>
template<>
struct self_field<specfem::connections::type::weakly_conforming>

2D weakly conforming elastic→acoustic self field type.

Public Types

using type = specfem::point::acceleration<specfem::dimension::type::dim2, specfem::element::medium_tag::elastic_psv, false>

vector acceleration

template<>
class attributes<specfem::dimension::type::dim2, specfem::interface::interface_tag::acoustic_elastic>

2D acoustic→elastic coupling attributes.

Self: acoustic (scalar acceleration), Coupled: elastic_psv (vector displacement).

Public Types

template<specfem::connections::type ConnectionTag>
using self_field_t = typename self_field<ConnectionTag>::type

Type alias for self field.

template<specfem::connections::type ConnectionTag>
using coupled_field_t = typename coupled_field<ConnectionTag>::type

Type alias for coupled field.

Public Static Functions

static inline constexpr specfem::element::medium_tag self_medium()

Self medium (receives coupling).

Returns:

acoustic medium tag

static inline constexpr specfem::element::medium_tag coupled_medium()

Coupled medium (provides coupling).

Returns:

elastic_psv medium tag

template<>
struct coupled_field

Coupled field type for connection types.

Template Parameters:

ConnectionTag – Connection type (weakly_conforming, etc.)

template<>
template<>
struct coupled_field<specfem::connections::type::weakly_conforming>

2D weakly conforming acoustic→elastic coupled field type.

Public Types

using type = specfem::point::displacement<specfem::dimension::type::dim2, specfem::element::medium_tag::elastic_psv, false>

vector displacement

template<>
struct self_field

Self field type for connection types.

Template Parameters:

ConnectionTag – Connection type (weakly_conforming, etc.)

template<>
template<>
struct self_field<specfem::connections::type::weakly_conforming>

2D weakly conforming acoustic→elastic self field type.

Public Types

using type = specfem::point::acceleration<specfem::dimension::type::dim2, specfem::element::medium_tag::acoustic, false>

scalar acceleration