21 #ifndef SRC_CORECOMPONENTS_PHYSICSSOLVERS_WAVEPROPAGATION_ELASTICWAVEEQUATIONSEM_HPP_
22 #define SRC_CORECOMPONENTS_PHYSICSSOLVERS_WAVEPROPAGATION_ELASTICWAVEEQUATIONSEM_HPP_
36 using EXEC_POLICY = parallelDevicePolicy< >;
37 using ATOMIC_POLICY = parallelDeviceAtomic;
40 Group *
const parent );
54 static string catalogName() {
return "ElasticSEM"; }
75 bool const computeGradient )
override;
81 bool const computeGradient )
override;
105 virtual real64 computeTimeStep(
real64 & dtOut )
override;
114 real64 const eventProgress,
119 static constexpr
char const * displacementXNp1AtReceiversString() {
return "displacementXNp1AtReceivers"; }
120 static constexpr
char const * displacementYNp1AtReceiversString() {
return "displacementYNp1AtReceivers"; }
121 static constexpr
char const * displacementZNp1AtReceiversString() {
return "displacementZNp1AtReceivers"; }
123 static constexpr
char const * dasSignalNp1AtReceiversString() {
return "dasSignalNp1AtReceivers"; }
125 static constexpr
char const * sourceForceString() {
return "sourceForce"; }
126 static constexpr
char const * sourceMomentString() {
return "sourceMoment"; }
128 static constexpr
char const * useVtiString() {
return "useVTI"; }
130 } waveEquationViewKeys;
146 void computeUnknowns(
real64 const & time_n,
152 void synchronizeUnknowns(
real64 const & time_n,
158 void prepareNextTimestep(
MeshLevel & mesh );
181 virtual
void precomputeSourceAndReceiverTerm(
MeshLevel & baseMesh,
MeshLevel & mesh,
arrayView1d<
string const > const & regionNames ) override;
193 virtual
void initializePML() override;
Partition of the decomposed physical domain. It also manages the connexion information to its neighbo...
static string coupledSolverAttributePrefix()
String used to form the solverName used to register solvers in CoupledSolver.
virtual void registerDataOnMesh(Group &meshBodies) override final
Register wrappers that contain data on the mesh objects.
virtual void cleanup(real64 const time_n, integer const cycleNumber, integer const eventCounter, real64 const eventProgress, DomainPartition &domain) override
Overridden from ExecutableGroup. Used to write last seismogram if needed.
real64 explicitStepInternal(real64 const &time_n, real64 const &dt, DomainPartition &domain)
string getCatalogName() const override
virtual void initializePostInitialConditionsPreSubGroups() override final
Called by InitializePostInitialConditions() prior to initializing sub-Groups.
void addSourceToRightHandSide(real64 const &time_n, arrayView1d< real32 > const rhsx, arrayView1d< real32 > const rhsy, arrayView1d< real32 > const rhsz)
Multiply the precomputed term by the Ricker and add to the right-hand side.
virtual void initializePreSubGroups() override
Called by Initialize() prior to initializing sub-Groups.
void computeDAS(arrayView2d< real32 > const xCompRcv, arrayView2d< real32 > const yCompRcv, arrayView2d< real32 > const zCompRcv)
Compute DAS data as a difference of the field at two points, from the appropriate three-component rec...
virtual void postInputInitialization() override final
real32 computeGlobalMinQFactor()
Computes the minimum attenuation quality factor over all the mesh. This is useful for computing anela...
Class facilitating the representation of a multi-level discretization of a MeshBody.
virtual real64 explicitStepForward(real64 const &time_n, real64 const &dt, integer const cycleNumber, DomainPartition &domain, bool const computeGradient) override
Perform forward explicit step.
virtual real64 explicitStepBackward(real64 const &time_n, real64 const &dt, integer const cycleNumber, DomainPartition &domain, bool const computeGradient) override
Perform backward explicit step.
ArrayView< T, 1 > arrayView1d
Alias for 1D array view.
float real32
32-bit floating point type.
Array< T, 2, PERMUTATION > array2d
Alias for 2D array.
std::string string
String type.
double real64
64-bit floating point type.
std::int32_t integer
Signed integer type.
ArrayView< T, 2, USD > arrayView2d
Alias for 2D array view.