We define our array types inside dimension class in specfem_enums.hpp. And the corresponding reductions inside specfem_setup.hpp. Check the compute seismogram method for more information on how reductions are carried out using the array type.
Things to do - receivers should be templated on seismogram types and every seismogram type should have a specialized implementation.
Issue Number
If there is an issue created for these changes, link it here
Checklist
Please make sure to check developer documentation on specfem docs.
[x] I ran the code through pre-commit to check style
[x] My code passes all the integration tests
[] I have added sufficient unittests to test my changes
[] I have added/updated documentation for the changes I am proposing
[x] I have updated CMakeLists to ensure my code builds
Description
Implemeted elastic and acoustic elemental receivers. Computing seismograms require either scalar or array reductions. By default Kokkos does not support array reductions. To implement array reductions Kokkos needs arrays to be described as scalars. Check https://kokkos.github.io/kokkos-core-wiki/ProgrammingGuide/Custom-Reductions-Built-In-Reducers-with-Custom-Scalar-Types.html#example which implements an array as a scalar type.
We define our array types inside dimension class in
specfem_enums.hpp
. And the corresponding reductions insidespecfem_setup.hpp
. Check the compute seismogram method for more information on how reductions are carried out using the array type.Things to do - receivers should be templated on seismogram types and every seismogram type should have a specialized implementation.
Issue Number
If there is an issue created for these changes, link it here
Checklist
Please make sure to check developer documentation on specfem docs.