From 73c0552182d99f50be6cdb13eb5767dd3a61f921 Mon Sep 17 00:00:00 2001 From: ccui Date: Wed, 18 Feb 2026 21:31:52 -0500 Subject: [PATCH] New syntax for point fields. --- core/specfem/algorithms/coupling_integral.hpp | 6 +-- .../boundary_conditions/stacey/stacey.tpp | 9 ++-- .../compute/impl/compute_mass_matrix.tpp | 4 +- .../impl/compute_material_derivatives.tpp | 8 ++-- .../impl/compute_stiffness_interaction.tpp | 8 ++-- .../compute/impl/divide_mass_matrix.tpp | 10 +++-- .../compute/impl/invert_mass_matrix.tpp | 8 ++-- core/specfem/element_coupling.hpp | 45 ++++++++++--------- .../dim2/acoustic/isotropic/mass_matrix.hpp | 4 +- .../dim2/acoustic/isotropic/mass_matrix.tpp | 2 +- .../medium/dim2/acoustic/isotropic/source.hpp | 7 ++- .../dim2/elastic/anisotropic/source.hpp | 12 ++--- .../dim2/elastic/isotropic/mass_matrix.hpp | 12 ++--- .../dim2/elastic/isotropic/mass_matrix.tpp | 12 ++--- .../medium/dim2/elastic/isotropic/source.hpp | 12 ++--- .../isotropic_cosserat/mass_matrix.hpp | 4 +- .../isotropic_cosserat/mass_matrix.tpp | 4 +- .../elastic/isotropic_cosserat/source.hpp | 6 +-- .../poroelastic/isotropic/mass_matrix.hpp | 4 +- .../poroelastic/isotropic/mass_matrix.tpp | 3 +- .../dim2/poroelastic/isotropic/source.hpp | 6 +-- .../medium/dim3/acoustic/isotropic/source.hpp | 17 +++---- .../dim3/elastic/isotropic/mass_matrix.hpp | 17 ++++--- .../dim3/elastic/isotropic/mass_matrix.tpp | 6 +-- .../medium/dim3/elastic/isotropic/source.hpp | 7 ++- .../medium_physics/mass_matrix_component.hpp | 10 ++--- core/specfem/point/acceleration.hpp | 11 ++--- core/specfem/point/displacement.hpp | 11 ++--- core/specfem/point/impl/field.hpp | 15 ++++--- core/specfem/point/mass_inverse.hpp | 11 ++--- core/specfem/point/velocity.hpp | 10 ++--- core/specfem/tags.hpp | 27 +++++++++++ core/specfem/timescheme/newmark.tpp | 22 ++++----- .../compute_wavefield/generate_data.hpp | 14 +++--- .../compute_coupling/acoustic_elastic.cpp | 10 +++-- .../compute_coupling/elastic_acoustic.cpp | 10 +++-- .../medium/mass_matrix/dim2/acoustic.cpp | 4 +- .../mass_matrix/dim2/elastic_anisotropic.cpp | 20 +++++---- .../mass_matrix/dim2/elastic_isotropic.cpp | 20 +++++---- .../medium/mass_matrix/dim2/poroelastic.cpp | 8 ++-- .../medium/mass_matrix/dim3/acoustic.cpp | 4 +- .../mass_matrix/dim3/elastic_isotropic.cpp | 8 ++-- .../medium/source/dim2/acoustic.cpp | 8 ++-- .../source/dim2/elastic_anisotropic.cpp | 8 ++-- .../medium/source/dim2/elastic_isotropic.cpp | 12 ++--- .../dim2/elastic_isotropic_cosserat.cpp | 8 ++-- .../medium/source/dim2/poroelastic.cpp | 8 ++-- .../medium/source/dim3/acoustic.cpp | 8 ++-- .../medium/source/dim3/elastic_isotropic.cpp | 8 ++-- 49 files changed, 272 insertions(+), 236 deletions(-) diff --git a/core/specfem/algorithms/coupling_integral.hpp b/core/specfem/algorithms/coupling_integral.hpp index c54a60d2a..e791d0de4 100644 --- a/core/specfem/algorithms/coupling_integral.hpp +++ b/core/specfem/algorithms/coupling_integral.hpp @@ -63,9 +63,9 @@ coupling_integral(const specfem::assembly::assembly &assembly, using PointIndexType = typename IndexType::iterator_type::index_type::index_type; - using PointFieldType = - specfem::point::acceleration; + using PointFieldType = specfem::point::acceleration< + specfem::tags::Tags >; using SelfTransferFunctionType = specfem::point::transfer_function_self< IntersectionFactor::n_quad_intersection, dimension_tag, IntersectionFactor::interface_tag, IntersectionFactor::boundary_tag>; diff --git a/core/specfem/boundary_conditions/stacey/stacey.tpp b/core/specfem/boundary_conditions/stacey/stacey.tpp index d09c15bc2..f23daabf6 100644 --- a/core/specfem/boundary_conditions/stacey/stacey.tpp +++ b/core/specfem/boundary_conditions/stacey/stacey.tpp @@ -830,13 +830,12 @@ specfem::boundary_conditions::impl_compute_mass_matrix_terms( constexpr static bool using_simd = PointPropertyType::simd::using_simd; using PointVelocityType = - specfem::point::velocity; + specfem::point::velocity>; using PointAccelerationType = - specfem::point::acceleration; - + specfem::point::acceleration>; using ViewType = typename PointVelocityType::value_type; using datatype = typename ViewType::value_type; diff --git a/core/specfem/compute/impl/compute_mass_matrix.tpp b/core/specfem/compute/impl/compute_mass_matrix.tpp index f47be6836..b24493500 100644 --- a/core/specfem/compute/impl/compute_mass_matrix.tpp +++ b/core/specfem/compute/impl/compute_mass_matrix.tpp @@ -60,8 +60,10 @@ void specfem::compute::impl::compute_mass_matrix( using parallel_config = specfem::parallel_configuration::default_chunk_config< dimension_tag, simd, Kokkos::DefaultExecutionSpace>; + using PointTags = specfem::tags::Tags; + using PointMassType = - specfem::point::mass_inverse; + specfem::point::mass_inverse; using PointPropertyType = specfem::point::properties>; + using PointTags = specfem::tags::Tags; + using PointDisplacementType = - specfem::point::displacement; + specfem::point::displacement; using PointVelocityType = - specfem::point::velocity; + specfem::point::velocity; using PointAccelerationType = - specfem::point::acceleration; + specfem::point::acceleration; using PointFieldDerivativesType = specfem::point::field_derivatives; diff --git a/core/specfem/compute/impl/compute_stiffness_interaction.tpp b/core/specfem/compute/impl/compute_stiffness_interaction.tpp index 16d2bf77b..0cb8bdf35 100644 --- a/core/specfem/compute/impl/compute_stiffness_interaction.tpp +++ b/core/specfem/compute/impl/compute_stiffness_interaction.tpp @@ -82,14 +82,16 @@ int specfem::compute::impl::compute_stiffness_interaction( ngll, Tags::dimension_tag, Kokkos::DefaultExecutionSpace::scratch_memory_space, Kokkos::MemoryTraits >; + using PointTags = specfem::tags::Tags; + using PointBoundaryType = specfem::point::boundary; using PointDisplacementType = - specfem::point::displacement; + specfem::point::displacement; using PointVelocityType = - specfem::point::velocity; + specfem::point::velocity; using PointAccelerationType = - specfem::point::acceleration; + specfem::point::acceleration; using PointJacobianMatrixType = specfem::point::jacobian_matrix; using PointPropertyType = diff --git a/core/specfem/compute/impl/divide_mass_matrix.tpp b/core/specfem/compute/impl/divide_mass_matrix.tpp index 560991585..76c9d2685 100644 --- a/core/specfem/compute/impl/divide_mass_matrix.tpp +++ b/core/specfem/compute/impl/divide_mass_matrix.tpp @@ -25,13 +25,17 @@ void specfem::compute::impl::divide_mass_matrix( constexpr bool using_simd = (dimension_tag == specfem::element::dimension_tag::dim2) ? true : false; #endif + using simd = specfem::datatype::simd; + + using PointTags = specfem::tags::Tags; + using PointAccelerationType = - specfem::point::acceleration; + specfem::point::acceleration; using PointMassInverseType = - specfem::point::mass_inverse; + specfem::point::mass_inverse; using parallel_config = specfem::parallel_configuration::default_range_config< - specfem::datatype::simd, + simd, Kokkos::DefaultExecutionSpace>; using IndexType = specfem::point::assembly_index; diff --git a/core/specfem/compute/impl/invert_mass_matrix.tpp b/core/specfem/compute/impl/invert_mass_matrix.tpp index 89a7d64cc..54fb5cc22 100644 --- a/core/specfem/compute/impl/invert_mass_matrix.tpp +++ b/core/specfem/compute/impl/invert_mass_matrix.tpp @@ -24,11 +24,13 @@ void specfem::compute::impl::invert_mass_matrix( constexpr bool using_simd = (dimension_tag == specfem::element::dimension_tag::dim2) ? true : false; #endif + using simd = specfem::datatype::simd; + using PointMassType = - specfem::point::mass_inverse; + specfem::point::mass_inverse>; using parallel_config = specfem::parallel_configuration::default_range_config< - specfem::datatype::simd, + simd, Kokkos::DefaultExecutionSpace>; using IndexType = specfem::point::assembly_index; @@ -36,7 +38,7 @@ void specfem::compute::impl::invert_mass_matrix( specfem::execution::RangeIterator range(parallel_config(), nglob); specfem::execution::for_all( - "specfem::compute::divide_mass_matrix", range, + "specfem::compute::invert_mass_matrix", range, KOKKOS_LAMBDA(const typename decltype(range)::base_index_type &iterator_index) { const auto index = iterator_index.get_index(); PointMassType mass; diff --git a/core/specfem/element_coupling.hpp b/core/specfem/element_coupling.hpp index 8fd21a5a4..4ebee7d42 100644 --- a/core/specfem/element_coupling.hpp +++ b/core/specfem/element_coupling.hpp @@ -2,16 +2,17 @@ #include "specfem/element.hpp" #include "specfem/element_connections.hpp" +#include "specfem/setup.hpp" + +namespace specfem::tags { +template struct Tags; +} namespace specfem::point { -template -struct acceleration; +template struct acceleration; -template -struct displacement; +template struct displacement; } // namespace specfem::point @@ -110,10 +111,10 @@ template <> struct attributes:: self_field { - using type = - specfem::point::acceleration; ///< vector acceleration + using type = specfem::point::acceleration< + specfem::tags::Tags >; ///< vector acceleration }; /** @@ -123,10 +124,10 @@ template <> struct attributes:: coupled_field { - using type = - specfem::point::acceleration; ///< scalar acceleration + using type = specfem::point::acceleration< + specfem::tags::Tags >; ///< scalar acceleration }; /** @@ -184,10 +185,10 @@ template <> struct attributes:: self_field { - using type = - specfem::point::acceleration; ///< scalar acceleration + using type = specfem::point::acceleration< + specfem::tags::Tags >; ///< scalar acceleration }; /** @@ -197,10 +198,10 @@ template <> struct attributes:: coupled_field { - using type = - specfem::point::displacement; ///< vector displacement + using type = specfem::point::displacement< + specfem::tags::Tags >; ///< vector displacement }; } // namespace specfem::element_coupling diff --git a/core/specfem/medium/dim2/acoustic/isotropic/mass_matrix.hpp b/core/specfem/medium/dim2/acoustic/isotropic/mass_matrix.hpp index afeb8da75..7b7709e4d 100644 --- a/core/specfem/medium/dim2/acoustic/isotropic/mass_matrix.hpp +++ b/core/specfem/medium/dim2/acoustic/isotropic/mass_matrix.hpp @@ -30,8 +30,8 @@ namespace medium_physics { * @return Mass inverse component [\f$ \kappa^{-1} \f$] for pressure wavefield */ template -KOKKOS_FUNCTION specfem::point::mass_inverse< - DimensionTag, specfem::element::medium_tag::acoustic, UseSIMD> +KOKKOS_FUNCTION specfem::point::mass_inverse > impl_mass_matrix_component( const specfem::point::properties< DimensionTag, specfem::element::medium_tag::acoustic, diff --git a/core/specfem/medium/dim2/acoustic/isotropic/mass_matrix.tpp b/core/specfem/medium/dim2/acoustic/isotropic/mass_matrix.tpp index bfb76ca8b..7e7fedc9a 100644 --- a/core/specfem/medium/dim2/acoustic/isotropic/mass_matrix.tpp +++ b/core/specfem/medium/dim2/acoustic/isotropic/mass_matrix.tpp @@ -4,7 +4,7 @@ template KOKKOS_FUNCTION specfem::point::mass_inverse< - DimensionTag, specfem::element::medium_tag::acoustic, UseSIMD> + specfem::tags::Tags> specfem::medium_physics::impl_mass_matrix_component( const specfem::point::properties< DimensionTag, specfem::element::medium_tag::acoustic, diff --git a/core/specfem/medium/dim2/acoustic/isotropic/source.hpp b/core/specfem/medium/dim2/acoustic/isotropic/source.hpp index ae1a63a24..29fca1e34 100644 --- a/core/specfem/medium/dim2/acoustic/isotropic/source.hpp +++ b/core/specfem/medium/dim2/acoustic/isotropic/source.hpp @@ -50,10 +50,9 @@ KOKKOS_INLINE_FUNCTION auto impl_compute_source_contribution( constexpr bool using_simd = PointPropertiesType::simd::using_simd; - using PointAccelerationType = - specfem::point::acceleration; + using PointAccelerationType = specfem::point::acceleration< + specfem::tags::Tags >; PointAccelerationType result; diff --git a/core/specfem/medium/dim2/elastic/anisotropic/source.hpp b/core/specfem/medium/dim2/elastic/anisotropic/source.hpp index 9ad22d61e..47d205f18 100644 --- a/core/specfem/medium/dim2/elastic/anisotropic/source.hpp +++ b/core/specfem/medium/dim2/elastic/anisotropic/source.hpp @@ -46,9 +46,9 @@ KOKKOS_INLINE_FUNCTION auto impl_compute_source_contribution( constexpr bool using_simd = PointPropertiesType::simd::using_simd; using PointAccelerationType = - specfem::point::acceleration; + specfem::point::acceleration >; PointAccelerationType result; @@ -92,9 +92,9 @@ KOKKOS_INLINE_FUNCTION auto impl_compute_source_contribution( constexpr bool using_simd = PointPropertiesType::simd::using_simd; using PointAccelerationType = - specfem::point::acceleration; + specfem::point::acceleration >; PointAccelerationType result; diff --git a/core/specfem/medium/dim2/elastic/isotropic/mass_matrix.hpp b/core/specfem/medium/dim2/elastic/isotropic/mass_matrix.hpp index 7fabc8979..d0878c1b5 100644 --- a/core/specfem/medium/dim2/elastic/isotropic/mass_matrix.hpp +++ b/core/specfem/medium/dim2/elastic/isotropic/mass_matrix.hpp @@ -28,10 +28,10 @@ namespace medium_physics { * @param properties Material properties (density) * @return Mass inverse components [ρ, ρ] for [u_x, u_z] */ -template +template KOKKOS_FUNCTION specfem::point::mass_inverse< - specfem::element::dimension_tag::dim2, - specfem::element::medium_tag::elastic_psv, UseSIMD> + specfem::tags::Tags > impl_mass_matrix_component( const specfem::point::properties +template KOKKOS_FUNCTION specfem::point::mass_inverse< - specfem::element::dimension_tag::dim2, - specfem::element::medium_tag::elastic_sh, UseSIMD> + specfem::tags::Tags > impl_mass_matrix_component( const specfem::point::properties +template KOKKOS_FUNCTION specfem::point::mass_inverse< - specfem::element::dimension_tag::dim2, specfem::element::medium_tag::elastic_psv, - UseSIMD> + specfem::tags::Tags> specfem::medium_physics::impl_mass_matrix_component( const specfem::point::properties +template KOKKOS_FUNCTION specfem::point::mass_inverse< - specfem::element::dimension_tag::dim2, specfem::element::medium_tag::elastic_sh, - UseSIMD> + specfem::tags::Tags> specfem::medium_physics::impl_mass_matrix_component( const specfem::point::properties; + specfem::point::acceleration >; PointAccelerationType result; @@ -91,9 +91,9 @@ KOKKOS_INLINE_FUNCTION auto impl_compute_source_contribution( constexpr bool using_simd = PointPropertiesType::simd::using_simd; using PointAccelerationType = - specfem::point::acceleration; + specfem::point::acceleration >; PointAccelerationType result; diff --git a/core/specfem/medium/dim2/elastic/isotropic_cosserat/mass_matrix.hpp b/core/specfem/medium/dim2/elastic/isotropic_cosserat/mass_matrix.hpp index 18b36fa1b..bd9af4c94 100644 --- a/core/specfem/medium/dim2/elastic/isotropic_cosserat/mass_matrix.hpp +++ b/core/specfem/medium/dim2/elastic/isotropic_cosserat/mass_matrix.hpp @@ -38,8 +38,8 @@ namespace medium_physics { */ template KOKKOS_FUNCTION specfem::point::mass_inverse< - specfem::element::dimension_tag::dim2, - specfem::element::medium_tag::elastic_psv_t, UseSIMD> + specfem::tags::Tags > impl_mass_matrix_component(const specfem::point::properties< specfem::element::dimension_tag::dim2, specfem::element::medium_tag::elastic_psv_t, diff --git a/core/specfem/medium/dim2/elastic/isotropic_cosserat/mass_matrix.tpp b/core/specfem/medium/dim2/elastic/isotropic_cosserat/mass_matrix.tpp index 93f84a850..edcb1ebec 100644 --- a/core/specfem/medium/dim2/elastic/isotropic_cosserat/mass_matrix.tpp +++ b/core/specfem/medium/dim2/elastic/isotropic_cosserat/mass_matrix.tpp @@ -4,9 +4,9 @@ template KOKKOS_FUNCTION - specfem::point::mass_inverse + UseSIMD>> specfem::medium_physics::impl_mass_matrix_component( const specfem::point::properties< specfem::element::dimension_tag::dim2, diff --git a/core/specfem/medium/dim2/elastic/isotropic_cosserat/source.hpp b/core/specfem/medium/dim2/elastic/isotropic_cosserat/source.hpp index 6c99fd67b..6f262e932 100644 --- a/core/specfem/medium/dim2/elastic/isotropic_cosserat/source.hpp +++ b/core/specfem/medium/dim2/elastic/isotropic_cosserat/source.hpp @@ -51,9 +51,9 @@ KOKKOS_INLINE_FUNCTION auto impl_compute_source_contribution( constexpr bool using_simd = PointPropertiesType::simd::using_simd; using PointAccelerationType = - specfem::point::acceleration; + specfem::point::acceleration >; PointAccelerationType result; diff --git a/core/specfem/medium/dim2/poroelastic/isotropic/mass_matrix.hpp b/core/specfem/medium/dim2/poroelastic/isotropic/mass_matrix.hpp index eec1b02b1..26da0817a 100644 --- a/core/specfem/medium/dim2/poroelastic/isotropic/mass_matrix.hpp +++ b/core/specfem/medium/dim2/poroelastic/isotropic/mass_matrix.hpp @@ -44,8 +44,8 @@ namespace medium_physics { */ template KOKKOS_FUNCTION specfem::point::mass_inverse< - specfem::element::dimension_tag::dim2, - specfem::element::medium_tag::poroelastic, UseSIMD> + specfem::tags::Tags > impl_mass_matrix_component( const specfem::point::properties KOKKOS_FUNCTION specfem::point::mass_inverse< - specfem::element::dimension_tag::dim2, specfem::element::medium_tag::poroelastic, - UseSIMD> + specfem::tags::Tags> specfem::medium_physics::impl_mass_matrix_component( const specfem::point::properties; + specfem::point::acceleration >; PointAccelerationType result; diff --git a/core/specfem/medium/dim3/acoustic/isotropic/source.hpp b/core/specfem/medium/dim3/acoustic/isotropic/source.hpp index 561149ed6..c6997e0d5 100644 --- a/core/specfem/medium/dim3/acoustic/isotropic/source.hpp +++ b/core/specfem/medium/dim3/acoustic/isotropic/source.hpp @@ -21,7 +21,8 @@ namespace specfem::medium_physics { * \f$ \ddot{\chi} = -\frac{S(t) \cdot L(\mathbf{x})}{\kappa} \f$ * * where: - * - \f$ \chi \f$: acoustic potential (related to pressure: \f$ p = -\ddot{\chi} \f$) + * - \f$ \chi \f$: acoustic potential (related to pressure: \f$ p = -\ddot{\chi} + * \f$) * - \f$ S(t) \f$: source time function * - \f$ L(\mathbf{x}) \f$: Lagrange interpolant for spatial localization * - \f$ \kappa \f$: bulk modulus of fluid @@ -50,17 +51,17 @@ KOKKOS_INLINE_FUNCTION auto impl_compute_source_contribution( const PointPropertiesType &point_properties) { constexpr bool using_simd = PointPropertiesType::simd::using_simd; - using PointAccelerationType = - specfem::point::acceleration; + using PointAccelerationType = specfem::point::acceleration< + specfem::tags::Tags >; PointAccelerationType result; /* note: for acoustic medium, the source is a pressure source and gets divided - * by kappa of the fluid. The sign is negative because pressure p = -chi_tt - * (negative second time derivative of acoustic potential chi) therefore - * we need to add minus the source to chi_tt to get plus the source in pressure + * by kappa of the fluid. The sign is negative because pressure p = + * -chi_tt (negative second time derivative of acoustic potential chi) + * therefore we need to add minus the source to chi_tt to get plus the source + * in pressure */ result(0) = -point_source.stf(0) * point_source.lagrange_interpolant(0) / point_properties.kappa(); diff --git a/core/specfem/medium/dim3/elastic/isotropic/mass_matrix.hpp b/core/specfem/medium/dim3/elastic/isotropic/mass_matrix.hpp index f2204e644..14e7cb569 100644 --- a/core/specfem/medium/dim3/elastic/isotropic/mass_matrix.hpp +++ b/core/specfem/medium/dim3/elastic/isotropic/mass_matrix.hpp @@ -27,14 +27,13 @@ namespace medium_physics { * @param properties Material properties * @return Mass inverse components for \f$ [u_x, u_y, u_z] \f$ */ -template -KOKKOS_FUNCTION - specfem::point::mass_inverse - impl_mass_matrix_component( - const specfem::point::properties &properties); - +template +KOKKOS_FUNCTION specfem::point::mass_inverse< + specfem::tags::Tags > +impl_mass_matrix_component( + const specfem::point::properties &properties); } // namespace medium_physics } // namespace specfem diff --git a/core/specfem/medium/dim3/elastic/isotropic/mass_matrix.tpp b/core/specfem/medium/dim3/elastic/isotropic/mass_matrix.tpp index 242edb28b..c70c94b00 100644 --- a/core/specfem/medium/dim3/elastic/isotropic/mass_matrix.tpp +++ b/core/specfem/medium/dim3/elastic/isotropic/mass_matrix.tpp @@ -2,14 +2,12 @@ #include "mass_matrix.hpp" -template +template KOKKOS_FUNCTION specfem::point::mass_inverse< - specfem::element::dimension_tag::dim3, specfem::element::medium_tag::elastic, - UseSIMD> + specfem::tags::Tags> specfem::medium_physics::impl_mass_matrix_component( const specfem::point::properties &properties) { - return { properties.rho(), properties.rho(), properties.rho() }; } diff --git a/core/specfem/medium/dim3/elastic/isotropic/source.hpp b/core/specfem/medium/dim3/elastic/isotropic/source.hpp index 596767b91..915870599 100644 --- a/core/specfem/medium/dim3/elastic/isotropic/source.hpp +++ b/core/specfem/medium/dim3/elastic/isotropic/source.hpp @@ -41,10 +41,9 @@ KOKKOS_INLINE_FUNCTION auto impl_compute_source_contribution( const PointPropertiesType &point_properties) { constexpr bool using_simd = PointPropertiesType::simd::using_simd; - using PointAccelerationType = - specfem::point::acceleration; + using PointAccelerationType = specfem::point::acceleration< + specfem::tags::Tags >; PointAccelerationType result; diff --git a/core/specfem/medium_physics/mass_matrix_component.hpp b/core/specfem/medium_physics/mass_matrix_component.hpp index 8825debbf..db8cb1bcd 100644 --- a/core/specfem/medium_physics/mass_matrix_component.hpp +++ b/core/specfem/medium_physics/mass_matrix_component.hpp @@ -39,11 +39,11 @@ namespace medium_physics { template -KOKKOS_INLINE_FUNCTION - specfem::point::mass_inverse - mass_matrix_component( - const specfem::point::properties &properties) { +KOKKOS_INLINE_FUNCTION specfem::point::mass_inverse< + specfem::tags::Tags > +mass_matrix_component( + const specfem::point::properties &properties) { return impl_mass_matrix_component(properties); } diff --git a/core/specfem/point/acceleration.hpp b/core/specfem/point/acceleration.hpp index f4f943453..f6d5e5ea3 100644 --- a/core/specfem/point/acceleration.hpp +++ b/core/specfem/point/acceleration.hpp @@ -67,19 +67,16 @@ namespace specfem::point { * @see specfem::point::displacement for displacement field accessor * @see specfem::point::mass_inverse for inverse mass matrix field accessor */ -template +template class acceleration - : public impl::field { + : public impl::field { private: /** * @brief Type alias for the base field implementation. */ using base_type = - impl::field; + impl::field; public: /** diff --git a/core/specfem/point/displacement.hpp b/core/specfem/point/displacement.hpp index c0ae69fbe..60caf7c33 100644 --- a/core/specfem/point/displacement.hpp +++ b/core/specfem/point/displacement.hpp @@ -62,19 +62,16 @@ namespace specfem::point { * @see specfem::point::acceleration for acceleration field accessor * @see specfem::point::mass_inverse for inverse mass matrix field accessor */ -template +template class displacement - : public impl::field { + : public impl::field { private: /** * @brief Type alias for the base field implementation. */ using base_type = - impl::field; + impl::field; public: /** diff --git a/core/specfem/point/impl/field.hpp b/core/specfem/point/impl/field.hpp index 15ed8726f..dd530d714 100644 --- a/core/specfem/point/impl/field.hpp +++ b/core/specfem/point/impl/field.hpp @@ -2,6 +2,7 @@ #include "specfem/data_access.hpp" #include "specfem/datatype.hpp" +#include "specfem/tags.hpp" #include #include @@ -67,26 +68,26 @@ namespace specfem::point::impl { * specfem::assembly::load_on_device(point_index, field_container, v_field); * @endcode */ -template +template class field : public specfem::data_access::Accessor< specfem::datatype::AccessorType::point, DataClass, - DimensionTag, UseSIMD> { + Tags::dimension_tag, Tags::using_simd> { private: /** * @brief Type alias for the base accessor class. */ using base_type = specfem::data_access::Accessor; + DataClass, Tags::dimension_tag, + Tags::using_simd>; public: /** * @brief Number of field components based on dimension and medium type. */ constexpr static int components = - specfem::element::attributes::components; + specfem::element::attributes::components; /** * @brief SIMD type for vectorized operations. @@ -102,7 +103,7 @@ class field : public specfem::data_access::Accessor< /** * @brief Medium tag identifying the physical medium type. */ - constexpr static auto medium_tag = MediumTag; + constexpr static auto medium_tag = Tags::medium_tag; private: /** diff --git a/core/specfem/point/mass_inverse.hpp b/core/specfem/point/mass_inverse.hpp index d97233a60..15208bf01 100644 --- a/core/specfem/point/mass_inverse.hpp +++ b/core/specfem/point/mass_inverse.hpp @@ -69,19 +69,16 @@ namespace specfem::point { * @see specfem::point::velocity for velocity field accessor * @see specfem::point::acceleration for acceleration field accessor */ -template +template class mass_inverse - : public impl::field { + : public impl::field { private: /** * @brief Type alias for the base field implementation. */ using base_type = - impl::field; + impl::field; public: /** diff --git a/core/specfem/point/velocity.hpp b/core/specfem/point/velocity.hpp index c955747b5..f02c62d88 100644 --- a/core/specfem/point/velocity.hpp +++ b/core/specfem/point/velocity.hpp @@ -66,19 +66,15 @@ namespace specfem::point { * @see specfem::point::acceleration for acceleration field accessor * @see specfem::point::mass_inverse for inverse mass matrix field accessor */ -template +template class velocity - : public impl::field { + : public impl::field { private: /** * @brief Type alias for the base field implementation. */ using base_type = - impl::field; + impl::field; public: /** diff --git a/core/specfem/tags.hpp b/core/specfem/tags.hpp index ac379ad48..53d8698e4 100644 --- a/core/specfem/tags.hpp +++ b/core/specfem/tags.hpp @@ -1,5 +1,6 @@ #pragma once +#include "specfem/datatype.hpp" #include "specfem/element.hpp" #include "specfem/element_connections.hpp" #include "specfem/element_coupling.hpp" @@ -90,6 +91,13 @@ struct TagMember { static constexpr specfem::simulation::field_type wavefield_tag = WavefieldTag; }; +/** + * @brief SIMD tag specialization for point field types (enabled, disabled). + */ +template struct TagMember { + static constexpr bool using_simd = UseSIMD; +}; + /** * @brief Variadic template for combining multiple compile-time tags. * @@ -111,4 +119,23 @@ struct TagMember { template struct Tags : TagMember... {}; +// template +// using MediumTags = Tags; + +// template +// using PointMediumTags = Tags; + +// template +// using PropertyTags = Tags; + +// template +// using PointPropertyTags = Tags; + +// template +// using BoundaryTags = Tags; + } // namespace specfem::tags diff --git a/core/specfem/timescheme/newmark.tpp b/core/specfem/timescheme/newmark.tpp index 48db6e606..5200a5fa5 100644 --- a/core/specfem/timescheme/newmark.tpp +++ b/core/specfem/timescheme/newmark.tpp @@ -22,12 +22,12 @@ int specfem::time_scheme::newmark_impl::corrector_phase_impl( constexpr bool using_simd = true; #endif using PointAccelerationType = - specfem::point::acceleration; + specfem::point::acceleration>; using PointVelocityType = - specfem::point::velocity; + specfem::point::velocity>; using parallel_config = specfem::parallel_configuration::default_range_config< specfem::datatype::simd, @@ -78,15 +78,17 @@ int specfem::time_scheme::newmark_impl::predictor_phase_impl( constexpr bool using_simd = true; #endif - using PointAccelerationType = - specfem::point::acceleration; + + using PointAccelerationType = + specfem::point::acceleration; using PointVelocityType = - specfem::point::velocity; + specfem::point::velocity; using PointDisplacementType = - specfem::point::displacement; + specfem::point::displacement; using parallel_config = specfem::parallel_configuration::default_range_config< specfem::datatype::simd, diff --git a/tests/unit-tests/assembly/compute_wavefield/generate_data.hpp b/tests/unit-tests/assembly/compute_wavefield/generate_data.hpp index 79f17273f..6b5a59227 100644 --- a/tests/unit-tests/assembly/compute_wavefield/generate_data.hpp +++ b/tests/unit-tests/assembly/compute_wavefield/generate_data.hpp @@ -5,6 +5,7 @@ #pragma once #include "specfem/enums.hpp" #include "specfem/point.hpp" +#include "specfem/tags.hpp" template ::components; using PointDisplacementType = - specfem::point::displacement; - using PointVelocityType = - specfem::point::velocity; + specfem::point::displacement >; + using PointVelocityType = specfem::point::velocity >; using PointAccelerationType = - specfem::point::acceleration; + specfem::point::acceleration >; using IndexType = specfem::point::index; diff --git a/tests/unit-tests/compute_coupling/acoustic_elastic.cpp b/tests/unit-tests/compute_coupling/acoustic_elastic.cpp index fb39814ae..d0b29c16b 100644 --- a/tests/unit-tests/compute_coupling/acoustic_elastic.cpp +++ b/tests/unit-tests/compute_coupling/acoustic_elastic.cpp @@ -37,15 +37,17 @@ TEST_P(AcousticElasticCouplingTest, CouplingCalculation) { { params.normal[0], params.normal[1] }); // Create coupled field (displacement from acoustic medium) - specfem::point::displacement + specfem::point::displacement< + specfem::tags::Tags > coupled_field; coupled_field(0) = params.displacement_value[0]; coupled_field(1) = params.displacement_value[1]; // Create self field (acceleration in elastic medium) - specfem::point::acceleration + specfem::point::acceleration< + specfem::tags::Tags > self_field; // Perform coupling computation diff --git a/tests/unit-tests/compute_coupling/elastic_acoustic.cpp b/tests/unit-tests/compute_coupling/elastic_acoustic.cpp index 82be28173..ffbac7d65 100644 --- a/tests/unit-tests/compute_coupling/elastic_acoustic.cpp +++ b/tests/unit-tests/compute_coupling/elastic_acoustic.cpp @@ -37,13 +37,15 @@ TEST_P(ElasticAcousticCouplingTest, CouplingCalculation) { { params.normal[0], params.normal[1] }); // Create coupled field (acceleration from elastic medium) - specfem::point::acceleration + specfem::point::acceleration< + specfem::tags::Tags > coupled_field; coupled_field(0) = params.acceleration; - specfem::point::acceleration + specfem::point::acceleration< + specfem::tags::Tags > self_field; // Perform coupling computation diff --git a/tests/unit-tests/medium/mass_matrix/dim2/acoustic.cpp b/tests/unit-tests/medium/mass_matrix/dim2/acoustic.cpp index 5d5a35de3..8867511b1 100644 --- a/tests/unit-tests/medium/mass_matrix/dim2/acoustic.cpp +++ b/tests/unit-tests/medium/mass_matrix/dim2/acoustic.cpp @@ -13,8 +13,8 @@ TEST(MassMatrix, AcousticIsotropic2D) { specfem::point::jacobian_matrix; using PointPropertiesType = specfem::point::properties; - using PointMassMatrixType = - specfem::point::mass_inverse; + using PointMassMatrixType = specfem::point::mass_inverse< + specfem::tags::Tags >; const type_real kappa = 10.0; diff --git a/tests/unit-tests/medium/mass_matrix/dim2/elastic_anisotropic.cpp b/tests/unit-tests/medium/mass_matrix/dim2/elastic_anisotropic.cpp index 2d368a88c..d8d2d86d3 100644 --- a/tests/unit-tests/medium/mass_matrix/dim2/elastic_anisotropic.cpp +++ b/tests/unit-tests/medium/mass_matrix/dim2/elastic_anisotropic.cpp @@ -12,8 +12,9 @@ TEST(MassMatrix, ElasticPSVAnIsotropicTrivialSolution2D) { specfem::point::properties; - using PointPSVMassMatrixType = specfem::point::mass_inverse< - dimension, specfem::element::medium_tag::elastic_psv, false>; + using PointPSVMassMatrixType = + specfem::point::mass_inverse >; const PointPSVPropertiesType properties(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); @@ -33,8 +34,9 @@ TEST(MassMatrix, ElasticSHAnIsotropicTrivialSolution2D) { using PointSHPropertiesType = specfem::point::properties< dimension, specfem::element::medium_tag::elastic_sh, property_tag, false>; - using PointSHMassMatrixType = specfem::point::mass_inverse< - dimension, specfem::element::medium_tag::elastic_sh, false>; + using PointSHMassMatrixType = + specfem::point::mass_inverse >; const PointSHPropertiesType properties(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); @@ -56,8 +58,9 @@ TEST(MassMatrix, ElasticPSVAnIsotropic2D) { specfem::point::properties; - using PointPSVMassMatrixType = specfem::point::mass_inverse< - dimension, specfem::element::medium_tag::elastic_psv, false>; + using PointPSVMassMatrixType = + specfem::point::mass_inverse >; const type_real rho = 10.0; @@ -79,8 +82,9 @@ TEST(MassMatrix, ElasticSHAnIsotropic2D) { using PointSHPropertiesType = specfem::point::properties< dimension, specfem::element::medium_tag::elastic_sh, property_tag, false>; - using PointSHMassMatrixType = specfem::point::mass_inverse< - dimension, specfem::element::medium_tag::elastic_sh, false>; + using PointSHMassMatrixType = + specfem::point::mass_inverse >; const type_real rho = 10.0; diff --git a/tests/unit-tests/medium/mass_matrix/dim2/elastic_isotropic.cpp b/tests/unit-tests/medium/mass_matrix/dim2/elastic_isotropic.cpp index 9271fbc15..f5aa95aa6 100644 --- a/tests/unit-tests/medium/mass_matrix/dim2/elastic_isotropic.cpp +++ b/tests/unit-tests/medium/mass_matrix/dim2/elastic_isotropic.cpp @@ -12,8 +12,9 @@ TEST(MassMatrix, ElasticPSVIsotropicTrivialSolution2D) { specfem::point::properties; - using PointPSVMassMatrixType = specfem::point::mass_inverse< - dimension, specfem::element::medium_tag::elastic_psv, false>; + using PointPSVMassMatrixType = + specfem::point::mass_inverse >; const PointPSVPropertiesType properties(0.0, 0.0, 0.0); @@ -32,8 +33,9 @@ TEST(MassMatrix, ElasticSHIsotropicTrivialSolution2D) { using PointSHPropertiesType = specfem::point::properties< dimension, specfem::element::medium_tag::elastic_sh, property_tag, false>; - using PointSHMassMatrixType = specfem::point::mass_inverse< - dimension, specfem::element::medium_tag::elastic_sh, false>; + using PointSHMassMatrixType = + specfem::point::mass_inverse >; const PointSHPropertiesType properties(0.0, 0.0, 0.0); @@ -54,8 +56,9 @@ TEST(MassMatrix, ElasticPSVIsotropic2D) { specfem::point::properties; - using PointPSVMassMatrixType = specfem::point::mass_inverse< - dimension, specfem::element::medium_tag::elastic_psv, false>; + using PointPSVMassMatrixType = + specfem::point::mass_inverse >; const type_real rho = 10.0; @@ -76,8 +79,9 @@ TEST(MassMatrix, ElasticSHIsotropic2D) { using PointSHPropertiesType = specfem::point::properties< dimension, specfem::element::medium_tag::elastic_sh, property_tag, false>; - using PointSHMassMatrixType = specfem::point::mass_inverse< - dimension, specfem::element::medium_tag::elastic_sh, false>; + using PointSHMassMatrixType = + specfem::point::mass_inverse >; const type_real rho = 10.0; diff --git a/tests/unit-tests/medium/mass_matrix/dim2/poroelastic.cpp b/tests/unit-tests/medium/mass_matrix/dim2/poroelastic.cpp index e768acee2..5b7ad4894 100644 --- a/tests/unit-tests/medium/mass_matrix/dim2/poroelastic.cpp +++ b/tests/unit-tests/medium/mass_matrix/dim2/poroelastic.cpp @@ -14,8 +14,8 @@ TEST(MassMatrix, PoroelasticIsotropic2DZeroPorosity) { specfem::point::jacobian_matrix; using PointPropertiesType = specfem::point::properties; - using PointMassMatrixType = - specfem::point::mass_inverse; + using PointMassMatrixType = specfem::point::mass_inverse< + specfem::tags::Tags >; const type_real rho_s = 2.0; const type_real phi = 0.0; @@ -52,8 +52,8 @@ TEST(MassMatrix, PoroelasticIsotropic2D) { specfem::point::jacobian_matrix; using PointPropertiesType = specfem::point::properties; - using PointMassMatrixType = - specfem::point::mass_inverse; + using PointMassMatrixType = specfem::point::mass_inverse< + specfem::tags::Tags >; const type_real rho_s = 2.0; const type_real phi = 0.5; diff --git a/tests/unit-tests/medium/mass_matrix/dim3/acoustic.cpp b/tests/unit-tests/medium/mass_matrix/dim3/acoustic.cpp index 43af5f9ab..1d9729507 100644 --- a/tests/unit-tests/medium/mass_matrix/dim3/acoustic.cpp +++ b/tests/unit-tests/medium/mass_matrix/dim3/acoustic.cpp @@ -13,8 +13,8 @@ TEST(MassMatrix, AcousticIsotropic3D) { specfem::point::jacobian_matrix; using PointPropertiesType = specfem::point::properties; - using PointMassMatrixType = - specfem::point::mass_inverse; + using PointMassMatrixType = specfem::point::mass_inverse< + specfem::tags::Tags >; const type_real kappa = 10.0; diff --git a/tests/unit-tests/medium/mass_matrix/dim3/elastic_isotropic.cpp b/tests/unit-tests/medium/mass_matrix/dim3/elastic_isotropic.cpp index 351a2ae4f..74ae5803e 100644 --- a/tests/unit-tests/medium/mass_matrix/dim3/elastic_isotropic.cpp +++ b/tests/unit-tests/medium/mass_matrix/dim3/elastic_isotropic.cpp @@ -10,8 +10,8 @@ TEST(MassMatrix, ElasticIsotropicTrivialSolution3D) { using PointPropertiesType = specfem::point::properties< dimension, specfem::element::medium_tag::elastic, property_tag, false>; - using PointMassMatrixType = specfem::point::mass_inverse< - dimension, specfem::element::medium_tag::elastic, false>; + using PointMassMatrixType = specfem::point::mass_inverse >; const PointPropertiesType properties(0.0, 0.0, 0.0); @@ -30,8 +30,8 @@ TEST(MassMatrix, ElasticIsotropic3D) { using PointPropertiesType = specfem::point::properties< dimension, specfem::element::medium_tag::elastic, property_tag, false>; - using PointMassMatrixType = specfem::point::mass_inverse< - dimension, specfem::element::medium_tag::elastic, false>; + using PointMassMatrixType = specfem::point::mass_inverse >; const type_real rho = 10.0; diff --git a/tests/unit-tests/medium/source/dim2/acoustic.cpp b/tests/unit-tests/medium/source/dim2/acoustic.cpp index 3398c6f18..9de44ffc8 100644 --- a/tests/unit-tests/medium/source/dim2/acoustic.cpp +++ b/tests/unit-tests/medium/source/dim2/acoustic.cpp @@ -17,8 +17,8 @@ TEST(Source, AcousticIsotropic2D) { using PointSourceType = specfem::point::source; - using PointAccelerationType = - specfem::point::acceleration; + using PointAccelerationType = specfem::point::acceleration< + specfem::tags::Tags >; const type_real rho_inverse = 2.0; const type_real kappa = 10.0; @@ -55,8 +55,8 @@ TEST(Source, AcousticIsotropic2D_ZeroSource) { using PointSourceType = specfem::point::source; - using PointAccelerationType = - specfem::point::acceleration; + using PointAccelerationType = specfem::point::acceleration< + specfem::tags::Tags >; const type_real rho_inverse = 2.0; const type_real kappa = 10.0; diff --git a/tests/unit-tests/medium/source/dim2/elastic_anisotropic.cpp b/tests/unit-tests/medium/source/dim2/elastic_anisotropic.cpp index 239edb1fd..f636cc186 100644 --- a/tests/unit-tests/medium/source/dim2/elastic_anisotropic.cpp +++ b/tests/unit-tests/medium/source/dim2/elastic_anisotropic.cpp @@ -17,8 +17,8 @@ TEST(Source, ElasticAnisotropicPSV2D) { using PointSourceType = specfem::point::source; - using PointAccelerationType = - specfem::point::acceleration; + using PointAccelerationType = specfem::point::acceleration< + specfem::tags::Tags >; const type_real c11 = 50e9, c13 = 30e9, c15 = 0.0; const type_real c33 = 45e9, c35 = 0.0, c55 = 25e9; @@ -62,8 +62,8 @@ TEST(Source, ElasticAnisotropicSH2D) { using PointSourceType = specfem::point::source; - using PointAccelerationType = - specfem::point::acceleration; + using PointAccelerationType = specfem::point::acceleration< + specfem::tags::Tags >; const type_real c11 = 30e9, c13 = 0.0, c15 = 0.0; const type_real c33 = 30e9, c35 = 0.0, c55 = 25e9; diff --git a/tests/unit-tests/medium/source/dim2/elastic_isotropic.cpp b/tests/unit-tests/medium/source/dim2/elastic_isotropic.cpp index f253d4933..db5ad9832 100644 --- a/tests/unit-tests/medium/source/dim2/elastic_isotropic.cpp +++ b/tests/unit-tests/medium/source/dim2/elastic_isotropic.cpp @@ -17,8 +17,8 @@ TEST(Source, ElasticIsotropicPSV2D) { using PointSourceType = specfem::point::source; - using PointAccelerationType = - specfem::point::acceleration; + using PointAccelerationType = specfem::point::acceleration< + specfem::tags::Tags >; const type_real rho = 2000.0; const type_real mu = 30e9; @@ -60,8 +60,8 @@ TEST(Source, ElasticIsotropicSH2D) { using PointSourceType = specfem::point::source; - using PointAccelerationType = - specfem::point::acceleration; + using PointAccelerationType = specfem::point::acceleration< + specfem::tags::Tags >; const type_real rho = 2000.0; const type_real mu = 30e9; @@ -99,8 +99,8 @@ TEST(Source, ElasticIsotropicPSV2D_ZeroSource) { using PointSourceType = specfem::point::source; - using PointAccelerationType = - specfem::point::acceleration; + using PointAccelerationType = specfem::point::acceleration< + specfem::tags::Tags >; const type_real rho = 2000.0; const type_real mu = 30e9; diff --git a/tests/unit-tests/medium/source/dim2/elastic_isotropic_cosserat.cpp b/tests/unit-tests/medium/source/dim2/elastic_isotropic_cosserat.cpp index bef118a58..770119b44 100644 --- a/tests/unit-tests/medium/source/dim2/elastic_isotropic_cosserat.cpp +++ b/tests/unit-tests/medium/source/dim2/elastic_isotropic_cosserat.cpp @@ -18,8 +18,8 @@ TEST(Source, ElasticIsotropicCosserat2D) { using PointSourceType = specfem::point::source; - using PointAccelerationType = - specfem::point::acceleration; + using PointAccelerationType = specfem::point::acceleration< + specfem::tags::Tags >; const type_real rho = 2000.0; const type_real kappa = 40e9; @@ -72,8 +72,8 @@ TEST(Source, ElasticIsotropicCosserat2D_ZeroSource) { using PointSourceType = specfem::point::source; - using PointAccelerationType = - specfem::point::acceleration; + using PointAccelerationType = specfem::point::acceleration< + specfem::tags::Tags >; const type_real rho = 2000.0; const type_real kappa = 40e9; diff --git a/tests/unit-tests/medium/source/dim2/poroelastic.cpp b/tests/unit-tests/medium/source/dim2/poroelastic.cpp index ca4fc1203..3d7c9a142 100644 --- a/tests/unit-tests/medium/source/dim2/poroelastic.cpp +++ b/tests/unit-tests/medium/source/dim2/poroelastic.cpp @@ -17,8 +17,8 @@ TEST(Source, PoroelasticIsotropic2D) { using PointSourceType = specfem::point::source; - using PointAccelerationType = - specfem::point::acceleration; + using PointAccelerationType = specfem::point::acceleration< + specfem::tags::Tags >; const type_real phi = 0.3; const type_real rho_s = 2500.0; @@ -77,8 +77,8 @@ TEST(Source, PoroelasticIsotropic2D_ZeroSource) { using PointSourceType = specfem::point::source; - using PointAccelerationType = - specfem::point::acceleration; + using PointAccelerationType = specfem::point::acceleration< + specfem::tags::Tags >; const type_real phi = 0.3; const type_real rho_s = 2500.0; diff --git a/tests/unit-tests/medium/source/dim3/acoustic.cpp b/tests/unit-tests/medium/source/dim3/acoustic.cpp index b9cf2793b..3036260d4 100644 --- a/tests/unit-tests/medium/source/dim3/acoustic.cpp +++ b/tests/unit-tests/medium/source/dim3/acoustic.cpp @@ -17,8 +17,8 @@ TEST(Source, AcousticIsotropic3D) { using PointSourceType = specfem::point::source; - using PointAccelerationType = - specfem::point::acceleration; + using PointAccelerationType = specfem::point::acceleration< + specfem::tags::Tags >; const type_real kappa = 10.0; const PointPropertiesType properties(kappa); @@ -54,8 +54,8 @@ TEST(Source, AcousticIsotropic3D_ZeroSource) { using PointSourceType = specfem::point::source; - using PointAccelerationType = - specfem::point::acceleration; + using PointAccelerationType = specfem::point::acceleration< + specfem::tags::Tags >; const type_real kappa = 10.0; const PointPropertiesType properties(kappa); diff --git a/tests/unit-tests/medium/source/dim3/elastic_isotropic.cpp b/tests/unit-tests/medium/source/dim3/elastic_isotropic.cpp index 53e89d5ae..b4aced3ac 100644 --- a/tests/unit-tests/medium/source/dim3/elastic_isotropic.cpp +++ b/tests/unit-tests/medium/source/dim3/elastic_isotropic.cpp @@ -17,8 +17,8 @@ TEST(Source, ElasticIsotropic3D) { using PointSourceType = specfem::point::source; - using PointAccelerationType = - specfem::point::acceleration; + using PointAccelerationType = specfem::point::acceleration< + specfem::tags::Tags >; const type_real rho = 2700.0; const type_real mu = 40e9; @@ -64,8 +64,8 @@ TEST(Source, ElasticIsotropic3D_ZeroSource) { using PointSourceType = specfem::point::source; - using PointAccelerationType = - specfem::point::acceleration; + using PointAccelerationType = specfem::point::acceleration< + specfem::tags::Tags >; const type_real rho = 2700.0; const type_real mu = 40e9;