Peano
Loading...
Searching...
No Matches
ElasticSolver.h
Go to the documentation of this file.
1//
2// ExaHyPE2 solver file
3// Generated by Peano's Python API
4// www.peano-framework.org
5//
6// This is generated. If you change fundamental properties, you will have to
7// generate this file. Backup your manual changes before you do so.
8//
9#pragma once
10
14
15
16#include "AbstractElasticSolver.h"
17#include "VariableShortcuts.h"
18#include "tarch/logging/Log.h"
19
20#define _CUSTOM_COORDINATES
21#define ASAGI_NOMPI
22#define ISOTROPIC
23#define _TOP 1
24
25#include "../ExaSeis_core/Context/ContextCurvilinearPML.h"
26#include "../ExaSeis_core/Numerics/routines_curvilinear.h"
27#include "../ExaSeis_core/Numerics/pml.h"
28#include "../ExaSeis_core/Refinement/refinement.h"
29
30namespace exahype2 {
31 namespace elastic {
32
33 class ElasticSolver;
34 class VariableShortcutsExpanded;
35
36 } // namespace elastic
37} // namespace exahype2
38
39class exahype2::elastic::VariableShortcutsExpanded: public ::exahype2::elastic::VariableShortcuts {
40public:
41 static constexpr int NumberOfUnknowns = AbstractElasticSolver::NumberOfUnknowns;
42 static constexpr int NumberOfAuxiliaryVariables = AbstractElasticSolver::NumberOfAuxiliaryVariables;
43 static constexpr int Size = NumberOfUnknowns + NumberOfAuxiliaryVariables;
44};
45
46class exahype2::elastic::ElasticSolver: public AbstractElasticSolver {
47private:
49
51
53 std::vector<Refinement::RefinementCriterion<VariableShortcutsExpanded>*> refinementCriteria;
54 int pml_cell_width;
55 double pml_alpha_const;
56 double pml_alpha_scalar;
57 double pml_rel_error;
58 int pml_power;
59
60public:
62 double* QuadraturePoints1d = kernels::ElasticSolver::Quadrature<double>::nodes;
84 const double* __restrict__ Q, // Q[36+19]
87 double t
88 ) override;
89
91 double* __restrict__ Q, // Q[36+19]
94 bool gridIsConstructed
95 ) override;
96
98 const double* __restrict__ Qinside, // Qinside[36+19]
99 double* __restrict__ Qoutside, // Qoutside[36+19]
102 double t,
103 int normal
104 ) final override;
105
106 void riemannSolver(
107 double* const FL, // FL[36
108 double* const FR, // FR[36
109 const double* const QL, // QL[36+19]
110 const double* const QR, // QR[36+19]
111 const double t,
112 const double dt,
115 const int direction,
116 bool isBoundaryFace,
117 int faceIndex
118 ) final override;
119
120 double maxEigenvalue(
121 const double* __restrict__ Q,
124 double t,
125 double dt,
126 int normal
127 ) override;
128
129 void flux(
130 const double* __restrict__ Q, // Q[36+19]
133 double t,
134 double dt,
135 int normal,
136 double* __restrict__ F // F[36]
137 ) override;
138
140 const double* __restrict__ Q,
141 const double* __restrict__ deltaQ,
144 double t,
145 double dt,
146 int normal,
147 double* __restrict__ BgradQ
148 ) override;
149
150 void algebraicSource(
151 const double* const Q,
154 double t,
155 double dt,
156 double* S
157 ) override;
158
160 const double* const Q,
163 double t,
164 double dt,
165 int normal,
166 double* const rhs
167 ) override;
168
169 void pointSource(
170 const double* const Q, const double* const x, const double t, const double dt, double* const forceVector, int n
171 ) override;
172
173 void initPointSourceLocations(double sourceLocation[NumberOfPointSources][Dimensions]) override;
174};
175
177
{{NAMESPACE|join("::")}}::VariableShortcuts VariableShortcuts
ContextCurvilinear< VariableShortcutsExpanded, Order+1 > * context
::exahype2::RefinementCommand refinementCriterion(const double *__restrict__ Q, const tarch::la::Vector< Dimensions, double > &x, const tarch::la::Vector< Dimensions, double > &h, double t) override
Refinement criterion.
void flux(const double *__restrict__ Q, const tarch::la::Vector< Dimensions, double > &volumeX, const tarch::la::Vector< Dimensions, double > &volumeH, double t, double dt, int normal, double *__restrict__ F) override
void boundaryConditions(const double *__restrict__ Qinside, double *__restrict__ Qoutside, const tarch::la::Vector< Dimensions, double > &faceCentre, const tarch::la::Vector< Dimensions, double > &volumeH, double t, int normal) final override
void initialCondition(double *__restrict__ Q, const tarch::la::Vector< Dimensions, double > &x, const tarch::la::Vector< Dimensions, double > &h, bool gridIsConstructed) override
std::vector< Refinement::RefinementCriterion< VariableShortcutsExpanded > * > refinementCriteria
void multiplyMaterialParameterMatrix(const double *const Q, const tarch::la::Vector< Dimensions, double > &volumeX, const tarch::la::Vector< Dimensions, double > &volumeH, double t, double dt, int normal, double *const rhs) override
void riemannSolver(double *const FL, double *const FR, const double *const QL, const double *const QR, const double t, const double dt, const tarch::la::Vector< Dimensions, double > &x, const tarch::la::Vector< Dimensions, double > &h, const int direction, bool isBoundaryFace, int faceIndex) final override
static tarch::logging::Log _log
void pointSource(const double *const Q, const double *const x, const double t, const double dt, double *const forceVector, int n) override
void initPointSourceLocations(double sourceLocation[NumberOfPointSources][Dimensions]) override
void nonconservativeProduct(const double *__restrict__ Q, const double *__restrict__ deltaQ, const tarch::la::Vector< Dimensions, double > &faceCentre, const tarch::la::Vector< Dimensions, double > &volumeH, double t, double dt, int normal, double *__restrict__ BgradQ) override
double maxEigenvalue(const double *__restrict__ Q, const tarch::la::Vector< Dimensions, double > &volumeX, const tarch::la::Vector< Dimensions, double > &volumeH, double t, double dt, int normal) override
Log Device.
Definition Log.h:517
This file is part of the ExaHyPE 2 project within Peano 4.
Definition __init__.py:1
Simple vector class.
Definition Vector.h:159