SPEED
MAKE_MECH_PROP_CASE_046.f90 File Reference

Go to the source code of this file.

Functions/Subroutines

subroutine make_mech_prop_case_046 (rho, lambda, mu, gamma, qs, qp, xs, ys, zs, depth, zs_all)
 Makes not-honoring technique.
 

Function/Subroutine Documentation

◆ make_mech_prop_case_046()

subroutine make_mech_prop_case_046 ( real*8, intent(out)  rho,
real*8, intent(out)  lambda,
real*8, intent(out)  mu,
real*8, intent(out)  gamma,
real*8, intent(out)  qs,
real*8, intent(out)  qp,
real*8, intent(in)  xs,
real*8, intent(in)  ys,
real*8, intent(in)  zs,
real*8, intent(in)  depth,
real*8, intent(in)  zs_all 
)

Makes not-honoring technique.

Mechanical properties given node by node.

Definition at line 25 of file MAKE_MECH_PROP_CASE_046.f90.

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 ! Properties of bottom most velocity layer in this block
34 ! Also Same properties are used near absorbing boundaries
35 ! as poisson's ratio of top 3 layers is high
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 ! Checking if node falls near Absorbing Boundaries,
45 ! element size ~ 50m @ top. So buffer to Absorbing boundary is
46 ! 18 elements (900m ~ 450m*2 larger elements at bottom)
47 xabs = min((xs - 13000.d0), (66100.d0 - xs));
48 yabs = min((ys - 23000.d0), (68900.d0 - ys));
49
50
51 ! Material properties of top 3 layers are assigned based on
52 ! depth of node from topography surface.
53 if ((depth .ge. 0.0d0) .and. (zs_all .ge. 0.0d0)) then
54 ! Node lies between topography surface (XYZ.out) and
55 ! bottom surface (basin surface / ALL.out)
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 !Depth from Topography Surface <= 50m
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 !Depth from Topography Surface 50m to 150m
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 !Depth from Topography Surface 150m to 300m
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

Referenced by make_eltensor_for_cases().

Here is the caller graph for this function: