Peano
Loading...
Searching...
No Matches
Hhs1.h
Go to the documentation of this file.
1#ifndef EXASEIS_SCENARIOHHSONE_HEADER
2#define EXASEIS_SCENARIOHHSONE_HEADER
3#include "Scenario.h"
4
5template <class Shortcuts, int basisSize>
6class Hhs1 : public Scenario<Shortcuts, basisSize>{
7 private:
9
10 public:
11
12 Hhs1(DomainInformation* info):Scenario<Shortcuts,basisSize>(info){
13 //place point source in center of topography 0.693km below surface
14 m_pointSourceLocation[0] = 0.0;
15 // m_pointSourceLocation[1] = 0.693;
16 // m_pointSourceLocation[2] = 0.0;
17 m_pointSourceLocation[1] = 0.0;
18 m_pointSourceLocation[2] = 0.693;
19 };
20
22 const double* const x,
24 const double t,
25 const double dt,
26 double* Q
27 ){
28 Shortcuts s;
29
30#ifdef ISOTROPIC
31 Q[s.rho] = 2.7;
32 Q[s.cp ] = 6.0;
33 Q[s.cs ] = 3.464;
34#elif defined ANISOTROPIC
35 assertion1(false,"Hhs1 Not implemented in the Anisotropic case" );
36#else
37#error Whole space problem only defined for Isotropic and Anisotropic Scenario
38#endif
39 }
40
41 void initPointSourceLocation(double pointSourceLocation[][3]){
42 pointSourceLocation[0][0]=m_pointSourceLocation[0];
43 pointSourceLocation[0][1]=m_pointSourceLocation[1];
44 pointSourceLocation[0][2]=m_pointSourceLocation[2];
45 }
46
47 void setPointSourceVector(const double* const Q,
48 const double* const x,const double t,const double dt,
49 double* forceVector, int n){
50
51 assertion2(n == 0, "Only a single pointSource for Hhs1",n);
52
53 constexpr double t0 = 0.1;
54 constexpr double M0 = 1000.0;
55
56 double f = M0*t/(t0*t0)*std::exp(-t/t0);
57
58 Shortcuts s;
59 forceVector[s.sigma + 3] = f;
60 }
61
62 void refinementCriteria(std::vector<Refinement::RefinementCriterion<Shortcuts>*>& criteria) override {
63
64 Shortcuts s;
65
66 criteria.push_back(new Refinement::StaticAMR<Shortcuts>);
67
68 double lower[3];
69 double upper[3];
70 lower[0] = -3.0;
71 lower[1] = -1.0;
72 lower[2] = -3.0;
73
74 upper[0] = 12.0;
75 upper[1] = 3.0;
76 upper[2] = 12.0;
77
78 criteria.push_back(
80 lower,
81 upper)
82 );
83 };
84};
85#endif
#define assertion2(expr, param0, param1)
#define assertion1(expr, param)
Definition Hhs1.h:6
Hhs1(DomainInformation *info)
Definition Hhs1.h:12
double m_pointSourceLocation[3]
Definition Hhs1.h:8
void initPointSourceLocation(double pointSourceLocation[][3])
Definition Hhs1.h:41
void initUnknownsPointwise(const double *const x, const tarch::la::Vector< Dimensions, double > &center, const double t, const double dt, double *Q)
Definition Hhs1.h:21
void setPointSourceVector(const double *const Q, const double *const x, const double t, const double dt, double *forceVector, int n)
Definition Hhs1.h:47
void refinementCriteria(std::vector< Refinement::RefinementCriterion< Shortcuts > * > &criteria) override
Definition Hhs1.h:62
DomainInformation * info
Definition Scenario.h:35
Simple vector class.
Definition Vector.h:159