From e14cf167c5b02eabe426e8bb85c33cfade39deb7 Mon Sep 17 00:00:00 2001 From: Rohit Kakodkar Date: Wed, 19 Feb 2025 10:26:27 -0500 Subject: [PATCH] Updated elastic tag to elastic_sv tag --- include/IO/kernel/writer.tpp | 8 +-- include/IO/property/writer.tpp | 4 +- include/boundary_conditions/stacey/stacey.tpp | 20 +++---- .../boundary_values_container.hpp | 6 +- .../boundary_values_container.tpp | 2 +- .../coupled_interfaces/coupled_interfaces.hpp | 7 ++- .../coupled_interfaces/coupled_interfaces.tpp | 8 +-- include/compute/fields/data_access.tpp | 56 ++++++++--------- include/compute/fields/simulation_field.hpp | 4 +- include/compute/fields/simulation_field.tpp | 4 +- include/compute/impl/value_containers.hpp | 9 +-- include/compute/sources/sources.hpp | 40 ++++++------- .../coupled_interface/coupled_interface.hpp | 16 ++--- .../impl/compute_coupling.hpp | 2 +- include/enumerations/material_definitions.hpp | 3 +- include/enumerations/medium.hpp | 4 +- .../kokkos_kernels/impl/interface_kernels.hpp | 6 +- .../anisotropic/frechet_derivative.hpp | 2 +- .../elastic/anisotropic/kernels_container.hpp | 4 +- .../dim2/elastic/anisotropic/mass_matrix.hpp | 4 +- .../dim2/elastic/anisotropic/properties.hpp | 8 +-- .../anisotropic/properties_container.hpp | 4 +- .../dim2/elastic/anisotropic/source.hpp | 2 +- .../dim2/elastic/anisotropic/stress.hpp | 22 +++---- .../elastic/anisotropic/stress_integrand.hpp | 9 +-- .../elastic/anisotropic/stress_integrand.tpp | 6 +- .../dim2/elastic/anisotropic/wavefield.hpp | 11 ++-- .../elastic/isotropic/frechet_derivative.hpp | 2 +- .../elastic/isotropic/kernels_container.hpp | 4 +- .../dim2/elastic/isotropic/mass_matrix.hpp | 4 +- .../dim2/elastic/isotropic/mass_matrix.tpp | 4 +- .../dim2/elastic/isotropic/properties.hpp | 8 +-- .../isotropic/properties_container.hpp | 4 +- .../medium/dim2/elastic/isotropic/source.hpp | 2 +- .../medium/dim2/elastic/isotropic/stress.hpp | 13 ++-- .../elastic/isotropic/stress_integrand.hpp | 13 ++-- .../elastic/isotropic/stress_integrand.tpp | 6 +- .../dim2/elastic/isotropic/wavefield.hpp | 11 ++-- .../coupled_interfaces/coupled_interfaces.hpp | 33 +++++----- include/mesh/materials/materials.hpp | 12 ++-- include/point/kernels.hpp | 8 +-- include/point/properties.hpp | 8 +-- include/solver/time_marching.tpp | 22 +++---- include/timescheme/newmark.tpp | 38 ++++++------ src/IO/mesh.cpp | 16 ++--- src/IO/mesh/impl/fortran/read_interfaces.cpp | 12 ++-- .../impl/fortran/read_material_properties.cpp | 30 +++++----- src/compute/assembly/compute_wavefield.cpp | 4 +- src/compute/compute_boundary_values.cpp | 2 +- src/compute/compute_kernels.cpp | 8 +-- src/compute/compute_properties.cpp | 8 +-- src/compute/compute_sources.cpp | 2 +- src/compute/coupled_interfaces.cpp | 24 ++++---- src/coupled_interface/coupled_interface.cpp | 12 ++-- src/enumerations/medium.cpp | 10 ++-- src/medium/compute_stress_integrand.cpp | 31 +++++----- .../coupled_interfaces/coupled_interfaces.cpp | 43 ++++++------- .../interface_container.cpp | 4 +- src/mesh/materials/materials.cpp | 12 ++-- src/mesh/mesh.cpp | 2 +- src/periodic_tasks/plot_wavefield.cpp | 2 +- src/source/adjoint_source.cpp | 2 +- src/source/external.cpp | 2 +- src/source/force_source.cpp | 2 +- .../compute_wavefield/compute_wavefield.cpp | 4 +- .../compute_wavefield/generate_data.hpp | 2 +- .../compute_wavefield/test_helper.hpp | 12 ++-- tests/unit-tests/assembly/kernels/kernels.cpp | 44 +++++++------- .../assembly/properties/properties.cpp | 60 +++++++++++-------- .../unit-tests/domain/rmass_inverse_tests.cpp | 9 +-- tests/unit-tests/mesh/materials/materials.cpp | 26 ++++---- .../seismogram/elastic/seismogram_tests.cpp | 2 +- 72 files changed, 440 insertions(+), 410 deletions(-) diff --git a/include/IO/kernel/writer.tpp b/include/IO/kernel/writer.tpp index ec458b179..c230402c7 100644 --- a/include/IO/kernel/writer.tpp +++ b/include/IO/kernel/writer.tpp @@ -37,7 +37,7 @@ void specfem::IO::kernel_writer::write(specfem::compute::assembly typename OutputLibrary::Group elastic = file.createGroup("/ElasticIsotropic"); const auto element_indices = element_types.get_elements_on_host( - specfem::element::medium_tag::elastic, + specfem::element::medium_tag::elastic_sv, specfem::element::property_tag::isotropic); n_elastic_isotropic = element_indices.size(); @@ -60,7 +60,7 @@ void specfem::IO::kernel_writer::write(specfem::compute::assembly const specfem::point::index index( ispec, iz, ix); specfem::point::kernels point_kernels; @@ -91,7 +91,7 @@ void specfem::IO::kernel_writer::write(specfem::compute::assembly typename OutputLibrary::Group elastic = file.createGroup("/ElasticAnisotropic"); const auto element_indices = element_types.get_elements_on_host( - specfem::element::medium_tag::elastic, + specfem::element::medium_tag::elastic_sv, specfem::element::property_tag::anisotropic); n_elastic_anisotropic = element_indices.size(); @@ -115,7 +115,7 @@ void specfem::IO::kernel_writer::write(specfem::compute::assembly const specfem::point::index index( ispec, iz, ix); specfem::point::kernels point_kernels; diff --git a/include/IO/property/writer.tpp b/include/IO/property/writer.tpp index 563a22428..fdac61300 100644 --- a/include/IO/property/writer.tpp +++ b/include/IO/property/writer.tpp @@ -37,7 +37,7 @@ void specfem::IO::property_writer::write(specfem::compute::assemb typename OutputLibrary::Group elastic = file.createGroup("/ElasticIsotropic"); const auto element_indices = element_types.get_elements_on_host( - specfem::element::medium_tag::elastic, + specfem::element::medium_tag::elastic_sv, specfem::element::property_tag::isotropic); n_elastic_isotropic = element_indices.size(); @@ -66,7 +66,7 @@ void specfem::IO::property_writer::write(specfem::compute::assemb typename OutputLibrary::Group elastic = file.createGroup("/ElasticAnisotropic"); const auto element_indices = element_types.get_elements_on_host( - specfem::element::medium_tag::elastic, + specfem::element::medium_tag::elastic_sv, specfem::element::property_tag::anisotropic); n_elastic_anisotropic = element_indices.size(); diff --git a/include/boundary_conditions/stacey/stacey.tpp b/include/boundary_conditions/stacey/stacey.tpp index 7f3010b0a..d4b6a33d8 100644 --- a/include/boundary_conditions/stacey/stacey.tpp +++ b/include/boundary_conditions/stacey/stacey.tpp @@ -9,9 +9,9 @@ #include namespace { -using elastic_type = +using elastic_sv_type = std::integral_constant; + specfem::element::medium_tag::elastic_sv>; using acoustic_type = std::integral_constant = 0> KOKKOS_FUNCTION void -impl_enforce_traction(const elastic_type &, const isotropic_type &, +impl_enforce_traction(const elastic_sv_type &, const isotropic_type &, const PointBoundaryType &boundary, const PointPropertyType &property, const PointFieldType &field, ViewType &traction) { @@ -122,7 +122,7 @@ impl_enforce_traction(const elastic_type &, const isotropic_type &, "Boundary tag must be stacey"); static_assert(PointPropertyType::medium_tag == - specfem::element::medium_tag::elastic, + specfem::element::medium_tag::elastic_sv, "Medium tag must be elastic"); static_assert(PointPropertyType::property_tag == @@ -164,7 +164,7 @@ template < typename PointFieldType, typename ViewType, typename std::enable_if_t = 0> KOKKOS_FUNCTION void -impl_enforce_traction(const elastic_type &, const isotropic_type &, +impl_enforce_traction(const elastic_sv_type &, const isotropic_type &, const PointBoundaryType &boundary, const PointPropertyType &property, const PointFieldType &field, ViewType &traction) { @@ -174,7 +174,7 @@ impl_enforce_traction(const elastic_type &, const isotropic_type &, "Boundary tag must be stacey"); static_assert(PointPropertyType::medium_tag == - specfem::element::medium_tag::elastic, + specfem::element::medium_tag::elastic_sv, "Medium tag must be elastic"); static_assert(PointPropertyType::property_tag == @@ -224,7 +224,7 @@ template < typename PointFieldType, typename ViewType, typename std::enable_if_t = 0> KOKKOS_FUNCTION void -impl_enforce_traction(const elastic_type &, const anisotropic_type &, +impl_enforce_traction(const elastic_sv_type &, const anisotropic_type &, const PointBoundaryType &boundary, const PointPropertyType &property, const PointFieldType &field, ViewType &traction) { @@ -234,7 +234,7 @@ impl_enforce_traction(const elastic_type &, const anisotropic_type &, "Boundary tag must be stacey"); static_assert(PointPropertyType::medium_tag == - specfem::element::medium_tag::elastic, + specfem::element::medium_tag::elastic_sv, "Medium tag must be elastic"); static_assert(PointPropertyType::property_tag == @@ -277,7 +277,7 @@ template < typename PointFieldType, typename ViewType, typename std::enable_if_t = 0> KOKKOS_FUNCTION void -impl_enforce_traction(const elastic_type &, const anisotropic_type &, +impl_enforce_traction(const elastic_sv_type &, const anisotropic_type &, const PointBoundaryType &boundary, const PointPropertyType &property, const PointFieldType &field, ViewType &traction) { @@ -287,7 +287,7 @@ impl_enforce_traction(const elastic_type &, const anisotropic_type &, "Boundary tag must be stacey"); static_assert(PointPropertyType::medium_tag == - specfem::element::medium_tag::elastic, + specfem::element::medium_tag::elastic_sv, "Medium tag must be elastic"); static_assert(PointPropertyType::property_tag == diff --git a/include/compute/boundary_values/boundary_values_container.hpp b/include/compute/boundary_values/boundary_values_container.hpp index f1c113754..ef880c96c 100644 --- a/include/compute/boundary_values/boundary_values_container.hpp +++ b/include/compute/boundary_values/boundary_values_container.hpp @@ -27,7 +27,7 @@ class boundary_value_container { DimensionType, specfem::element::medium_tag::acoustic, BoundaryTag> acoustic; specfem::compute::impl::boundary_medium_container< - DimensionType, specfem::element::medium_tag::elastic, BoundaryTag> + DimensionType, specfem::element::medium_tag::elastic_sv, BoundaryTag> elastic; boundary_value_container() = default; @@ -89,7 +89,7 @@ store_on_device(const int istep, const IndexType index, if constexpr (MediumTag == specfem::element::medium_tag::acoustic) { boundary_value_container.acoustic.store_on_device(istep, l_index, acceleration); - } else if constexpr (MediumTag == specfem::element::medium_tag::elastic) { + } else if constexpr (MediumTag == specfem::element::medium_tag::elastic_sv) { boundary_value_container.elastic.store_on_device(istep, l_index, acceleration); } @@ -123,7 +123,7 @@ load_on_device(const int istep, const IndexType index, if constexpr (MediumType == specfem::element::medium_tag::acoustic) { boundary_value_container.acoustic.load_on_device(istep, l_index, acceleration); - } else if constexpr (MediumType == specfem::element::medium_tag::elastic) { + } else if constexpr (MediumType == specfem::element::medium_tag::elastic_sv) { boundary_value_container.elastic.load_on_device(istep, l_index, acceleration); } diff --git a/include/compute/boundary_values/boundary_values_container.tpp b/include/compute/boundary_values/boundary_values_container.tpp index fb765568a..df32f7da5 100644 --- a/include/compute/boundary_values/boundary_values_container.tpp +++ b/include/compute/boundary_values/boundary_values_container.tpp @@ -27,7 +27,7 @@ specfem::compute::boundary_value_container:: nstep, mesh, element_types, boundaries, h_property_index_mapping); elastic = specfem::compute::impl::boundary_medium_container< - DimensionType, specfem::element::medium_tag::elastic, BoundaryTag>( + DimensionType, specfem::element::medium_tag::elastic_sv, BoundaryTag>( nstep, mesh, element_types, boundaries, h_property_index_mapping); Kokkos::deep_copy(property_index_mapping, h_property_index_mapping); diff --git a/include/compute/coupled_interfaces/coupled_interfaces.hpp b/include/compute/coupled_interfaces/coupled_interfaces.hpp index b96cc97da..0789a7741 100644 --- a/include/compute/coupled_interfaces/coupled_interfaces.hpp +++ b/include/compute/coupled_interfaces/coupled_interfaces.hpp @@ -61,8 +61,9 @@ struct coupled_interfaces { specfem::compute::interface_container get_interface_container() const; - specfem::compute::interface_container + specfem::compute::interface_container< + specfem::element::medium_tag::elastic_sv, + specfem::element::medium_tag::acoustic> elastic_acoustic; ///< Elastic-acoustic interface specfem::compute::interface_container< @@ -71,7 +72,7 @@ struct coupled_interfaces { acoustic_poroelastic; ///< Acoustic-poroelastic interface specfem::compute::interface_container< - specfem::element::medium_tag::elastic, + specfem::element::medium_tag::elastic_sv, specfem::element::medium_tag::poroelastic> elastic_poroelastic; ///< Elastic-poroelastic interface }; diff --git a/include/compute/coupled_interfaces/coupled_interfaces.tpp b/include/compute/coupled_interfaces/coupled_interfaces.tpp index ed3d99a09..ebaa64f81 100644 --- a/include/compute/coupled_interfaces/coupled_interfaces.tpp +++ b/include/compute/coupled_interfaces/coupled_interfaces.tpp @@ -10,11 +10,11 @@ template specfem::compute::interface_container specfem::compute::coupled_interfaces::get_interface_container() const { - if constexpr (medium1 == specfem::element::medium_tag::elastic && + if constexpr (medium1 == specfem::element::medium_tag::elastic_sv && medium2 == specfem::element::medium_tag::acoustic) { return elastic_acoustic; } else if constexpr (medium1 == specfem::element::medium_tag::acoustic && - medium2 == specfem::element::medium_tag::elastic) { + medium2 == specfem::element::medium_tag::elastic_sv) { return specfem::compute::interface_container( elastic_acoustic); } else if constexpr (medium1 == specfem::element::medium_tag::acoustic && @@ -24,11 +24,11 @@ specfem::compute::coupled_interfaces::get_interface_container() const { medium2 == specfem::element::medium_tag::acoustic) { return specfem::compute::interface_container( acoustic_poroelastic); - } else if constexpr (medium1 == specfem::element::medium_tag::elastic && + } else if constexpr (medium1 == specfem::element::medium_tag::elastic_sv && medium2 == specfem::element::medium_tag::poroelastic) { return elastic_poroelastic; } else if constexpr (medium1 == specfem::element::medium_tag::poroelastic && - medium2 == specfem::element::medium_tag::elastic) { + medium2 == specfem::element::medium_tag::elastic_sv) { return specfem::compute::interface_container( elastic_poroelastic); } diff --git a/include/compute/fields/data_access.tpp b/include/compute/fields/data_access.tpp index 1fc1cae91..da868bbe3 100644 --- a/include/compute/fields/data_access.tpp +++ b/include/compute/fields/data_access.tpp @@ -23,7 +23,7 @@ KOKKOS_FORCEINLINE_FUNCTION void impl_load_on_device(const int iglob, const auto &curr_field = [&]() -> const specfem::compute::impl::field_impl< specfem::dimension::type::dim2, MediumType> & { - if constexpr (MediumType == specfem::element::medium_tag::elastic) { + if constexpr (MediumType == specfem::element::medium_tag::elastic_sv) { return field.elastic; } else if constexpr (MediumType == specfem::element::medium_tag::acoustic) { return field.acoustic; @@ -82,7 +82,7 @@ impl_load_on_device(const typename ViewType::simd::mask_type &mask, const auto &curr_field = [&]() -> const specfem::compute::impl::field_impl< specfem::dimension::type::dim2, MediumType> & { - if constexpr (MediumType == specfem::element::medium_tag::elastic) { + if constexpr (MediumType == specfem::element::medium_tag::elastic_sv) { return field.elastic; } else if constexpr (MediumType == specfem::element::medium_tag::acoustic) { return field.acoustic; @@ -155,7 +155,7 @@ impl_load_on_device(const specfem::point::simd_assembly_index &index, const auto &curr_field = [&]() -> const specfem::compute::impl::field_impl< specfem::dimension::type::dim2, MediumType> & { - if constexpr (MediumType == specfem::element::medium_tag::elastic) { + if constexpr (MediumType == specfem::element::medium_tag::elastic_sv) { return field.elastic; } else if constexpr (MediumType == specfem::element::medium_tag::acoustic) { return field.acoustic; @@ -211,7 +211,7 @@ inline void impl_load_on_host(const int iglob, const WavefieldType &field, const auto &curr_field = [&]() -> const specfem::compute::impl::field_impl< specfem::dimension::type::dim2, MediumType> & { - if constexpr (MediumType == specfem::element::medium_tag::elastic) { + if constexpr (MediumType == specfem::element::medium_tag::elastic_sv) { return field.elastic; } else if constexpr (MediumType == specfem::element::medium_tag::acoustic) { return field.acoustic; @@ -269,7 +269,7 @@ inline void impl_load_on_host(const typename ViewType::simd::mask_type &mask, const auto &curr_field = [&]() -> const specfem::compute::impl::field_impl< specfem::dimension::type::dim2, MediumType> & { - if constexpr (MediumType == specfem::element::medium_tag::elastic) { + if constexpr (MediumType == specfem::element::medium_tag::elastic_sv) { return field.elastic; } else if constexpr (MediumType == specfem::element::medium_tag::acoustic) { return field.acoustic; @@ -341,7 +341,7 @@ inline void impl_load_on_host(const specfem::point::simd_assembly_index &index, const auto &curr_field = [&]() -> const specfem::compute::impl::field_impl< specfem::dimension::type::dim2, MediumType> & { - if constexpr (MediumType == specfem::element::medium_tag::elastic) { + if constexpr (MediumType == specfem::element::medium_tag::elastic_sv) { return field.elastic; } else if constexpr (MediumType == specfem::element::medium_tag::acoustic) { return field.acoustic; @@ -504,7 +504,7 @@ impl_store_on_device(const int iglob, const ViewType &point_field, const auto &curr_field = [&]() -> const specfem::compute::impl::field_impl< specfem::dimension::type::dim2, MediumType> & { - if constexpr (MediumType == specfem::element::medium_tag::elastic) { + if constexpr (MediumType == specfem::element::medium_tag::elastic_sv) { return field.elastic; } else if constexpr (MediumType == specfem::element::medium_tag::acoustic) { return field.acoustic; @@ -550,7 +550,7 @@ impl_store_on_device(const typename ViewType::simd::mask_type &mask, const auto &curr_field = [&]() -> const specfem::compute::impl::field_impl< specfem::dimension::type::dim2, MediumType> & { - if constexpr (MediumType == specfem::element::medium_tag::elastic) { + if constexpr (MediumType == specfem::element::medium_tag::elastic_sv) { return field.elastic; } else if constexpr (MediumType == specfem::element::medium_tag::acoustic) { return field.acoustic; @@ -623,7 +623,7 @@ impl_store_on_device(const specfem::point::simd_assembly_index &index, const auto &curr_field = [&]() -> const specfem::compute::impl::field_impl< specfem::dimension::type::dim2, MediumType> & { - if constexpr (MediumType == specfem::element::medium_tag::elastic) { + if constexpr (MediumType == specfem::element::medium_tag::elastic_sv) { return field.elastic; } else if constexpr (MediumType == specfem::element::medium_tag::acoustic) { return field.acoustic; @@ -679,7 +679,7 @@ inline void impl_store_on_host(const int iglob, const ViewType &point_field, const auto &curr_field = [&]() -> const specfem::compute::impl::field_impl< specfem::dimension::type::dim2, MediumType> & { - if constexpr (MediumType == specfem::element::medium_tag::elastic) { + if constexpr (MediumType == specfem::element::medium_tag::elastic_sv) { return field.elastic; } else if constexpr (MediumType == specfem::element::medium_tag::acoustic) { return field.acoustic; @@ -725,7 +725,7 @@ inline void impl_store_on_host(const typename ViewType::simd::mask_type &mask, const auto &curr_field = [&]() -> const specfem::compute::impl::field_impl< specfem::dimension::type::dim2, MediumType> & { - if constexpr (MediumType == specfem::element::medium_tag::elastic) { + if constexpr (MediumType == specfem::element::medium_tag::elastic_sv) { return field.elastic; } else if constexpr (MediumType == specfem::element::medium_tag::acoustic) { return field.acoustic; @@ -798,7 +798,7 @@ inline void impl_store_on_host(const specfem::point::simd_assembly_index &index, const auto &curr_field = [&]() -> const specfem::compute::impl::field_impl< specfem::dimension::type::dim2, MediumType> & { - if constexpr (MediumType == specfem::element::medium_tag::elastic) { + if constexpr (MediumType == specfem::element::medium_tag::elastic_sv) { return field.elastic; } else if constexpr (MediumType == specfem::element::medium_tag::acoustic) { return field.acoustic; @@ -971,7 +971,7 @@ impl_add_on_device(const int iglob, const ViewType &point_field, const auto &curr_field = [&]() -> const specfem::compute::impl::field_impl< specfem::dimension::type::dim2, MediumType> & { - if constexpr (MediumType == specfem::element::medium_tag::elastic) { + if constexpr (MediumType == specfem::element::medium_tag::elastic_sv) { return field.elastic; } else if constexpr (MediumType == specfem::element::medium_tag::acoustic) { return field.acoustic; @@ -1017,7 +1017,7 @@ impl_add_on_device(const typename ViewType::simd::mask_type &mask, const auto &curr_field = [&]() -> const specfem::compute::impl::field_impl< specfem::dimension::type::dim2, MediumType> & { - if constexpr (MediumType == specfem::element::medium_tag::elastic) { + if constexpr (MediumType == specfem::element::medium_tag::elastic_sv) { return field.elastic; } else if constexpr (MediumType == specfem::element::medium_tag::acoustic) { return field.acoustic; @@ -1090,7 +1090,7 @@ impl_add_on_device(const specfem::point::simd_assembly_index &index, const auto &curr_field = [&]() -> const specfem::compute::impl::field_impl< specfem::dimension::type::dim2, MediumType> & { - if constexpr (MediumType == specfem::element::medium_tag::elastic) { + if constexpr (MediumType == specfem::element::medium_tag::elastic_sv) { return field.elastic; } else if constexpr (MediumType == specfem::element::medium_tag::acoustic) { return field.acoustic; @@ -1166,7 +1166,7 @@ inline void impl_add_on_host(const int iglob, const ViewType &point_field, const auto &curr_field = [&]() -> const specfem::compute::impl::field_impl< specfem::dimension::type::dim2, MediumType> & { - if constexpr (MediumType == specfem::element::medium_tag::elastic) { + if constexpr (MediumType == specfem::element::medium_tag::elastic_sv) { return field.elastic; } else if constexpr (MediumType == specfem::element::medium_tag::acoustic) { return field.acoustic; @@ -1212,7 +1212,7 @@ inline void impl_add_on_host(const typename ViewType::simd::mask_type &mask, const auto &curr_field = [&]() -> const specfem::compute::impl::field_impl< specfem::dimension::type::dim2, MediumType> & { - if constexpr (MediumType == specfem::element::medium_tag::elastic) { + if constexpr (MediumType == specfem::element::medium_tag::elastic_sv) { return field.elastic; } else if constexpr (MediumType == specfem::element::medium_tag::acoustic) { return field.acoustic; @@ -1284,7 +1284,7 @@ inline void impl_add_on_host(const specfem::point::simd_assembly_index &index, const auto &curr_field = [&]() -> const specfem::compute::impl::field_impl< specfem::dimension::type::dim2, MediumType> & { - if constexpr (MediumType == specfem::element::medium_tag::elastic) { + if constexpr (MediumType == specfem::element::medium_tag::elastic_sv) { return field.elastic; } else if constexpr (MediumType == specfem::element::medium_tag::acoustic) { return field.acoustic; @@ -1475,7 +1475,7 @@ impl_atomic_add_on_device(const int iglob, const ViewType &point_field, const auto &curr_field = [&]() -> const specfem::compute::impl::field_impl< specfem::dimension::type::dim2, MediumType> & { - if constexpr (MediumType == specfem::element::medium_tag::elastic) { + if constexpr (MediumType == specfem::element::medium_tag::elastic_sv) { return field.elastic; } else if constexpr (MediumType == specfem::element::medium_tag::acoustic) { return field.acoustic; @@ -1525,7 +1525,7 @@ impl_atomic_add_on_device(const typename ViewType::simd::mask_type &mask, const auto &curr_field = [&]() -> const specfem::compute::impl::field_impl< specfem::dimension::type::dim2, MediumType> & { - if constexpr (MediumType == specfem::element::medium_tag::elastic) { + if constexpr (MediumType == specfem::element::medium_tag::elastic_sv) { return field.elastic; } else if constexpr (MediumType == specfem::element::medium_tag::acoustic) { return field.acoustic; @@ -1589,7 +1589,7 @@ inline void impl_atomic_add_on_host(const int iglob, const ViewType &point_field const auto &curr_field = [&]() -> const specfem::compute::impl::field_impl< specfem::dimension::type::dim2, MediumType> & { - if constexpr (MediumType == specfem::element::medium_tag::elastic) { + if constexpr (MediumType == specfem::element::medium_tag::elastic_sv) { return field.elastic; } else if constexpr (MediumType == specfem::element::medium_tag::acoustic) { return field.acoustic; @@ -1638,7 +1638,7 @@ inline void impl_atomic_add_on_host(const typename ViewType::simd::mask_type &ma const auto &curr_field = [&]() -> const specfem::compute::impl::field_impl< specfem::dimension::type::dim2, MediumType> & { - if constexpr (MediumType == specfem::element::medium_tag::elastic) { + if constexpr (MediumType == specfem::element::medium_tag::elastic_sv) { return field.elastic; } else if constexpr (MediumType == specfem::element::medium_tag::acoustic) { return field.acoustic; @@ -1796,7 +1796,7 @@ impl_load_on_device(const MemberType &team, const int ispec, const auto &curr_field = [&]() -> const specfem::compute::impl::field_impl< specfem::dimension::type::dim2, MediumType> & { - if constexpr (MediumType == specfem::element::medium_tag::elastic) { + if constexpr (MediumType == specfem::element::medium_tag::elastic_sv) { return field.elastic; } else if constexpr (MediumType == specfem::element::medium_tag::acoustic) { return field.acoustic; @@ -1858,7 +1858,7 @@ inline void impl_load_on_host(const MemberType &team, const int ispec, const auto &curr_field = [&]() -> const specfem::compute::impl::field_impl< specfem::dimension::type::dim2, MediumType> & { - if constexpr (MediumType == specfem::element::medium_tag::elastic) { + if constexpr (MediumType == specfem::element::medium_tag::elastic_sv) { return field.elastic; } else if constexpr (MediumType == specfem::element::medium_tag::acoustic) { return field.acoustic; @@ -1932,7 +1932,7 @@ impl_load_on_device(const MemberType &team, const IteratorType &iterator, const auto &curr_field = [&]() -> const specfem::compute::impl::field_impl< specfem::dimension::type::dim2, MediumType> & { - if constexpr (MediumType == specfem::element::medium_tag::elastic) { + if constexpr (MediumType == specfem::element::medium_tag::elastic_sv) { return field.elastic; } else if constexpr (MediumType == specfem::element::medium_tag::acoustic) { return field.acoustic; @@ -2009,7 +2009,7 @@ impl_load_on_device(const MemberType &team, const IteratorType &iterator, const auto &curr_field = [&]() -> const specfem::compute::impl::field_impl< specfem::dimension::type::dim2, MediumType> & { - if constexpr (MediumType == specfem::element::medium_tag::elastic) { + if constexpr (MediumType == specfem::element::medium_tag::elastic_sv) { return field.elastic; } else if constexpr (MediumType == specfem::element::medium_tag::acoustic) { return field.acoustic; @@ -2092,7 +2092,7 @@ inline void impl_load_on_host(const MemberType &team, const IteratorType &iterat const auto &curr_field = [&]() -> const specfem::compute::impl::field_impl< specfem::dimension::type::dim2, MediumType> & { - if constexpr (MediumType == specfem::element::medium_tag::elastic) { + if constexpr (MediumType == specfem::element::medium_tag::elastic_sv) { return field.elastic; } else if constexpr (MediumType == specfem::element::medium_tag::acoustic) { return field.acoustic; @@ -2167,7 +2167,7 @@ inline void impl_load_on_host(const MemberType &team, const IteratorType &iterat const auto &curr_field = [&]() -> const specfem::compute::impl::field_impl< specfem::dimension::type::dim2, MediumType> & { - if constexpr (MediumType == specfem::element::medium_tag::elastic) { + if constexpr (MediumType == specfem::element::medium_tag::elastic_sv) { return field.elastic; } else if constexpr (MediumType == specfem::element::medium_tag::acoustic) { return field.acoustic; diff --git a/include/compute/fields/simulation_field.hpp b/include/compute/fields/simulation_field.hpp index 70335c809..dc9b6b7a3 100644 --- a/include/compute/fields/simulation_field.hpp +++ b/include/compute/fields/simulation_field.hpp @@ -85,7 +85,7 @@ struct simulation_field { */ template KOKKOS_FORCEINLINE_FUNCTION int get_nglob() const { - if constexpr (MediumType == specfem::element::medium_tag::elastic) { + if constexpr (MediumType == specfem::element::medium_tag::elastic_sv) { return elastic.nglob; } else if constexpr (MediumType == specfem::element::medium_tag::acoustic) { return acoustic.nglob; @@ -107,7 +107,7 @@ struct simulation_field { specfem::kokkos::HostMemSpace> h_assembly_index_mapping; specfem::compute::impl::field_impl + specfem::element::medium_tag::elastic_sv> elastic; ///< Elastic field specfem::compute::impl::field_impl diff --git a/include/compute/fields/simulation_field.tpp b/include/compute/fields/simulation_field.tpp index d63854b86..9dbf890ca 100644 --- a/include/compute/fields/simulation_field.tpp +++ b/include/compute/fields/simulation_field.tpp @@ -63,11 +63,11 @@ specfem::compute::simulation_field::simulation_field( auto elastic_index = Kokkos::subview(h_assembly_index_mapping, Kokkos::ALL, - static_cast(specfem::element::medium_tag::elastic)); + static_cast(specfem::element::medium_tag::elastic_sv)); elastic = specfem::compute::impl::field_impl( + specfem::element::medium_tag::elastic_sv>( mesh, element_types, elastic_index); acoustic = specfem::compute::impl::field_impl< diff --git a/include/compute/impl/value_containers.hpp b/include/compute/impl/value_containers.hpp index e8b247f7f..95d9c25ca 100644 --- a/include/compute/impl/value_containers.hpp +++ b/include/compute/impl/value_containers.hpp @@ -28,11 +28,11 @@ struct value_containers { ///< property index ///< mapping - containers_type elastic_isotropic; ///< Elastic isotropic material values - containers_type elastic_anisotropic; ///< Elastic isotropic material values @@ -60,10 +60,11 @@ struct value_containers { KOKKOS_INLINE_FUNCTION constexpr containers_type const & get_container() const { - if constexpr ((MediumTag == specfem::element::medium_tag::elastic) && + if constexpr ((MediumTag == specfem::element::medium_tag::elastic_sv) && (PropertyTag == specfem::element::property_tag::isotropic)) { return elastic_isotropic; - } else if constexpr ((MediumTag == specfem::element::medium_tag::elastic) && + } else if constexpr ((MediumTag == + specfem::element::medium_tag::elastic_sv) && (PropertyTag == specfem::element::property_tag::anisotropic)) { return elastic_anisotropic; diff --git a/include/compute/sources/sources.hpp b/include/compute/sources/sources.hpp index 0f7cddc76..f9d88378d 100644 --- a/include/compute/sources/sources.hpp +++ b/include/compute/sources/sources.hpp @@ -273,11 +273,11 @@ load_on_device(const IteratorIndexType iterator_index, static_assert(index.dimension == specfem::dimension::type::dim2, "IndexType must be a 2D index type"); - static_assert( - ((PointSourceType::medium_tag == - specfem::element::medium_tag::acoustic) || - (PointSourceType::medium_tag == specfem::element::medium_tag::elastic)), - "PointSourceType must be an acoustic or elastic point source"); + static_assert(((PointSourceType::medium_tag == + specfem::element::medium_tag::acoustic) || + (PointSourceType::medium_tag == + specfem::element::medium_tag::elastic_sv)), + "PointSourceType must be an acoustic or elastic point source"); #ifndef NDEBUG @@ -351,11 +351,11 @@ void load_on_host(const IteratorIndexType iterator_index, static_assert(index.dimension == specfem::dimension::type::dim2, "IndexType must be a 2D index type"); - static_assert( - ((PointSourceType::medium_tag == - specfem::element::medium_tag::acoustic) || - (PointSourceType::medium_tag == specfem::element::medium_tag::elastic)), - "PointSourceType must be an acoustic or elastic point source"); + static_assert(((PointSourceType::medium_tag == + specfem::element::medium_tag::acoustic) || + (PointSourceType::medium_tag == + specfem::element::medium_tag::elastic_sv)), + "PointSourceType must be an acoustic or elastic point source"); #ifndef NDEBUG const int isource = iterator_index.imap; @@ -428,11 +428,11 @@ store_on_device(const IteratorIndexType iterator_index, static_assert(index.dimension == specfem::dimension::type::dim2, "IndexType must be a 2D index type"); - static_assert( - ((PointSourceType::medium_tag == - specfem::element::medium_tag::acoustic) || - (PointSourceType::medium_tag == specfem::element::medium_tag::elastic)), - "PointSourceType must be an acoustic or elastic point source"); + static_assert(((PointSourceType::medium_tag == + specfem::element::medium_tag::acoustic) || + (PointSourceType::medium_tag == + specfem::element::medium_tag::elastic_sv)), + "PointSourceType must be an acoustic or elastic point source"); #ifndef NDEBUG const int isource = iterator_index.imap; @@ -503,11 +503,11 @@ void store_on_host(const IteratorIndexType iterator_index, static_assert(index.dimension == specfem::dimension::type::dim2, "IndexType must be a 2D index type"); - static_assert( - ((PointSourceType::medium_tag == - specfem::element::medium_tag::acoustic) || - (PointSourceType::medium_tag == specfem::element::medium_tag::elastic)), - "PointSourceType must be an acoustic or elastic point source"); + static_assert(((PointSourceType::medium_tag == + specfem::element::medium_tag::acoustic) || + (PointSourceType::medium_tag == + specfem::element::medium_tag::elastic_sv)), + "PointSourceType must be an acoustic or elastic point source"); #ifndef NDEBUG const int isource = iterator_index.imap; diff --git a/include/coupled_interface/coupled_interface.hpp b/include/coupled_interface/coupled_interface.hpp index 1ba515fff..68116ed8d 100644 --- a/include/coupled_interface/coupled_interface.hpp +++ b/include/coupled_interface/coupled_interface.hpp @@ -16,12 +16,12 @@ class coupled_interface; template class coupled_interface { + specfem::element::medium_tag::elastic_sv> { public: using CoupledPointFieldType = specfem::point::field; + specfem::element::medium_tag::elastic_sv, true, + false, false, false, false>; using SelfPointFieldType = specfem::point::field -class coupled_interface { public: using CoupledPointFieldType = @@ -38,8 +38,8 @@ class coupled_interface; using SelfPointFieldType = specfem::point::field; + specfem::element::medium_tag::elastic_sv, false, + false, true, false, false>; }; } // namespace impl @@ -82,8 +82,8 @@ class coupled_interface { "Error: self_medium cannot be equal to coupled_medium"); static_assert(((SelfMedium == specfem::element::medium_tag::acoustic && - CoupledMedium == specfem::element::medium_tag::elastic) || - (SelfMedium == specfem::element::medium_tag::elastic && + CoupledMedium == specfem::element::medium_tag::elastic_sv) || + (SelfMedium == specfem::element::medium_tag::elastic_sv && CoupledMedium == specfem::element::medium_tag::acoustic)), "Only acoustic-elastic coupling is supported at the moment."); diff --git a/include/coupled_interface/impl/compute_coupling.hpp b/include/coupled_interface/impl/compute_coupling.hpp index a08a05b63..265775336 100644 --- a/include/coupled_interface/impl/compute_coupling.hpp +++ b/include/coupled_interface/impl/compute_coupling.hpp @@ -10,7 +10,7 @@ namespace impl { using elastic_type = std::integral_constant; + specfem::element::medium_tag::elastic_sv>; using acoustic_type = std::integral_constant class attributes { + specfem::element::medium_tag::elastic_sv> { public: constexpr static int dimension() { return 2; } diff --git a/include/kokkos_kernels/impl/interface_kernels.hpp b/include/kokkos_kernels/impl/interface_kernels.hpp index 9e52c7752..947bf2fa7 100644 --- a/include/kokkos_kernels/impl/interface_kernels.hpp +++ b/include/kokkos_kernels/impl/interface_kernels.hpp @@ -18,7 +18,7 @@ class interface_kernels; template class interface_kernels { + specfem::element::medium_tag::elastic_sv> { public: interface_kernels(const specfem::compute::assembly &assembly) : elastic_acoustic_interface(assembly) {} @@ -29,7 +29,7 @@ class interface_kernels elastic_acoustic_interface; }; @@ -49,7 +49,7 @@ class interface_kernels + specfem::element::medium_tag::elastic_sv> acoustic_elastic_interface; }; diff --git a/include/medium/dim2/elastic/anisotropic/frechet_derivative.hpp b/include/medium/dim2/elastic/anisotropic/frechet_derivative.hpp index 2f83ec85c..cd5f65ab7 100644 --- a/include/medium/dim2/elastic/anisotropic/frechet_derivative.hpp +++ b/include/medium/dim2/elastic/anisotropic/frechet_derivative.hpp @@ -18,7 +18,7 @@ impl_compute_frechet_derivatives( const std::integral_constant, const std::integral_constant, + specfem::element::medium_tag::elastic_sv>, const std::integral_constant, const PointPropertiesType &properties, diff --git a/include/medium/dim2/elastic/anisotropic/kernels_container.hpp b/include/medium/dim2/elastic/anisotropic/kernels_container.hpp index b03e170ca..40349e89d 100644 --- a/include/medium/dim2/elastic/anisotropic/kernels_container.hpp +++ b/include/medium/dim2/elastic/anisotropic/kernels_container.hpp @@ -9,10 +9,10 @@ namespace specfem { namespace medium { template <> -class kernels_container { public: - constexpr static auto value_type = specfem::element::medium_tag::elastic; + constexpr static auto value_type = specfem::element::medium_tag::elastic_sv; constexpr static auto property_type = specfem::element::property_tag::anisotropic; int nspec; diff --git a/include/medium/dim2/elastic/anisotropic/mass_matrix.hpp b/include/medium/dim2/elastic/anisotropic/mass_matrix.hpp index 7699c821a..beb101010 100644 --- a/include/medium/dim2/elastic/anisotropic/mass_matrix.hpp +++ b/include/medium/dim2/elastic/anisotropic/mass_matrix.hpp @@ -15,11 +15,11 @@ namespace medium { template KOKKOS_FUNCTION specfem::point::field impl_mass_matrix_component( const specfem::point::properties &properties, const specfem::point::partial_derivatives< specfem::dimension::type::dim2, true, UseSIMD> &partial_derivatives); diff --git a/include/medium/dim2/elastic/anisotropic/properties.hpp b/include/medium/dim2/elastic/anisotropic/properties.hpp index ac3c8eae0..2cdb1d43b 100644 --- a/include/medium/dim2/elastic/anisotropic/properties.hpp +++ b/include/medium/dim2/elastic/anisotropic/properties.hpp @@ -17,13 +17,13 @@ namespace medium { * */ template <> -class properties { public: constexpr static auto dimension = specfem::dimension::type::dim2; ///< Dimension of the material constexpr static auto medium_tag = - specfem::element::medium_tag::elastic; ///< Medium tag + specfem::element::medium_tag::elastic_sv; ///< Medium tag constexpr static auto property_tag = specfem::element::property_tag::anisotropic; ///< Property tag @@ -77,7 +77,7 @@ class properties &other) const { return (std::abs(this->density - other.density) < 1e-6 && @@ -100,7 +100,7 @@ class properties &other) const { return !(*this == other); diff --git a/include/medium/dim2/elastic/anisotropic/properties_container.hpp b/include/medium/dim2/elastic/anisotropic/properties_container.hpp index ca78ed052..97f5507a2 100644 --- a/include/medium/dim2/elastic/anisotropic/properties_container.hpp +++ b/include/medium/dim2/elastic/anisotropic/properties_container.hpp @@ -8,11 +8,11 @@ namespace specfem { namespace medium { template <> -struct properties_container { constexpr static auto dimension = specfem::dimension::type::dim2; - constexpr static auto value_type = specfem::element::medium_tag::elastic; + constexpr static auto value_type = specfem::element::medium_tag::elastic_sv; constexpr static auto property_type = specfem::element::property_tag::anisotropic; diff --git a/include/medium/dim2/elastic/anisotropic/source.hpp b/include/medium/dim2/elastic/anisotropic/source.hpp index 551a72889..c30704ba6 100644 --- a/include/medium/dim2/elastic/anisotropic/source.hpp +++ b/include/medium/dim2/elastic/anisotropic/source.hpp @@ -12,7 +12,7 @@ KOKKOS_INLINE_FUNCTION auto impl_compute_source_contribution( const std::integral_constant, const std::integral_constant, + specfem::element::medium_tag::elastic_sv>, const std::integral_constant, const PointSourcesType &point_source, diff --git a/include/medium/dim2/elastic/anisotropic/stress.hpp b/include/medium/dim2/elastic/anisotropic/stress.hpp index 39ba0382f..4fdbf94d4 100644 --- a/include/medium/dim2/elastic/anisotropic/stress.hpp +++ b/include/medium/dim2/elastic/anisotropic/stress.hpp @@ -9,16 +9,18 @@ namespace specfem { namespace medium { template -KOKKOS_INLINE_FUNCTION specfem::point::stress< - specfem::dimension::type::dim2, specfem::element::medium_tag::elastic, - UseSIMD> -impl_compute_stress( - const specfem::point::properties< - specfem::dimension::type::dim2, specfem::element::medium_tag::elastic, - specfem::element::property_tag::anisotropic, UseSIMD> &properties, - const specfem::point::field_derivatives< - specfem::dimension::type::dim2, specfem::element::medium_tag::elastic, - UseSIMD> &field_derivatives) { +KOKKOS_INLINE_FUNCTION + specfem::point::stress + impl_compute_stress( + const specfem::point::properties< + specfem::dimension::type::dim2, + specfem::element::medium_tag::elastic_sv, + specfem::element::property_tag::anisotropic, UseSIMD> &properties, + const specfem::point::field_derivatives< + specfem::dimension::type::dim2, + specfem::element::medium_tag::elastic_sv, UseSIMD> + &field_derivatives) { using datatype = typename specfem::datatype::simd::datatype; diff --git a/include/medium/dim2/elastic/anisotropic/stress_integrand.hpp b/include/medium/dim2/elastic/anisotropic/stress_integrand.hpp index 3ce201353..228fc82c6 100644 --- a/include/medium/dim2/elastic/anisotropic/stress_integrand.hpp +++ b/include/medium/dim2/elastic/anisotropic/stress_integrand.hpp @@ -17,17 +17,18 @@ namespace medium { // stress_integrand = \sum_{i,k=1}^{2} F_{ik} \partial_i w^{\alpha\gamma} template KOKKOS_FUNCTION specfem::point::stress_integrand< - specfem::dimension::type::dim2, specfem::element::medium_tag::elastic, + specfem::dimension::type::dim2, specfem::element::medium_tag::elastic_sv, UseSIMD> impl_compute_stress_integrands( const specfem::point::partial_derivatives< specfem::dimension::type::dim2, false, UseSIMD> &partial_derivatives, const specfem::point::properties< - specfem::dimension::type::dim2, specfem::element::medium_tag::elastic, + specfem::dimension::type::dim2, + specfem::element::medium_tag::elastic_sv, specfem::element::property_tag::anisotropic, UseSIMD> &properties, const specfem::point::field_derivatives< - specfem::dimension::type::dim2, specfem::element::medium_tag::elastic, - UseSIMD> &field_derivatives); + specfem::dimension::type::dim2, + specfem::element::medium_tag::elastic_sv, UseSIMD> &field_derivatives); } // namespace medium } // namespace specfem diff --git a/include/medium/dim2/elastic/anisotropic/stress_integrand.tpp b/include/medium/dim2/elastic/anisotropic/stress_integrand.tpp index 6ee401cc1..24c928cf9 100644 --- a/include/medium/dim2/elastic/anisotropic/stress_integrand.tpp +++ b/include/medium/dim2/elastic/anisotropic/stress_integrand.tpp @@ -5,16 +5,16 @@ template KOKKOS_FUNCTION specfem::point::stress_integrand< - specfem::dimension::type::dim2, specfem::element::medium_tag::elastic, + specfem::dimension::type::dim2, specfem::element::medium_tag::elastic_sv, UseSIMD> specfem::medium::impl_compute_stress_integrands( const specfem::point::partial_derivatives< specfem::dimension::type::dim2, false, UseSIMD> &partial_derivatives, const specfem::point::properties< - specfem::dimension::type::dim2, specfem::element::medium_tag::elastic, + specfem::dimension::type::dim2, specfem::element::medium_tag::elastic_sv, specfem::element::property_tag::anisotropic, UseSIMD> &properties, const specfem::point::field_derivatives< - specfem::dimension::type::dim2, specfem::element::medium_tag::elastic, + specfem::dimension::type::dim2, specfem::element::medium_tag::elastic_sv, UseSIMD> &field_derivatives) { using datatype = diff --git a/include/medium/dim2/elastic/anisotropic/wavefield.hpp b/include/medium/dim2/elastic/anisotropic/wavefield.hpp index 4dfd2050b..d58def753 100644 --- a/include/medium/dim2/elastic/anisotropic/wavefield.hpp +++ b/include/medium/dim2/elastic/anisotropic/wavefield.hpp @@ -17,7 +17,7 @@ KOKKOS_FUNCTION void impl_compute_wavefield( const std::integral_constant, const std::integral_constant, + specfem::element::medium_tag::elastic_sv>, const std::integral_constant, const MemberType &team, const IteratorType &iterator, @@ -26,13 +26,12 @@ KOKKOS_FUNCTION void impl_compute_wavefield( const specfem::wavefield::type wavefield_component, WavefieldViewType wavefield) { - using FieldDerivativesType = - specfem::point::field_derivatives; + using FieldDerivativesType = specfem::point::field_derivatives< + specfem::dimension::type::dim2, specfem::element::medium_tag::elastic_sv, + false>; using PointPropertyType = specfem::point::properties< - specfem::dimension::type::dim2, specfem::element::medium_tag::elastic, + specfem::dimension::type::dim2, specfem::element::medium_tag::elastic_sv, specfem::element::property_tag::anisotropic, false>; const auto &properties = assembly.properties; diff --git a/include/medium/dim2/elastic/isotropic/frechet_derivative.hpp b/include/medium/dim2/elastic/isotropic/frechet_derivative.hpp index 3949495b1..18462eeb7 100644 --- a/include/medium/dim2/elastic/isotropic/frechet_derivative.hpp +++ b/include/medium/dim2/elastic/isotropic/frechet_derivative.hpp @@ -20,7 +20,7 @@ impl_compute_frechet_derivatives( const std::integral_constant, const std::integral_constant, + specfem::element::medium_tag::elastic_sv>, const std::integral_constant, const PointPropertiesType &properties, diff --git a/include/medium/dim2/elastic/isotropic/kernels_container.hpp b/include/medium/dim2/elastic/isotropic/kernels_container.hpp index 65073f823..09a96f420 100644 --- a/include/medium/dim2/elastic/isotropic/kernels_container.hpp +++ b/include/medium/dim2/elastic/isotropic/kernels_container.hpp @@ -10,10 +10,10 @@ namespace specfem { namespace medium { template <> -class kernels_container { public: - constexpr static auto value_type = specfem::element::medium_tag::elastic; + constexpr static auto value_type = specfem::element::medium_tag::elastic_sv; constexpr static auto property_type = specfem::element::property_tag::isotropic; int nspec; diff --git a/include/medium/dim2/elastic/isotropic/mass_matrix.hpp b/include/medium/dim2/elastic/isotropic/mass_matrix.hpp index f218c9365..dd6b5c14a 100644 --- a/include/medium/dim2/elastic/isotropic/mass_matrix.hpp +++ b/include/medium/dim2/elastic/isotropic/mass_matrix.hpp @@ -13,11 +13,11 @@ namespace medium { template KOKKOS_FUNCTION specfem::point::field impl_mass_matrix_component( const specfem::point::properties &properties, const specfem::point::partial_derivatives< specfem::dimension::type::dim2, true, UseSIMD> &partial_derivatives); diff --git a/include/medium/dim2/elastic/isotropic/mass_matrix.tpp b/include/medium/dim2/elastic/isotropic/mass_matrix.tpp index f49f3d8f7..b3e8250a7 100644 --- a/include/medium/dim2/elastic/isotropic/mass_matrix.tpp +++ b/include/medium/dim2/elastic/isotropic/mass_matrix.tpp @@ -4,11 +4,11 @@ template KOKKOS_FUNCTION specfem::point::field specfem::medium::impl_mass_matrix_component( const specfem::point::properties< - specfem::dimension::type::dim2, specfem::element::medium_tag::elastic, + specfem::dimension::type::dim2, specfem::element::medium_tag::elastic_sv, PropertyTag, UseSIMD> &properties, const specfem::point::partial_derivatives< specfem::dimension::type::dim2, true, UseSIMD> &partial_derivatives) { diff --git a/include/medium/dim2/elastic/isotropic/properties.hpp b/include/medium/dim2/elastic/isotropic/properties.hpp index 6dc7162d9..f6b58a75e 100644 --- a/include/medium/dim2/elastic/isotropic/properties.hpp +++ b/include/medium/dim2/elastic/isotropic/properties.hpp @@ -17,13 +17,13 @@ namespace medium { * */ template <> -class properties { public: constexpr static auto dimension = specfem::dimension::type::dim2; ///< Dimension of the material constexpr static auto medium_tag = - specfem::element::medium_tag::elastic; ///< Medium tag + specfem::element::medium_tag::elastic_sv; ///< Medium tag constexpr static auto property_tag = specfem::element::property_tag::isotropic; ///< Property tag @@ -73,7 +73,7 @@ class properties &other) const { @@ -91,7 +91,7 @@ class properties &other) const { return !(*this == other); diff --git a/include/medium/dim2/elastic/isotropic/properties_container.hpp b/include/medium/dim2/elastic/isotropic/properties_container.hpp index 4be8eda70..cf1dc2d96 100644 --- a/include/medium/dim2/elastic/isotropic/properties_container.hpp +++ b/include/medium/dim2/elastic/isotropic/properties_container.hpp @@ -8,11 +8,11 @@ namespace specfem { namespace medium { template <> -struct properties_container { constexpr static auto dimension = specfem::dimension::type::dim2; - constexpr static auto value_type = specfem::element::medium_tag::elastic; + constexpr static auto value_type = specfem::element::medium_tag::elastic_sv; constexpr static auto property_type = specfem::element::property_tag::isotropic; diff --git a/include/medium/dim2/elastic/isotropic/source.hpp b/include/medium/dim2/elastic/isotropic/source.hpp index 16c39d878..f74ca6b96 100644 --- a/include/medium/dim2/elastic/isotropic/source.hpp +++ b/include/medium/dim2/elastic/isotropic/source.hpp @@ -12,7 +12,7 @@ KOKKOS_INLINE_FUNCTION auto impl_compute_source_contribution( const std::integral_constant, const std::integral_constant, + specfem::element::medium_tag::elastic_sv>, const std::integral_constant, const PointSourcesType &point_source, diff --git a/include/medium/dim2/elastic/isotropic/stress.hpp b/include/medium/dim2/elastic/isotropic/stress.hpp index a90f6cceb..c3448e730 100644 --- a/include/medium/dim2/elastic/isotropic/stress.hpp +++ b/include/medium/dim2/elastic/isotropic/stress.hpp @@ -11,15 +11,16 @@ namespace medium { template KOKKOS_INLINE_FUNCTION specfem::point::stress< - specfem::dimension::type::dim2, specfem::element::medium_tag::elastic, + specfem::dimension::type::dim2, specfem::element::medium_tag::elastic_sv, UseSIMD> impl_compute_stress( - const specfem::point::properties< - specfem::dimension::type::dim2, specfem::element::medium_tag::elastic, - specfem::element::property_tag::isotropic, UseSIMD> &properties, + const specfem::point::properties &properties, const specfem::point::field_derivatives< - specfem::dimension::type::dim2, specfem::element::medium_tag::elastic, - UseSIMD> &field_derivatives) { + specfem::dimension::type::dim2, + specfem::element::medium_tag::elastic_sv, UseSIMD> &field_derivatives) { using datatype = typename specfem::datatype::simd::datatype; diff --git a/include/medium/dim2/elastic/isotropic/stress_integrand.hpp b/include/medium/dim2/elastic/isotropic/stress_integrand.hpp index e560db5f8..dac199b6e 100644 --- a/include/medium/dim2/elastic/isotropic/stress_integrand.hpp +++ b/include/medium/dim2/elastic/isotropic/stress_integrand.hpp @@ -16,17 +16,18 @@ namespace medium { // stress_integrand = \sum_{i,k=1}^{2} F_{ik} \partial_i w^{\alpha\gamma} template KOKKOS_FUNCTION specfem::point::stress_integrand< - specfem::dimension::type::dim2, specfem::element::medium_tag::elastic, + specfem::dimension::type::dim2, specfem::element::medium_tag::elastic_sv, UseSIMD> impl_compute_stress_integrands( const specfem::point::partial_derivatives< specfem::dimension::type::dim2, false, UseSIMD> &partial_derivatives, - const specfem::point::properties< - specfem::dimension::type::dim2, specfem::element::medium_tag::elastic, - specfem::element::property_tag::isotropic, UseSIMD> &properties, + const specfem::point::properties &properties, const specfem::point::field_derivatives< - specfem::dimension::type::dim2, specfem::element::medium_tag::elastic, - UseSIMD> &field_derivatives); + specfem::dimension::type::dim2, + specfem::element::medium_tag::elastic_sv, UseSIMD> &field_derivatives); } // namespace medium } // namespace specfem diff --git a/include/medium/dim2/elastic/isotropic/stress_integrand.tpp b/include/medium/dim2/elastic/isotropic/stress_integrand.tpp index e6d2f0d88..6c209ae1e 100644 --- a/include/medium/dim2/elastic/isotropic/stress_integrand.tpp +++ b/include/medium/dim2/elastic/isotropic/stress_integrand.tpp @@ -4,16 +4,16 @@ template KOKKOS_FUNCTION specfem::point::stress_integrand< - specfem::dimension::type::dim2, specfem::element::medium_tag::elastic, + specfem::dimension::type::dim2, specfem::element::medium_tag::elastic_sv, UseSIMD> specfem::medium::impl_compute_stress_integrands( const specfem::point::partial_derivatives< specfem::dimension::type::dim2, false, UseSIMD> &partial_derivatives, const specfem::point::properties< - specfem::dimension::type::dim2, specfem::element::medium_tag::elastic, + specfem::dimension::type::dim2, specfem::element::medium_tag::elastic_sv, specfem::element::property_tag::isotropic, UseSIMD> &properties, const specfem::point::field_derivatives< - specfem::dimension::type::dim2, specfem::element::medium_tag::elastic, + specfem::dimension::type::dim2, specfem::element::medium_tag::elastic_sv, UseSIMD> &field_derivatives) { using datatype = diff --git a/include/medium/dim2/elastic/isotropic/wavefield.hpp b/include/medium/dim2/elastic/isotropic/wavefield.hpp index 5deb6b24e..040c7ef15 100644 --- a/include/medium/dim2/elastic/isotropic/wavefield.hpp +++ b/include/medium/dim2/elastic/isotropic/wavefield.hpp @@ -17,7 +17,7 @@ KOKKOS_FUNCTION void impl_compute_wavefield( const std::integral_constant, const std::integral_constant, + specfem::element::medium_tag::elastic_sv>, const std::integral_constant, const MemberType &team, const IteratorType &iterator, @@ -26,13 +26,12 @@ KOKKOS_FUNCTION void impl_compute_wavefield( const specfem::wavefield::type wavefield_component, WavefieldViewType wavefield) { - using FieldDerivativesType = - specfem::point::field_derivatives; + using FieldDerivativesType = specfem::point::field_derivatives< + specfem::dimension::type::dim2, specfem::element::medium_tag::elastic_sv, + false>; using PointPropertyType = specfem::point::properties< - specfem::dimension::type::dim2, specfem::element::medium_tag::elastic, + specfem::dimension::type::dim2, specfem::element::medium_tag::elastic_sv, specfem::element::property_tag::isotropic, false>; const auto &properties = assembly.properties; diff --git a/include/mesh/coupled_interfaces/coupled_interfaces.hpp b/include/mesh/coupled_interfaces/coupled_interfaces.hpp index b3508ece5..750ba45e5 100644 --- a/include/mesh/coupled_interfaces/coupled_interfaces.hpp +++ b/include/mesh/coupled_interfaces/coupled_interfaces.hpp @@ -28,18 +28,19 @@ struct coupled_interfaces { coupled_interfaces() : elastic_acoustic(), acoustic_poroelastic(), elastic_poroelastic(){}; - coupled_interfaces(specfem::mesh::interface_container< - DimensionType, specfem::element::medium_tag::elastic, - specfem::element::medium_tag::acoustic> - elastic_acoustic, - specfem::mesh::interface_container< - DimensionType, specfem::element::medium_tag::acoustic, - specfem::element::medium_tag::poroelastic> - acoustic_poroelastic, - specfem::mesh::interface_container< - DimensionType, specfem::element::medium_tag::elastic, - specfem::element::medium_tag::poroelastic> - elastic_poroelastic) + coupled_interfaces( + specfem::mesh::interface_container< + DimensionType, specfem::element::medium_tag::elastic_sv, + specfem::element::medium_tag::acoustic> + elastic_acoustic, + specfem::mesh::interface_container< + DimensionType, specfem::element::medium_tag::acoustic, + specfem::element::medium_tag::poroelastic> + acoustic_poroelastic, + specfem::mesh::interface_container< + DimensionType, specfem::element::medium_tag::elastic_sv, + specfem::element::medium_tag::poroelastic> + elastic_poroelastic) : elastic_acoustic(elastic_acoustic), acoustic_poroelastic(acoustic_poroelastic), elastic_poroelastic(elastic_poroelastic){}; @@ -55,18 +56,18 @@ struct coupled_interfaces { template std::variant, specfem::mesh::interface_container< DimensionType, specfem::element::medium_tag::acoustic, specfem::element::medium_tag::poroelastic>, specfem::mesh::interface_container< - DimensionType, specfem::element::medium_tag::elastic, + DimensionType, specfem::element::medium_tag::elastic_sv, specfem::element::medium_tag::poroelastic> > get() const; specfem::mesh::interface_container elastic_acoustic; ///< Elastic-acoustic interfaces @@ -76,7 +77,7 @@ struct coupled_interfaces { acoustic_poroelastic; ///< Acoustic-poroelastic interfaces specfem::mesh::interface_container elastic_poroelastic; ///< Elastic-poroelastic interfaces }; diff --git a/include/mesh/materials/materials.hpp b/include/mesh/materials/materials.hpp index 06f447f1f..b81366e32 100644 --- a/include/mesh/materials/materials.hpp +++ b/include/mesh/materials/materials.hpp @@ -58,14 +58,14 @@ struct materials { material_index_mapping; ///< Mapping of spectral element to material ///< properties - specfem::mesh::materials::material - elastic_isotropic; ///< Elastic isotropic material properties + elastic_sv_isotropic; ///< Elastic isotropic material properties specfem::mesh::materials::material< - specfem::element::medium_tag::elastic, + specfem::element::medium_tag::elastic_sv, specfem::element::property_tag::anisotropic> - elastic_anisotropic; ///< Elastic anisotropic material properties + elastic_sv_anisotropic; ///< Elastic anisotropic material properties specfem::mesh::materials::material @@ -100,9 +100,9 @@ struct materials { * @return std::variant Material properties */ std::variant< - specfem::medium::material, - specfem::medium::material, specfem::medium::material > diff --git a/include/point/kernels.hpp b/include/point/kernels.hpp index 43b0fdcb0..2c14f54fe 100644 --- a/include/point/kernels.hpp +++ b/include/point/kernels.hpp @@ -30,7 +30,7 @@ struct kernels; */ template struct kernels { public: /** @@ -50,7 +50,7 @@ struct kernels struct kernels { public: /** @@ -163,7 +163,7 @@ struct kernels struct properties { /** @@ -38,7 +38,7 @@ struct properties; ///< SIMD type constexpr static auto dimension = specfem::dimension::type::dim2; - constexpr static auto medium_tag = specfem::element::medium_tag::elastic; + constexpr static auto medium_tag = specfem::element::medium_tag::elastic_sv; constexpr static auto property_tag = specfem::element::property_tag::isotropic; using value_type = @@ -132,7 +132,7 @@ struct properties struct properties { /** @@ -143,7 +143,7 @@ struct properties; ///< SIMD type constexpr static auto dimension = specfem::dimension::type::dim2; - constexpr static auto medium_tag = specfem::element::medium_tag::elastic; + constexpr static auto medium_tag = specfem::element::medium_tag::elastic_sv; constexpr static auto property_tag = specfem::element::property_tag::anisotropic; using value_type = diff --git a/include/solver/time_marching.tpp b/include/solver/time_marching.tpp index 63e5d8106..ac1314e48 100644 --- a/include/solver/time_marching.tpp +++ b/include/solver/time_marching.tpp @@ -11,7 +11,7 @@ void specfem::solver::time_marching::run() { constexpr auto acoustic = specfem::element::medium_tag::acoustic; - constexpr auto elastic = specfem::element::medium_tag::elastic; + constexpr auto elastic_sv = specfem::element::medium_tag::elastic_sv; kernels.initialize(time_scheme->get_timestep()); @@ -19,13 +19,13 @@ void specfem::solver::time_marchingiterate_forward()) { time_scheme->apply_predictor_phase_forward(acoustic); - time_scheme->apply_predictor_phase_forward(elastic); + time_scheme->apply_predictor_phase_forward(elastic_sv); kernels.template update_wavefields(istep); time_scheme->apply_corrector_phase_forward(acoustic); - kernels.template update_wavefields(istep); - time_scheme->apply_corrector_phase_forward(elastic); + kernels.template update_wavefields(istep); + time_scheme->apply_corrector_phase_forward(elastic_sv); if (time_scheme->compute_seismogram(istep)) { kernels.compute_seismograms(time_scheme->get_seismogram_step()); @@ -54,7 +54,7 @@ void specfem::solver::time_marching::run() { constexpr auto acoustic = specfem::element::medium_tag::acoustic; - constexpr auto elastic = specfem::element::medium_tag::elastic; + constexpr auto elastic_sv = specfem::element::medium_tag::elastic_sv; adjoint_kernels.initialize(time_scheme->get_timestep()); backward_kernels.initialize(time_scheme->get_timestep()); @@ -64,20 +64,20 @@ void specfem::solver::time_marchingiterate_backward()) { // Adjoint time step time_scheme->apply_predictor_phase_forward(acoustic); - time_scheme->apply_predictor_phase_forward(elastic); + time_scheme->apply_predictor_phase_forward(elastic_sv); adjoint_kernels.template update_wavefields(istep); time_scheme->apply_corrector_phase_forward(acoustic); - adjoint_kernels.template update_wavefields(istep); - time_scheme->apply_corrector_phase_forward(elastic); + adjoint_kernels.template update_wavefields(istep); + time_scheme->apply_corrector_phase_forward(elastic_sv); // Backward time step - time_scheme->apply_predictor_phase_backward(elastic); + time_scheme->apply_predictor_phase_backward(elastic_sv); time_scheme->apply_predictor_phase_backward(acoustic); - backward_kernels.template update_wavefields(istep); - time_scheme->apply_corrector_phase_backward(elastic); + backward_kernels.template update_wavefields(istep); + time_scheme->apply_corrector_phase_backward(elastic_sv); backward_kernels.template update_wavefields(istep); time_scheme->apply_corrector_phase_backward(acoustic); diff --git a/include/timescheme/newmark.tpp b/include/timescheme/newmark.tpp index 13dd2e0b0..2c74e1c2b 100644 --- a/include/timescheme/newmark.tpp +++ b/include/timescheme/newmark.tpp @@ -198,11 +198,11 @@ void specfem::time_scheme::newmark:: apply_corrector_phase_forward(const specfem::element::medium_tag tag) { constexpr auto wavefield = specfem::wavefield::simulation_field::forward; - constexpr auto elastic = specfem::element::medium_tag::elastic; + constexpr auto elastic_sv = specfem::element::medium_tag::elastic_sv; constexpr auto acoustic = specfem::element::medium_tag::acoustic; - if (tag == elastic) { - corrector_phase_impl(field, deltatover2); + if (tag == elastic_sv) { + corrector_phase_impl(field, deltatover2); } else if (tag == acoustic) { corrector_phase_impl(field, deltatover2); } else { @@ -216,11 +216,11 @@ void specfem::time_scheme::newmark:: apply_predictor_phase_forward(const specfem::element::medium_tag tag) { constexpr auto wavefield = specfem::wavefield::simulation_field::forward; - constexpr auto elastic = specfem::element::medium_tag::elastic; + constexpr auto elastic_sv = specfem::element::medium_tag::elastic_sv; constexpr auto acoustic = specfem::element::medium_tag::acoustic; - if (tag == elastic) { - predictor_phase_impl(field, deltat, deltatover2, + if (tag == elastic_sv) { + predictor_phase_impl(field, deltat, deltatover2, deltasquareover2); } else if (tag == acoustic) { predictor_phase_impl(field, deltat, deltatover2, @@ -234,12 +234,12 @@ void specfem::time_scheme::newmark:: void specfem::time_scheme::newmark:: apply_corrector_phase_forward(const specfem::element::medium_tag tag) { constexpr auto wavefield = specfem::wavefield::simulation_field::adjoint; - constexpr auto elastic = specfem::element::medium_tag::elastic; + constexpr auto elastic_sv = specfem::element::medium_tag::elastic_sv; constexpr auto acoustic = specfem::element::medium_tag::acoustic; - if (tag == elastic) { - corrector_phase_impl(adjoint_field, deltatover2); - } else if (tag == acoustic) { + if (tag == elastic_sv) { + corrector_phase_impl(adjoint_field, deltatover2); + } else if (tag == elastic_sv) { corrector_phase_impl(adjoint_field, deltatover2); } else { static_assert("medium type not supported"); @@ -251,11 +251,11 @@ void specfem::time_scheme::newmark:: void specfem::time_scheme::newmark:: apply_corrector_phase_backward(const specfem::element::medium_tag tag) { constexpr auto wavefield = specfem::wavefield::simulation_field::backward; - constexpr auto elastic = specfem::element::medium_tag::elastic; + constexpr auto elastic_sv = specfem::element::medium_tag::elastic_sv; constexpr auto acoustic = specfem::element::medium_tag::acoustic; - if (tag == elastic) { - corrector_phase_impl(backward_field, + if (tag == elastic_sv) { + corrector_phase_impl(backward_field, -1.0 * deltatover2); } else if (tag == acoustic) { corrector_phase_impl(backward_field, @@ -271,11 +271,11 @@ void specfem::time_scheme::newmark:: apply_predictor_phase_forward(const specfem::element::medium_tag tag) { constexpr auto wavefield = specfem::wavefield::simulation_field::adjoint; - constexpr auto elastic = specfem::element::medium_tag::elastic; + constexpr auto elastic_sv = specfem::element::medium_tag::elastic_sv; constexpr auto acoustic = specfem::element::medium_tag::acoustic; - if (tag == elastic) { - predictor_phase_impl(adjoint_field, deltat, deltatover2, + if (tag == elastic_sv) { + predictor_phase_impl(adjoint_field, deltat, deltatover2, deltasquareover2); } else if (tag == acoustic) { predictor_phase_impl(adjoint_field, deltat, @@ -289,11 +289,11 @@ void specfem::time_scheme::newmark:: void specfem::time_scheme::newmark:: apply_predictor_phase_backward(const specfem::element::medium_tag tag) { constexpr auto wavefield = specfem::wavefield::simulation_field::backward; - constexpr auto elastic = specfem::element::medium_tag::elastic; + constexpr auto elastic_sv = specfem::element::medium_tag::elastic_sv; constexpr auto acoustic = specfem::element::medium_tag::acoustic; - if (tag == elastic) { - predictor_phase_impl( + if (tag == elastic_sv) { + predictor_phase_impl( backward_field, -1.0 * deltat, -1.0 * deltatover2, deltasquareover2); } else if (tag == acoustic) { predictor_phase_impl( diff --git a/src/IO/mesh.cpp b/src/IO/mesh.cpp index 29021be54..d57a143c3 100644 --- a/src/IO/mesh.cpp +++ b/src/IO/mesh.cpp @@ -193,15 +193,15 @@ specfem::IO::read_mesh(const std::string filename, mpi->cout("Number of material systems = " + std::to_string(mesh.materials.n_materials) + "\n\n"); - const auto l_elastic_isotropic = - mesh.materials.elastic_isotropic.material_properties; + const auto l_elastic_sv_isotropic = + mesh.materials.elastic_sv_isotropic.material_properties; const auto l_acoustic_isotropic = mesh.materials.acoustic_isotropic.material_properties; - const auto l_elastic_anisotropic = - mesh.materials.elastic_anisotropic.material_properties; + const auto l_elastic_sv_anisotropic = + mesh.materials.elastic_sv_anisotropic.material_properties; - for (const auto material : l_elastic_isotropic) { + for (const auto material : l_elastic_sv_isotropic) { mpi->cout(material.print()); } @@ -209,12 +209,12 @@ specfem::IO::read_mesh(const std::string filename, mpi->cout(material.print()); } - for (const auto material : l_elastic_anisotropic) { + for (const auto material : l_elastic_sv_anisotropic) { mpi->cout(material.print()); } - assert(l_elastic_isotropic.size() + l_acoustic_isotropic.size() + - l_elastic_anisotropic.size() == + assert(l_elastic_sv_isotropic.size() + l_acoustic_isotropic.size() + + l_elastic_sv_anisotropic.size() == mesh.materials.n_materials); mesh.tags = specfem::mesh::tags( diff --git a/src/IO/mesh/impl/fortran/read_interfaces.cpp b/src/IO/mesh/impl/fortran/read_interfaces.cpp index 6a8f1d95c..b6fe2d46b 100644 --- a/src/IO/mesh/impl/fortran/read_interfaces.cpp +++ b/src/IO/mesh/impl/fortran/read_interfaces.cpp @@ -32,10 +32,10 @@ specfem::IO::mesh::impl::fortran::read_interfaces( // Explicit instantiation of the template function for the different medium // interfaces elastic/acoustic template specfem::mesh::interface_container< - specfem::dimension::type::dim2, specfem::element::medium_tag::elastic, + specfem::dimension::type::dim2, specfem::element::medium_tag::elastic_sv, specfem::element::medium_tag::acoustic> specfem::IO::mesh::impl::fortran::read_interfaces< - specfem::dimension::type::dim2, specfem::element::medium_tag::elastic, + specfem::dimension::type::dim2, specfem::element::medium_tag::elastic_sv, specfem::element::medium_tag::acoustic>(const int num_interfaces, std::ifstream &stream, const specfem::MPI::MPI *mpi); @@ -52,10 +52,10 @@ specfem::IO::mesh::impl::fortran::read_interfaces< // elastic/poroelastic template specfem::mesh::interface_container< - specfem::dimension::type::dim2, specfem::element::medium_tag::elastic, + specfem::dimension::type::dim2, specfem::element::medium_tag::elastic_sv, specfem::element::medium_tag::poroelastic> specfem::IO::mesh::impl::fortran::read_interfaces< - specfem::dimension::type::dim2, specfem::element::medium_tag::elastic, + specfem::dimension::type::dim2, specfem::element::medium_tag::elastic_sv, specfem::element::medium_tag::poroelastic>(const int num_interfaces, std::ifstream &stream, const specfem::MPI::MPI *mpi); @@ -68,7 +68,7 @@ specfem::IO::mesh::impl::fortran::read_coupled_interfaces( const specfem::MPI::MPI *mpi) { auto elastic_acoustic = specfem::IO::mesh::impl::fortran::read_interfaces< - specfem::dimension::type::dim2, specfem::element::medium_tag::elastic, + specfem::dimension::type::dim2, specfem::element::medium_tag::elastic_sv, specfem::element::medium_tag::acoustic>(num_interfaces_elastic_acoustic, stream, mpi); @@ -78,7 +78,7 @@ specfem::IO::mesh::impl::fortran::read_coupled_interfaces( num_interfaces_acoustic_poroelastic, stream, mpi); auto elastic_poroelastic = specfem::IO::mesh::impl::fortran::read_interfaces< - specfem::dimension::type::dim2, specfem::element::medium_tag::elastic, + specfem::dimension::type::dim2, specfem::element::medium_tag::elastic_sv, specfem::element::medium_tag::poroelastic>( num_interfaces_elastic_poroelastic, stream, mpi); diff --git a/src/IO/mesh/impl/fortran/read_material_properties.cpp b/src/IO/mesh/impl/fortran/read_material_properties.cpp index 3f8458bf8..8e43481b6 100644 --- a/src/IO/mesh/impl/fortran/read_material_properties.cpp +++ b/src/IO/mesh/impl/fortran/read_material_properties.cpp @@ -9,7 +9,7 @@ #include // Define some constants for the material properties -constexpr auto elastic = specfem::element::medium_tag::elastic; +constexpr auto elastic_sv = specfem::element::medium_tag::elastic_sv; constexpr auto isotropic = specfem::element::property_tag::isotropic; constexpr auto anisotropic = specfem::element::property_tag::anisotropic; constexpr auto acoustic = specfem::element::medium_tag::acoustic; @@ -23,9 +23,10 @@ struct input_holder { std::vector read_materials( std::ifstream &stream, const int numat, - specfem::mesh::materials::material &elastic_isotropic, + specfem::mesh::materials::material + &elastic_isotropic, specfem::mesh::materials::material &acoustic_isotropic, - specfem::mesh::materials::material + specfem::mesh::materials::material &elastic_anisotropic, const specfem::MPI::MPI *mpi) { @@ -45,7 +46,7 @@ std::vector read_materials( std::cout << "Number of material systems = " << numat << "\n\n"; // Section for elastic isotropic - std::vector > + std::vector > l_elastic_isotropic; l_elastic_isotropic.reserve(numat); @@ -53,7 +54,7 @@ std::vector read_materials( int index_elastic_isotropic = 0; // Section for elastic anisotropic - std::vector > + std::vector > l_elastic_anisotropic; l_elastic_anisotropic.reserve(numat); @@ -120,15 +121,16 @@ std::vector read_materials( const type_real Qkappa = read_values.val5; const type_real Qmu = read_values.val6; - specfem::medium::material elastic_isotropic_holder( - density, cs, cp, Qkappa, Qmu, compaction_grad); + specfem::medium::material + elastic_isotropic_holder(density, cs, cp, Qkappa, Qmu, + compaction_grad); elastic_isotropic_holder.print(); l_elastic_isotropic.push_back(elastic_isotropic_holder); index_mapping[i] = specfem::mesh::materials::material_specification( - specfem::element::medium_tag::elastic, + specfem::element::medium_tag::elastic_sv, specfem::element::property_tag::isotropic, index_elastic_isotropic, read_values.n - 1); @@ -150,7 +152,7 @@ std::vector read_materials( const type_real Qkappa = read_values.val11; const type_real Qmu = read_values.val12; - specfem::medium::material + specfem::medium::material elastic_anisotropic_holder(density, c11, c13, c15, c33, c35, c55, c12, c23, c25, Qkappa, Qmu); @@ -159,7 +161,7 @@ std::vector read_materials( l_elastic_anisotropic.push_back(elastic_anisotropic_holder); index_mapping[i] = specfem::mesh::materials::material_specification( - specfem::element::medium_tag::elastic, + specfem::element::medium_tag::elastic_sv, specfem::element::property_tag::anisotropic, index_elastic_anisotropic, read_values.n - 1); @@ -174,11 +176,11 @@ std::vector read_materials( l_elastic_anisotropic.size() == numat); - elastic_isotropic = specfem::mesh::materials::material( + elastic_isotropic = specfem::mesh::materials::material( l_elastic_isotropic.size(), l_elastic_isotropic); elastic_anisotropic = - specfem::mesh::materials::material( + specfem::mesh::materials::material( l_elastic_anisotropic.size(), l_elastic_anisotropic); acoustic_isotropic = specfem::mesh::materials::material( @@ -240,8 +242,8 @@ specfem::IO::mesh::impl::fortran::read_material_properties( // Read material properties auto index_mapping = read_materials( - stream, numat, materials.elastic_isotropic, materials.acoustic_isotropic, - materials.elastic_anisotropic, mpi); + stream, numat, materials.elastic_sv_isotropic, + materials.acoustic_isotropic, materials.elastic_sv_anisotropic, mpi); // Read material indices read_material_indices(stream, nspec, numat, index_mapping, diff --git a/src/compute/assembly/compute_wavefield.cpp b/src/compute/assembly/compute_wavefield.cpp index 72f324eb5..57f89fd34 100644 --- a/src/compute/assembly/compute_wavefield.cpp +++ b/src/compute/assembly/compute_wavefield.cpp @@ -71,11 +71,11 @@ specfem::compute::assembly::generate_wavefield_on_entire_grid( const auto h_wavefield_on_entire_grid = Kokkos::create_mirror_view(wavefield_on_entire_grid); - get_wavefield_on_entire_grid( component, *this, wavefield_on_entire_grid); - get_wavefield_on_entire_grid( component, *this, wavefield_on_entire_grid); diff --git a/src/compute/compute_boundary_values.cpp b/src/compute/compute_boundary_values.cpp index 165992e16..58eb1dc14 100644 --- a/src/compute/compute_boundary_values.cpp +++ b/src/compute/compute_boundary_values.cpp @@ -12,7 +12,7 @@ template class specfem::compute::impl::boundary_medium_container< specfem::element::boundary_tag::stacey>; template class specfem::compute::impl::boundary_medium_container< - specfem::dimension::type::dim2, specfem::element::medium_tag::elastic, + specfem::dimension::type::dim2, specfem::element::medium_tag::elastic_sv, specfem::element::boundary_tag::stacey>; template class specfem::compute::boundary_value_container< diff --git a/src/compute/compute_kernels.cpp b/src/compute/compute_kernels.cpp index c0580fdc6..2a70c0006 100644 --- a/src/compute/compute_kernels.cpp +++ b/src/compute/compute_kernels.cpp @@ -16,11 +16,11 @@ specfem::compute::kernels::kernels( Kokkos::create_mirror_view(property_index_mapping); const auto elastic_isotropic_elements = element_types.get_elements_on_host( - specfem::element::medium_tag::elastic, + specfem::element::medium_tag::elastic_sv, specfem::element::property_tag::isotropic); const auto elastic_anisotropic_elements = element_types.get_elements_on_host( - specfem::element::medium_tag::elastic, + specfem::element::medium_tag::elastic_sv, specfem::element::property_tag::anisotropic); const auto acoustic_elements = element_types.get_elements_on_host( @@ -37,12 +37,12 @@ specfem::compute::kernels::kernels( acoustic_elements, ngllz, ngllx, h_property_index_mapping); elastic_isotropic = specfem::medium::material_kernels< - specfem::element::medium_tag::elastic, + specfem::element::medium_tag::elastic_sv, specfem::element::property_tag::isotropic>( elastic_isotropic_elements, ngllz, ngllx, h_property_index_mapping); elastic_anisotropic = specfem::medium::material_kernels< - specfem::element::medium_tag::elastic, + specfem::element::medium_tag::elastic_sv, specfem::element::property_tag::anisotropic>( elastic_anisotropic_elements, ngllz, ngllx, h_property_index_mapping); diff --git a/src/compute/compute_properties.cpp b/src/compute/compute_properties.cpp index f21b2c0f1..4319e5e4a 100644 --- a/src/compute/compute_properties.cpp +++ b/src/compute/compute_properties.cpp @@ -16,11 +16,11 @@ specfem::compute::properties::properties( Kokkos::create_mirror_view(property_index_mapping); const auto elastic_isotropic_elements = element_types.get_elements_on_host( - specfem::element::medium_tag::elastic, + specfem::element::medium_tag::elastic_sv, specfem::element::property_tag::isotropic); const auto elastic_anisotropic_elements = element_types.get_elements_on_host( - specfem::element::medium_tag::elastic, + specfem::element::medium_tag::elastic_sv, specfem::element::property_tag::anisotropic); const auto acoustic_elements = element_types.get_elements_on_host( @@ -38,13 +38,13 @@ specfem::compute::properties::properties( h_property_index_mapping); elastic_isotropic = specfem::medium::material_properties< - specfem::element::medium_tag::elastic, + specfem::element::medium_tag::elastic_sv, specfem::element::property_tag::isotropic>( elastic_isotropic_elements, ngllz, ngllx, materials, has_gll_model, h_property_index_mapping); elastic_anisotropic = specfem::medium::material_properties< - specfem::element::medium_tag::elastic, + specfem::element::medium_tag::elastic_sv, specfem::element::property_tag::anisotropic>( elastic_anisotropic_elements, ngllz, ngllx, materials, has_gll_model, h_property_index_mapping); diff --git a/src/compute/compute_sources.cpp b/src/compute/compute_sources.cpp index 2f109e89c..9510d3209 100644 --- a/src/compute/compute_sources.cpp +++ b/src/compute/compute_sources.cpp @@ -63,7 +63,7 @@ template class specfem::compute::impl::source_medium< specfem::dimension::type::dim2, specfem::element::medium_tag::acoustic>; template class specfem::compute::impl::source_medium< - specfem::dimension::type::dim2, specfem::element::medium_tag::elastic>; + specfem::dimension::type::dim2, specfem::element::medium_tag::elastic_sv>; specfem::compute::sources::sources( const std::vector > &sources, diff --git a/src/compute/coupled_interfaces.cpp b/src/compute/coupled_interfaces.cpp index d25bf5721..4c36c7b70 100644 --- a/src/compute/coupled_interfaces.cpp +++ b/src/compute/coupled_interfaces.cpp @@ -337,7 +337,7 @@ // ASSERT(((ispec_elastic != ispec_acoustic) && // (h_ispec_type(ispec_elastic) == -// specfem::element::medium_tag::elastic) && +// specfem::element::medium_tag::elastic_sv) && // (h_ispec_type(ispec_acoustic) == // specfem::element::medium_tag::acoustic)), // "Invalid interface"); @@ -409,7 +409,7 @@ // // element // ASSERT(((ispec_elastic != ispec_poroelastic) && // (h_ispec_type(ispec_elastic) == -// specfem::element::medium_tag::elastic) && +// specfem::element::medium_tag::elastic_sv) && // (h_ispec_type(ispec_poroelastic) == // specfem::element::medium_tag::poroelastic)), // "Invalid interface"); @@ -544,7 +544,7 @@ specfem::compute::coupled_interfaces::coupled_interfaces( // Explicit template instantiation template class specfem::compute::interface_container< - specfem::element::medium_tag::elastic, + specfem::element::medium_tag::elastic_sv, specfem::element::medium_tag::acoustic>; template class specfem::compute::interface_container< @@ -552,36 +552,36 @@ template class specfem::compute::interface_container< specfem::element::medium_tag::poroelastic>; template class specfem::compute::interface_container< - specfem::element::medium_tag::elastic, + specfem::element::medium_tag::elastic_sv, specfem::element::medium_tag::poroelastic>; template specfem::compute::interface_container< - specfem::element::medium_tag::elastic, + specfem::element::medium_tag::elastic_sv, specfem::element::medium_tag::acoustic> specfem::compute::coupled_interfaces::get_interface_container< - specfem::element::medium_tag::elastic, + specfem::element::medium_tag::elastic_sv, specfem::element::medium_tag::acoustic>() const; template specfem::compute::interface_container< specfem::element::medium_tag::acoustic, - specfem::element::medium_tag::elastic> + specfem::element::medium_tag::elastic_sv> specfem::compute::coupled_interfaces::get_interface_container< specfem::element::medium_tag::acoustic, - specfem::element::medium_tag::elastic>() const; + specfem::element::medium_tag::elastic_sv>() const; template specfem::compute::interface_container< - specfem::element::medium_tag::elastic, + specfem::element::medium_tag::elastic_sv, specfem::element::medium_tag::poroelastic> specfem::compute::coupled_interfaces::get_interface_container< - specfem::element::medium_tag::elastic, + specfem::element::medium_tag::elastic_sv, specfem::element::medium_tag::poroelastic>() const; template specfem::compute::interface_container< specfem::element::medium_tag::poroelastic, - specfem::element::medium_tag::elastic> + specfem::element::medium_tag::elastic_sv> specfem::compute::coupled_interfaces::get_interface_container< specfem::element::medium_tag::poroelastic, - specfem::element::medium_tag::elastic>() const; + specfem::element::medium_tag::elastic_sv>() const; template specfem::compute::interface_container< specfem::element::medium_tag::acoustic, diff --git a/src/coupled_interface/coupled_interface.cpp b/src/coupled_interface/coupled_interface.cpp index e0952e9d9..1b5a471af 100644 --- a/src/coupled_interface/coupled_interface.cpp +++ b/src/coupled_interface/coupled_interface.cpp @@ -5,30 +5,30 @@ template class specfem::coupled_interface::coupled_interface< specfem::wavefield::simulation_field::forward, - specfem::dimension::type::dim2, specfem::element::medium_tag::elastic, + specfem::dimension::type::dim2, specfem::element::medium_tag::elastic_sv, specfem::element::medium_tag::acoustic>; template class specfem::coupled_interface::coupled_interface< specfem::wavefield::simulation_field::forward, specfem::dimension::type::dim2, specfem::element::medium_tag::acoustic, - specfem::element::medium_tag::elastic>; + specfem::element::medium_tag::elastic_sv>; template class specfem::coupled_interface::coupled_interface< specfem::wavefield::simulation_field::backward, - specfem::dimension::type::dim2, specfem::element::medium_tag::elastic, + specfem::dimension::type::dim2, specfem::element::medium_tag::elastic_sv, specfem::element::medium_tag::acoustic>; template class specfem::coupled_interface::coupled_interface< specfem::wavefield::simulation_field::backward, specfem::dimension::type::dim2, specfem::element::medium_tag::acoustic, - specfem::element::medium_tag::elastic>; + specfem::element::medium_tag::elastic_sv>; template class specfem::coupled_interface::coupled_interface< specfem::wavefield::simulation_field::adjoint, - specfem::dimension::type::dim2, specfem::element::medium_tag::elastic, + specfem::dimension::type::dim2, specfem::element::medium_tag::elastic_sv, specfem::element::medium_tag::acoustic>; template class specfem::coupled_interface::coupled_interface< specfem::wavefield::simulation_field::adjoint, specfem::dimension::type::dim2, specfem::element::medium_tag::acoustic, - specfem::element::medium_tag::elastic>; + specfem::element::medium_tag::elastic_sv>; diff --git a/src/enumerations/medium.cpp b/src/enumerations/medium.cpp index 7da6bdbd0..6b5bdace8 100644 --- a/src/enumerations/medium.cpp +++ b/src/enumerations/medium.cpp @@ -9,8 +9,8 @@ specfem::element::to_string(const specfem::element::medium_tag &medium, std::string boundary_string; switch (medium) { - case specfem::element::medium_tag::elastic: - medium_string = "elastic"; + case specfem::element::medium_tag::elastic_sv: + medium_string = "elastic_sv"; break; case specfem::element::medium_tag::acoustic: medium_string = "acoustic"; @@ -57,9 +57,9 @@ const std::string specfem::element::to_string( const specfem::element::medium_tag &medium, const specfem::element::property_tag &property_tag) { - if ((medium == specfem::element::medium_tag::elastic) && + if ((medium == specfem::element::medium_tag::elastic_sv) && (property_tag == specfem::element::property_tag::isotropic)) { - return "elastic isotropic"; + return "elastic_sv isotropic"; } else if ((medium == specfem::element::medium_tag::acoustic) && (property_tag == specfem::element::property_tag::isotropic)) { return "acoustic isotropic"; @@ -70,7 +70,7 @@ const std::string specfem::element::to_string( const std::string specfem::element::to_string(const specfem::element::medium_tag &medium) { - if (medium == specfem::element::medium_tag::elastic) { + if (medium == specfem::element::medium_tag::elastic_sv) { return "elastic"; } else if (medium == specfem::element::medium_tag::acoustic) { return "acoustic"; diff --git a/src/medium/compute_stress_integrand.cpp b/src/medium/compute_stress_integrand.cpp index 69d156f40..216eba54e 100644 --- a/src/medium/compute_stress_integrand.cpp +++ b/src/medium/compute_stress_integrand.cpp @@ -3,28 +3,31 @@ // This file only contains explicit template instantiations // dim2, elastic, isotropic, false -template specfem::point::stress_integrand +template specfem::point::stress_integrand< + specfem::dimension::type::dim2, specfem::element::medium_tag::elastic_sv, + false> specfem::medium::impl_compute_stress_integrands( const specfem::point::partial_derivatives &, - const specfem::point::properties< - specfem::dimension::type::dim2, specfem::element::medium_tag::elastic, - specfem::element::property_tag::isotropic, false> &, + const specfem::point::properties &, const specfem::point::field_derivatives< - specfem::dimension::type::dim2, specfem::element::medium_tag::elastic, - false> &); + specfem::dimension::type::dim2, + specfem::element::medium_tag::elastic_sv, false> &); // dim2, elastic, isotropic, true template specfem::point::stress_integrand< - specfem::dimension::type::dim2, specfem::element::medium_tag::elastic, true> + specfem::dimension::type::dim2, specfem::element::medium_tag::elastic_sv, + true> specfem::medium::impl_compute_stress_integrands( const specfem::point::partial_derivatives &, - const specfem::point::properties< - specfem::dimension::type::dim2, specfem::element::medium_tag::elastic, - specfem::element::property_tag::isotropic, true> &, + const specfem::point::properties &, const specfem::point::field_derivatives< - specfem::dimension::type::dim2, specfem::element::medium_tag::elastic, - true> &); + specfem::dimension::type::dim2, + specfem::element::medium_tag::elastic_sv, true> &); diff --git a/src/mesh/coupled_interfaces/coupled_interfaces.cpp b/src/mesh/coupled_interfaces/coupled_interfaces.cpp index b834c02c1..0cd861d48 100644 --- a/src/mesh/coupled_interfaces/coupled_interfaces.cpp +++ b/src/mesh/coupled_interfaces/coupled_interfaces.cpp @@ -3,7 +3,7 @@ #include "mesh/coupled_interfaces/interface_container.tpp" // specfem::mesh::coupled_interfaces::coupled_interfaces( -// specfem::mesh::interface_container // elastic_acoustic, // specfem::mesh::interface_container< @@ -11,7 +11,7 @@ // specfem::element::medium_tag::poroelastic> // acoustic_poroelastic, // specfem::mesh::interface_container< -// specfem::element::medium_tag::elastic, +// specfem::element::medium_tag::elastic_sv, // specfem::element::medium_tag::poroelastic> // elastic_poroelastic) {} @@ -19,23 +19,23 @@ template template std::variant, specfem::mesh::interface_container< DimensionType, specfem::element::medium_tag::acoustic, specfem::element::medium_tag::poroelastic>, specfem::mesh::interface_container< - DimensionType, specfem::element::medium_tag::elastic, + DimensionType, specfem::element::medium_tag::elastic_sv, specfem::element::medium_tag::poroelastic> > specfem::mesh::coupled_interfaces::coupled_interfaces::get() const { - if constexpr (Medium1 == specfem::element::medium_tag::elastic && + if constexpr (Medium1 == specfem::element::medium_tag::elastic_sv && Medium2 == specfem::element::medium_tag::acoustic) { return elastic_acoustic; } else if constexpr (Medium1 == specfem::element::medium_tag::acoustic && Medium2 == specfem::element::medium_tag::poroelastic) { return acoustic_poroelastic; - } else if constexpr (Medium1 == specfem::element::medium_tag::elastic && + } else if constexpr (Medium1 == specfem::element::medium_tag::elastic_sv && Medium2 == specfem::element::medium_tag::poroelastic) { return elastic_poroelastic; } @@ -44,14 +44,14 @@ specfem::mesh::coupled_interfaces::coupled_interfaces::get() // Explicitly instantiate template member function template int specfem::mesh::interface_container:: - get_spectral_elem_index( + get_spectral_elem_index( const int interface_index) const; template int specfem::mesh::interface_container:: get_spectral_elem_index( const int interface_index) const; @@ -72,14 +72,14 @@ specfem::mesh::interface_container:: - get_spectral_elem_index( + get_spectral_elem_index( const int interface_index) const; template int specfem::mesh::interface_container:: get_spectral_elem_index( const int interface_index) const; @@ -87,27 +87,29 @@ specfem::mesh::interface_container, specfem::mesh::interface_container< specfem::dimension::type::dim2, specfem::element::medium_tag::acoustic, specfem::element::medium_tag::poroelastic>, specfem::mesh::interface_container< - specfem::dimension::type::dim2, specfem::element::medium_tag::elastic, + specfem::dimension::type::dim2, + specfem::element::medium_tag::elastic_sv, specfem::element::medium_tag::poroelastic> > specfem::mesh::coupled_interfaces:: - coupled_interfaces::get() const; template std::variant< specfem::mesh::interface_container, specfem::mesh::interface_container< specfem::dimension::type::dim2, specfem::element::medium_tag::acoustic, specfem::element::medium_tag::poroelastic>, specfem::mesh::interface_container< - specfem::dimension::type::dim2, specfem::element::medium_tag::elastic, + specfem::dimension::type::dim2, + specfem::element::medium_tag::elastic_sv, specfem::element::medium_tag::poroelastic> > specfem::mesh::coupled_interfaces:: coupled_interfaces::get:: template std::variant< specfem::mesh::interface_container, specfem::mesh::interface_container< specfem::dimension::type::dim2, specfem::element::medium_tag::acoustic, specfem::element::medium_tag::poroelastic>, specfem::mesh::interface_container< - specfem::dimension::type::dim2, specfem::element::medium_tag::elastic, + specfem::dimension::type::dim2, + specfem::element::medium_tag::elastic_sv, specfem::element::medium_tag::poroelastic> > specfem::mesh::coupled_interfaces:: - coupled_interfaces::get() const; diff --git a/src/mesh/coupled_interfaces/interface_container.cpp b/src/mesh/coupled_interfaces/interface_container.cpp index ed5a6eb44..7c6d721d8 100644 --- a/src/mesh/coupled_interfaces/interface_container.cpp +++ b/src/mesh/coupled_interfaces/interface_container.cpp @@ -2,13 +2,13 @@ #include "mesh/coupled_interfaces/interface_container.tpp" #define GENERATE_INTERFACE_CONTAINER(DimensionType) \ template class specfem::mesh::interface_container< \ - DimensionType, specfem::element::medium_tag::elastic, \ + DimensionType, specfem::element::medium_tag::elastic_sv, \ specfem::element::medium_tag::acoustic>; \ template class specfem::mesh::interface_container< \ DimensionType, specfem::element::medium_tag::acoustic, \ specfem::element::medium_tag::poroelastic>; \ template class specfem::mesh::interface_container< \ - DimensionType, specfem::element::medium_tag::elastic, \ + DimensionType, specfem::element::medium_tag::elastic_sv, \ specfem::element::medium_tag::poroelastic>; // Explicitly instantiate template class diff --git a/src/mesh/materials/materials.cpp b/src/mesh/materials/materials.cpp index d2fb9ba02..346e40aa7 100644 --- a/src/mesh/materials/materials.cpp +++ b/src/mesh/materials/materials.cpp @@ -5,9 +5,9 @@ #include std::variant< - specfem::medium::material, - specfem::medium::material, specfem::medium::material > @@ -18,18 +18,18 @@ specfem::mesh::materials::operator[](const int index) const { // Return the material properties based on the material specification // Return elastic isotropic - if (material_specification.type == specfem::element::medium_tag::elastic && + if (material_specification.type == specfem::element::medium_tag::elastic_sv && material_specification.property == specfem::element::property_tag::isotropic) { - return this->elastic_isotropic + return this->elastic_sv_isotropic .material_properties[material_specification.index]; // Return elastic anisotropic } else if (material_specification.type == - specfem::element::medium_tag::elastic && + specfem::element::medium_tag::elastic_sv && material_specification.property == specfem::element::property_tag::anisotropic) { - return this->elastic_anisotropic + return this->elastic_sv_anisotropic .material_properties[material_specification.index]; // Return acoustic isotropic diff --git a/src/mesh/mesh.cpp b/src/mesh/mesh.cpp index c4c88c395..9ca527b0f 100644 --- a/src/mesh/mesh.cpp +++ b/src/mesh/mesh.cpp @@ -19,7 +19,7 @@ std::string specfem::mesh::mesh::print() const { "specfem::mesh::mesh::print", specfem::kokkos::HostRange(0, this->nspec), KOKKOS_CLASS_LAMBDA(const int ispec, int &n_elastic, int &n_acoustic) { if (this->materials.material_index_mapping(ispec).type == - specfem::element::medium_tag::elastic) { + specfem::element::medium_tag::elastic_sv) { n_elastic++; } else if (this->materials.material_index_mapping(ispec).type == specfem::element::medium_tag::acoustic) { diff --git a/src/periodic_tasks/plot_wavefield.cpp b/src/periodic_tasks/plot_wavefield.cpp index 9ee835374..e0ff9bff4 100644 --- a/src/periodic_tasks/plot_wavefield.cpp +++ b/src/periodic_tasks/plot_wavefield.cpp @@ -78,7 +78,7 @@ map_materials_with_color(const specfem::compute::assembly &assembly) { const std::unordered_map > material_colors = { - { specfem::element::medium_tag::elastic, // sienna color + { specfem::element::medium_tag::elastic_sv, // sienna color { 160, 82, 45 } }, { specfem::element::medium_tag::acoustic, // aqua color { 0, 255, 255 } }, diff --git a/src/source/adjoint_source.cpp b/src/source/adjoint_source.cpp index a46a83a23..bb2e0bdbc 100644 --- a/src/source/adjoint_source.cpp +++ b/src/source/adjoint_source.cpp @@ -39,7 +39,7 @@ void specfem::sources::adjoint_source::compute_source_array( "Force source requires 1 component for acoustic medium"); } source_array(0, iz, ix) = hlagrange; - } else if ((el_type == specfem::element::medium_tag::elastic) || + } else if ((el_type == specfem::element::medium_tag::elastic_sv) || (el_type == specfem::element::medium_tag::poroelastic)) { if (ncomponents != 2) { throw std::runtime_error( diff --git a/src/source/external.cpp b/src/source/external.cpp index bcf6131a4..ba8459339 100644 --- a/src/source/external.cpp +++ b/src/source/external.cpp @@ -52,7 +52,7 @@ void specfem::sources::external::compute_source_array( "Force source requires 1 component for acoustic medium"); } source_array(0, iz, ix) = hlagrange; - } else if ((el_type == specfem::element::medium_tag::elastic) || + } else if ((el_type == specfem::element::medium_tag::elastic_sv) || (el_type == specfem::element::medium_tag::poroelastic)) { if (ncomponents != 2) { throw std::runtime_error( diff --git a/src/source/force_source.cpp b/src/source/force_source.cpp index 150f26f9d..764b88135 100644 --- a/src/source/force_source.cpp +++ b/src/source/force_source.cpp @@ -52,7 +52,7 @@ void specfem::sources::force::compute_source_array( "Force source requires 1 component for acoustic medium"); } source_array(0, iz, ix) = hlagrange; - } else if ((el_type == specfem::element::medium_tag::elastic) || + } else if ((el_type == specfem::element::medium_tag::elastic_sv) || (el_type == specfem::element::medium_tag::poroelastic)) { if (ncomponents != 2) { throw std::runtime_error( diff --git a/tests/unit-tests/assembly/compute_wavefield/compute_wavefield.cpp b/tests/unit-tests/assembly/compute_wavefield/compute_wavefield.cpp index f7928e18b..c43ceb378 100644 --- a/tests/unit-tests/assembly/compute_wavefield/compute_wavefield.cpp +++ b/tests/unit-tests/assembly/compute_wavefield/compute_wavefield.cpp @@ -23,9 +23,9 @@ void test_element_wavefield( const auto medium = element_types.get_medium_tag(ispec); const auto property = element_types.get_property_tag(ispec); - if ((medium == specfem::element::medium_tag::elastic) && + if ((medium == specfem::element::medium_tag::elastic_sv) && (property == specfem::element::property_tag::isotropic)) { - test_helper handle(ispec, wavefield, assembly); handle.test(); diff --git a/tests/unit-tests/assembly/compute_wavefield/generate_data.hpp b/tests/unit-tests/assembly/compute_wavefield/generate_data.hpp index a3a6d1255..27e3cd3e2 100644 --- a/tests/unit-tests/assembly/compute_wavefield/generate_data.hpp +++ b/tests/unit-tests/assembly/compute_wavefield/generate_data.hpp @@ -67,7 +67,7 @@ std::vector generate_data(specfem::compute::assembly &assembly) { std::vector ispecs; - generate_data(assembly, ispecs); generate_data -class test_helper { public: @@ -76,7 +76,7 @@ class test_helper class test_helper { public: test_helper(const int ispec, @@ -94,9 +94,11 @@ class test_helper; + using PointProperties = + specfem::point::properties; for (int iz = 0; iz < ngllz; iz++) { for (int ix = 0; ix < ngllx; ix++) { diff --git a/tests/unit-tests/assembly/kernels/kernels.cpp b/tests/unit-tests/assembly/kernels/kernels.cpp index f3aca0af0..307dc4e3c 100644 --- a/tests/unit-tests/assembly/kernels/kernels.cpp +++ b/tests/unit-tests/assembly/kernels/kernels.cpp @@ -16,9 +16,10 @@ std::string get_error_message( template <> std::string get_error_message( - const specfem::point::kernels< - specfem::dimension::type::dim2, specfem::element::medium_tag::elastic, - specfem::element::property_tag::isotropic, false> &point_kernel, + const specfem::point::kernels &point_kernel, const type_real value) { std::ostringstream message; @@ -36,9 +37,10 @@ std::string get_error_message( template <> std::string get_error_message( - const specfem::point::kernels< - specfem::dimension::type::dim2, specfem::element::medium_tag::elastic, - specfem::element::property_tag::anisotropic, false> &point_kernel, + const specfem::point::kernels &point_kernel, const type_real value) { std::ostringstream message; @@ -91,7 +93,7 @@ get_point_kernel( template <> specfem::point::kernels get_point_kernel(const int ispec, const int iz, const int ix, const specfem::compute::kernels &kernels) { @@ -101,7 +103,7 @@ get_point_kernel(const int ispec, const int iz, const int ix, const int ispec_l = kernels.h_property_index_mapping(ispec); specfem::point::kernels point_kernel; @@ -117,15 +119,16 @@ get_point_kernel(const int ispec, const int iz, const int ix, template <> specfem::point::kernels get_point_kernel( const int lane, - const specfem::point::kernels< - specfem::dimension::type::dim2, specfem::element::medium_tag::elastic, - specfem::element::property_tag::isotropic, true> &point_kernel) { + const specfem::point::kernels &point_kernel) { specfem::point::kernels point_kernel_l; @@ -141,7 +144,7 @@ get_point_kernel( template <> specfem::point::kernels get_point_kernel(const int ispec, const int iz, const int ix, const specfem::compute::kernels &kernels) { @@ -151,7 +154,7 @@ get_point_kernel(const int ispec, const int iz, const int ix, const int ispec_l = kernels.h_property_index_mapping(ispec); specfem::point::kernels point_kernel; @@ -168,15 +171,16 @@ get_point_kernel(const int ispec, const int iz, const int ix, template <> specfem::point::kernels get_point_kernel( const int lane, - const specfem::point::kernels< - specfem::dimension::type::dim2, specfem::element::medium_tag::elastic, - specfem::element::property_tag::anisotropic, true> &point_kernel) { + const specfem::point::kernels &point_kernel) { specfem::point::kernels point_kernel_l; diff --git a/tests/unit-tests/assembly/properties/properties.cpp b/tests/unit-tests/assembly/properties/properties.cpp index c047bb029..b02102079 100644 --- a/tests/unit-tests/assembly/properties/properties.cpp +++ b/tests/unit-tests/assembly/properties/properties.cpp @@ -31,9 +31,10 @@ std::string get_error_message( template <> std::string get_error_message( - const specfem::point::properties< - specfem::dimension::type::dim2, specfem::element::medium_tag::elastic, - specfem::element::property_tag::isotropic, false> &point_property, + const specfem::point::properties &point_property, const type_real value, const int mode) { std::ostringstream message; @@ -48,7 +49,8 @@ std::string get_error_message( template <> std::string get_error_message( const specfem::point::properties< - specfem::dimension::type::dim2, specfem::element::medium_tag::elastic, + specfem::dimension::type::dim2, + specfem::element::medium_tag::elastic_sv, specfem::element::property_tag::anisotropic, false> &point_property, const type_real value, const int mode) { std::ostringstream message; @@ -98,7 +100,7 @@ get_point_property( template <> specfem::point::properties get_point_property(const int ispec, const int iz, const int ix, const specfem::compute::properties &properties) { @@ -108,7 +110,7 @@ get_point_property(const int ispec, const int iz, const int ix, const int ispec_l = properties.h_property_index_mapping(ispec); specfem::point::properties point_property; @@ -122,15 +124,16 @@ get_point_property(const int ispec, const int iz, const int ix, template <> specfem::point::properties get_point_property( const int lane, - const specfem::point::properties< - specfem::dimension::type::dim2, specfem::element::medium_tag::elastic, - specfem::element::property_tag::isotropic, true> &point_property) { + const specfem::point::properties &point_property) { specfem::point::properties point_property_l; @@ -143,7 +146,7 @@ get_point_property( template <> specfem::point::properties get_point_property(const int ispec, const int iz, const int ix, const specfem::compute::properties &properties) { @@ -153,7 +156,7 @@ get_point_property(const int ispec, const int iz, const int ix, const int ispec_l = properties.h_property_index_mapping(ispec); specfem::point::properties point_property; @@ -170,15 +173,16 @@ get_point_property(const int ispec, const int iz, const int ix, template <> specfem::point::properties get_point_property( const int lane, const specfem::point::properties< - specfem::dimension::type::dim2, specfem::element::medium_tag::elastic, + specfem::dimension::type::dim2, + specfem::element::medium_tag::elastic_sv, specfem::element::property_tag::anisotropic, true> &point_property) { specfem::point::properties point_property_l; @@ -277,12 +281,14 @@ void check_point_properties( template void check_point_properties( - const specfem::point::properties< - specfem::dimension::type::dim2, specfem::element::medium_tag::elastic, - specfem::element::property_tag::isotropic, using_simd> &p1, - const specfem::point::properties< - specfem::dimension::type::dim2, specfem::element::medium_tag::elastic, - specfem::element::property_tag::isotropic, using_simd> &p2, + const specfem::point::properties &p1, + const specfem::point::properties &p2, const int &n_simd_elements) { check_eq(p1.rho, p2.rho, n_simd_elements); check_eq(p1.mu, p2.mu, n_simd_elements); @@ -302,10 +308,12 @@ void check_point_properties( template void check_point_properties( const specfem::point::properties< - specfem::dimension::type::dim2, specfem::element::medium_tag::elastic, + specfem::dimension::type::dim2, + specfem::element::medium_tag::elastic_sv, specfem::element::property_tag::anisotropic, using_simd> &p1, const specfem::point::properties< - specfem::dimension::type::dim2, specfem::element::medium_tag::elastic, + specfem::dimension::type::dim2, + specfem::element::medium_tag::elastic_sv, specfem::element::property_tag::anisotropic, using_simd> &p2, const int &n_simd_elements) { check_eq(p1.rho, p2.rho, n_simd_elements); @@ -697,10 +705,10 @@ void test_properties( WHERE(PROPERTY_TAG_ISOTROPIC, PROPERTY_TAG_ANISOTROPIC)) #undef TEST_COMPUTE_TO_MESH - // check_compute_to_mesh(assembly, // mesh); - // check_compute_to_mesh(assembly, // mesh); // check_compute_to_mesh + specfem::point::field< + specfem::dimension::type::dim2, + specfem::element::medium_tag::elastic_sv, false, false, + false, true, false> point_field; specfem::compute::load_on_host(index, assembly.fields.forward, point_field); diff --git a/tests/unit-tests/mesh/materials/materials.cpp b/tests/unit-tests/mesh/materials/materials.cpp index 138e3643a..7f6d468b4 100644 --- a/tests/unit-tests/mesh/materials/materials.cpp +++ b/tests/unit-tests/mesh/materials/materials.cpp @@ -8,26 +8,26 @@ using MaterialVectorType = std::vector, - specfem::medium::material, - specfem::medium::material > >; const static std::unordered_map ground_truth = { { "Test 1: Simple mesh with flat topography", MaterialVectorType({ specfem::medium::material< - specfem::element::medium_tag::elastic, + specfem::element::medium_tag::elastic_sv, specfem::element::property_tag::isotropic>(2700.0, 1732.051, 3000.0, 9999, 9999, 0.0) }) }, { "Test 2: Simple mesh with curved topography", MaterialVectorType({ specfem::medium::material< - specfem::element::medium_tag::elastic, + specfem::element::medium_tag::elastic_sv, specfem::element::property_tag::isotropic>(2700.0, 1732.051, 3000.0, 9999, 9999, 0.0) }) }, { "Test 3: Simple mesh with flat ocean bottom", MaterialVectorType({ specfem::medium::material< - specfem::element::medium_tag::elastic, + specfem::element::medium_tag::elastic_sv, specfem::element::property_tag::isotropic>( 2500.0, 1963.0, 3400.0, 9999, 9999, 0.0), specfem::medium::material< @@ -38,7 +38,7 @@ const static std::unordered_map }) }, { "Test 4: Simple mesh with curved ocean bottom", MaterialVectorType({ specfem::medium::material< - specfem::element::medium_tag::elastic, + specfem::element::medium_tag::elastic_sv, specfem::element::property_tag::isotropic>( 2500.0, 1963.0, 3400.0, 9999, 9999, 0.0), specfem::medium::material< @@ -58,7 +58,7 @@ const static std::unordered_map 1000.0, 1477.0, 10.0, 10.0, 0.0) }) }, { "Test 6: Homogeneous Elastic Anisotropic Material", MaterialVectorType({ specfem::medium::material< - specfem::element::medium_tag::elastic, + specfem::element::medium_tag::elastic_sv, specfem::element::property_tag::anisotropic>( 2700.0, 24299994600.5, 8099996400.35, 0.0, 24299994600.5, 0.0, 8100001799.8227, 8099996400.35, 8099996400.35, 0.0, 9999, 9999) }) } @@ -99,26 +99,26 @@ void check_test(const specfem::mesh::materials &computed, std::ostringstream error_message; throw std::runtime_error(error_message.str()); } - } else if ((type == specfem::element::medium_tag::elastic) && + } else if ((type == specfem::element::medium_tag::elastic_sv) && (property == specfem::element::property_tag::isotropic)) { const auto icomputed = std::get >(computed[ispec]); const auto iexpected = std::get >(expected[imaterial]); if (icomputed != iexpected) { std::ostringstream error_message; error_message << "Material " << index << " is not the same"; throw std::runtime_error(error_message.str()); } - } else if ((type == specfem::element::medium_tag::elastic) && + } else if ((type == specfem::element::medium_tag::elastic_sv) && (property == specfem::element::property_tag::anisotropic)) { const auto icomputed = std::get >(computed[ispec]); const auto iexpected = std::get >(expected[imaterial]); if (icomputed != iexpected) { std::ostringstream error_message; diff --git a/tests/unit-tests/seismogram/elastic/seismogram_tests.cpp b/tests/unit-tests/seismogram/elastic/seismogram_tests.cpp index 067f81fa5..2d28704b5 100644 --- a/tests/unit-tests/seismogram/elastic/seismogram_tests.cpp +++ b/tests/unit-tests/seismogram/elastic/seismogram_tests.cpp @@ -121,7 +121,7 @@ TEST(SEISMOGRAM_TESTS, elastic_seismograms_test) { specfem::domain::domain< specfem::wavefield::simulation_field::forward, - specfem::dimension::type::dim2, specfem::element::medium_tag::elastic, + specfem::dimension::type::dim2, specfem::element::medium_tag::elastic_sv, specfem::enums::element::quadrature::static_quadrature_points<5> > elastic_domain_static(setup.get_dt(), assembly, qp5);