Makes not-honoring technique.
Mechanical properties given node by node.
27
28 real*8, intent(out) :: rho, lambda, mu, gamma, qs, qp
29 real*8, intent(in) :: xs, ys, zs, depth, zs_all
30 real*8 :: ni, vs, vp, xabs, yabs
31 real*8, dimension(1) :: val1
32
33
34
35
36 rho = 2600.d0;
37 lambda = rho * (4000.d0**2.d0 - 2.d0*2200.d0**2.d0);
38 mu = rho * 2200.d0**2.d0;
39 qs = 400.d0;
40 qp = 680.d0;
41 gamma = 4.d0*datan(1.d0)*5.d0/qs;
42
43
44
45
46
47 xabs = min((xs - 13000.d0), (66100.d0 - xs));
48 yabs = min((ys - 23000.d0), (68900.d0 - ys));
49
50
51
52
53 if ((depth .ge. 0.0d0) .and. (zs_all .ge. 0.0d0)) then
54
55
56
57 if ((xabs .le. 900.d0) .or. (yabs .le. 900.d0) .or. (depth .gt. 300.0d0)) then
58 return
59 endif
60
61 if ((depth .ge. 0.0d0) .and. (depth .le. 50.0d0)) then
62
63 vs = 500.d0;
64 vp = 1900.d0;
65 rho = 1800.d0;
66 lambda = rho * (vp**2.d0 - 2.d0*vs**2.d0);
67 mu = rho * vs**2.d0;
68 qs = 100.d0;
69 qp = 170.d0
70 gamma = 4.d0*datan(1.d0)*5.d0/qs;
71
72 elseif ((depth .gt. 50.0d0) .and. (depth .le. 150.0d0)) then
73
74 vs = 900.d0;
75 vp = 2400.d0;
76 rho = 2100.d0;
77 lambda = rho * (vp**2.d0 - 2.d0*vs**2.d0);
78 mu = rho * vs**2.d0;
79 qs = 180.d0;
80 qp = 306.d0
81 gamma = 4.d0*datan(1.d0)*5.d0/qs;
82
83 elseif ((depth .gt. 150.0d0) .and. (depth .le. 300.0d0)) then
84
85 vs = 1500.d0;
86 vp = 3400.d0;
87 rho = 2500.d0;
88 lambda = rho * (vp**2.d0 - 2.d0*vs**2.d0);
89 mu = rho * vs**2.d0;
90 qs = 300.d0;
91 qp = 510.d0
92 gamma = 4.d0*datan(1.d0)*5.d0/qs;
93 endif
94
95 endif
96