Peano
Loading...
Searching...
No Matches
Elastic.py
Go to the documentation of this file.
1
2
3def initial():
4 return """
5
6 //stresses
7 Q[3+0] = 0.0; //xx
8 Q[3+1] = 0.0; //yy
9 Q[3+2] = 0.0; //zz
10 Q[3+3] = 0.0; //xy
11 Q[3+4] = 0.0; //xz
12 Q[3+5] = 0.0; //yz
13
14 // LOH1
15 bool layerWidth = 1.0;
16 bool upperLayer = x(2) <= layerWidth;
17
18 // HHS
19 // bool upperLayer = false;
20
21 Q[ 0 + 0 ] = 0.0;
22 Q[ 0 + 1 ] = Q[ 0 + 0 ];
23 Q[ 0 + 2 ] = Q[ 0 + 1 ];
24
25 //auxiliary variables
26 Q[9] = upperLayer ? 2.6 : 2.7;
27 Q[10] = upperLayer ? 4.0 : 6.0;
28 Q[11] = upperLayer ? 2.0 : 3.464;
29"""
30
31
33 return """
34 switch(normal){
35 case 0:
36 Qoutside[3+0] = 0.; //xx
37 Qoutside[3+3] = 0.; //xy
38 Qoutside[3+4] = 0.; //xz
39 Qoutside[0+0] = 0.;
40 Qoutside[0+1] = 0.;
41 Qoutside[0+2] = 0.;
42 break;
43 case 1:
44 Qoutside[3+1] = 0.; //yy
45 Qoutside[3+3] = 0.; //xy
46 Qoutside[3+5] = 0.; //yz
47 Qoutside[0+0] = 0.;
48 Qoutside[0+1] = 0.;
49 Qoutside[0+2] = 0.;
50 break;
51 case 2:
52 // free surface boundary condition
53 Qoutside[3+2] = -Qinside[3+2]; //zz
54 Qoutside[3+4] = -Qinside[3+4]; //xz
55 Qoutside[3+5] = -Qinside[3+5]; //yz
56 Qoutside[0+0] = Qinside[0+0];
57 Qoutside[0+1] = Qinside[0+1];
58 Qoutside[0+2] = Qinside[0+2];
59 }
60
61 //auxiliary variables
62 Qoutside[9] = Qinside[9];
63 Qoutside[10] = Qinside[10];
64 Qoutside[11] = Qinside[11];
65
66"""
67
69 return """
70 return std::max(std::abs(Q[10]), std::abs(Q[11]));
71"""
72
73def flux():
74 return """
75 //Lamé parameters
76 double mu(Q[9] * Q[11] * Q[11]); //rho*cs^2
77 double lambda(Q[9] * Q[10] * Q[10] - 2.0 * mu); //rho*cp^2 - 2 mu
78 double neg_irho(-1.0/Q[9]);
79
80 switch(normal) {
81 case 0:
82 F[0+0] = neg_irho*Q[3+0]; //sigma_xx
83 F[0+1] = neg_irho*Q[3+3]; //sigma_xy
84 F[0+2] = neg_irho*Q[3+4]; //sigma_xz
85 F[3+0] = -(lambda + 2*mu) * Q[0+0]; //xx
86 F[3+1] = -lambda * Q[0+0]; //yy
87 F[3+2] = -lambda * Q[0+0]; //zz
88 F[3+3] = -mu * Q[0+1]; //xy
89 F[3+4] = -mu * Q[0+2]; //xz
90 F[3+5] = 0.0; //yz
91 break;
92 case 1:
93 F[0+0] = neg_irho*Q[3+3]; //sigma_xy
94 F[0+1] = neg_irho*Q[3+1]; //sigma_yy
95 F[0+2] = neg_irho*Q[3+5]; //sigma_yz
96 F[3+0] = -lambda * Q[0+1]; //xx
97 F[3+1] = -(lambda + 2*mu) * Q[0+1]; //yy
98 F[3+2] = - lambda * Q[0+1]; //zz
99 F[3+3] = -mu * Q[0+0]; //xy
100 F[3+4] = 0.0; //xz
101 F[3+5] = -mu * Q[0+2]; //yz
102 break;
103 case 2:
104 F[0+0] = neg_irho*Q[3+4]; //sigma_xz
105 F[0+1] = neg_irho*Q[3+5]; //sigma_yz
106 F[0+2] = neg_irho*Q[3+2]; //sigma_zz
107 F[3+0] = -lambda * Q[0+2]; //xx
108 F[3+1] = -lambda * Q[0+2]; //yy
109 F[3+2] = -(lambda + 2*mu) * Q[0+2]; //zz
110 F[3+3] = 0.0; //xy
111 F[3+4] = -mu * Q[0+0]; //xz
112 F[3+5] = -mu * Q[0+1]; //yz
113 }
114"""
eigenvalue()
Definition Elastic.py:68
initial()
Definition Elastic.py:3
boundary()
Definition Elastic.py:32
flux()
Definition Elastic.py:73