Peano
Loading...
Searching...
No Matches
elastic_planar_waves.py
Go to the documentation of this file.
1# This file is part of the ExaHyPE2 project. For conditions of distribution and
2# use, please see the copyright notice at www.peano-framework.org
3from .scenario import Scenario
4
5import os
6import sys
7
8sys.path.insert(0, os.path.abspath("../equations"))
9from equations import Elastic
10
11
13 _plot_dt = 0.0
14 _offset = -1.0
15 _domain_size = 2.0
16 _periodic_bc = True
17
18 def __init__(self, dimensions, iterations=2):
19 self._dimensions_dimensions = dimensions
20 self._end_time_end_time = iterations
21 self._equation_equation = Elastic(dimensions)
22
24 return """
25 //Lamé parameters
26 constexpr double mu = 4.0;
27 constexpr double lambda = -4.0;
28
29 //Constant auxiliary parameters
30 constexpr double rho = 1.0;
31 constexpr double cp = 2.0;
32 constexpr double cs = 2.0;
33
34 const double val_x = cos( -std::numbers::pi*x[0]);
35 const double val_y = cos( -std::numbers::pi*x[1]);
36""" + (
37 """
38 const double val_z = cos( -std::numbers::pi*x[2]);
39
40 //stresses
41 Q[3] = val_x*(lambda+2*mu) + val_y*lambda + val_z*lambda; //xx
42 Q[4] = val_x*lambda + val_y*(lambda+2*mu) + val_z*lambda; //yy
43 Q[5] = val_x*lambda + val_y*lambda + val_z*(lambda+2*mu); //zz
44 Q[6] = val_x*mu; //xy
45 Q[7] = val_z*mu; //xz
46 Q[8] = val_y*mu; //yz
47
48 //velocities
49 Q[0] = val_x*cp + val_z*cs; //vx
50 Q[1] = val_y*cp + val_x*cs; //vy
51 Q[2] = val_z*cp + val_y*cs; //vz
52
53 //auxiliary variables
54 Q[9] = rho; //rho
55 Q[10] = cp; //cp
56 Q[11] = cs; //cs
57"""
58 if self._dimensions_dimensions == 3
59 else """
60
61 //stresses
62 Q[2] = val_x*(lambda+2*mu) + val_y*lambda; //xx
63 Q[3] = val_x*lambda + val_y*(lambda+2*mu); //yy
64 Q[4] = val_x*mu + val_y*mu; //xy
65
66 //velocities
67 Q[0] = val_x*cp + val_y*cs; //vx
68 Q[1] = val_y*cp + val_x*cs; //vy
69
70 //auxiliary variables
71 Q[5] = rho; //rho
72 Q[6] = cp; //cp
73 Q[7] = cs; //cs
74"""
75 )
76
78 return """
79 //Lamé parameters
80 constexpr double mu = 4.0;
81 constexpr double lambda = -4.0;
82
83 //Constant auxiliary parameters
84 constexpr double rho = 1.0;
85 constexpr double cp = 2.0;
86 constexpr double cs = 2.0;
87
88 constexpr double w = -2*M_PI;
89
90 const double val_x = cos( w*t -std::numbers::pi*x[0]);
91 const double val_y = cos( w*t -std::numbers::pi*x[1]);
92""" + (
93 """
94 const double val_z = cos( -std::numbers::pi*x[2]);
95
96 //stresses
97 solution[3] = val_x*(lambda+2*mu) + val_y*lambda + val_z*lambda; //xx
98 solution[4] = val_x*lambda + val_y*(lambda+2*mu) + val_z*lambda; //yy
99 solution[5] = val_x*lambda + val_y*lambda + val_z*(lambda+2*mu); //zz
100 solution[6] = val_x*mu; //xy
101 solution[7] = val_z*mu; //xz
102 solution[8] = val_y*mu; //yz
103
104 //velocities
105 solution[0] = val_x*cp + val_z*cs; //vx
106 solution[1] = val_y*cp + val_x*cs; //vy
107 solution[2] = val_z*cp + val_y*cs; //vz
108"""
109 if self._dimensions_dimensions == 3
110 else """
111
112 //stresses
113 solution[2] = val_x*(lambda+2*mu) + val_y*lambda; //xx
114 solution[3] = val_x*lambda + val_y*(lambda+2*mu); //yy
115 solution[4] = val_x*mu + val_y*mu; //xy
116
117 //velocities
118 solution[0] = val_x*cp + val_y*cs; //vx
119 solution[1] = val_y*cp + val_x*cs; //vy
120"""
121 )