SPEED
MAKE_MECH_PROP_CASE_046.f90
Go to the documentation of this file.
1! Copyright (C) 2012 The SPEED FOUNDATION
2! Author: Ilario Mazzieri
3!
4! This file is part of SPEED.
5!
6! SPEED is free software; you can redistribute it and/or modify it
7! under the terms of the GNU Affero General Public License as
8! published by the Free Software Foundation, either version 3 of the
9! License, or (at your option) any later version.
10!
11! SPEED is distributed in the hope that it will be useful, but
12! WITHOUT ANY WARRANTY; without even the implied warranty of
13! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14! Affero General Public License for more details.
15!
16! You should have received a copy of the GNU Affero General Public License
17! along with SPEED. If not, see <http://www.gnu.org/licenses/>.
18
19
21! Kumamoto 1D velocity model by Kobayashi et al 2017
22! There is no interface for basin. Topography layer is just translated to a
23! depth depending on thickness of first 4 layers in 1D velocity model
24
25 subroutine make_mech_prop_case_046(rho, lambda, mu, gamma, qs, qp, &
26 xs, ys, zs, Depth, zs_all)
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
97 end subroutine make_mech_prop_case_046
subroutine make_mech_prop_case_046(rho, lambda, mu, gamma, qs, qp, xs, ys, zs, depth, zs_all)
Makes not-honoring technique.