34
35
36
37
38#include "implicit_f.inc"
39
40
41
42#include "mvsiz_p.inc"
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69 INTEGER NEL, NUVAR,NPRONY
70 INTEGER ,INTENT(IN) :: NVAR_DAMP
72 . timestep,kv,gi(nprony),beta(nprony),
73 . rho0(nel), epspxx(nel),epspyy(nel),
74 . epspxy(nel),epspyz(nel),epspzx(nel)
75
76
77
79 . sigvxx(nel),sigvyy(nel),
80 . sigvxy(nel),sigvyz(nel),sigvzx(nel),
81 . soundsp(nel)
82
83
84
86 . uvar(nel,nuvar), off(nel),thk(nel)
87
88
89
90 INTEGER :: I,J,II
91 my_real :: g,dav,epxx,epyy,epzz,p,
92 . aa(mvsiz,nprony),bb(mvsiz,nprony),h0(6),epspzz(mvsiz),
93 . h(6,nprony),s(6),a1(mvsiz),a2(mvsiz),fac
94
95
96
97 g = zero
98
99 DO j=1,nprony
100 g = g + gi(j)
101 ENDDO
102 DO i=1,nel
103 a1(i) = zero
104 a2(i) = zero
105 epspzz(i) = zero
106
107 DO j=1,nprony
108 ii = (j-1)*(nuvar-nvar_damp)/nprony
109 aa(i,j) = exp(-beta(j)*timestep)
110 bb(i,j) = timestep*gi(j)*exp(-half*beta(j)*timestep)
111
112
113
114 h0(3) = uvar(i, (j - 1)*6 + 3)
115 a1(i) = a1(i) + aa(i,j)*h0(3)
116 a2(i) = a2(i) + bb(i,j)
117 ENDDO
118 ENDDO
119
120
121
122 DO i=1,nel
123 fac = one/
max(em20,two_third*a2(i) + kv)
124 epspzz(i) = -a1(i) + (third*a2(i)-kv)*(epspxx(i) + epspyy(i))
125 epspzz(i)= fac*epspzz(i)
126 ENDDO
127
128 DO i=1,nel
129
130 dav = third*(epspxx(i) + epspyy(i) + epspzz(i))
131 p = -three*kv*dav
132
133 epxx = epspxx(i) - dav
134 epyy = epspyy(i) - dav
135 epzz = epspzz(i) - dav
136
137 DO j= 1,nprony
138 ii = (j-1)*(nuvar-nvar_damp)/nprony
139
140 h0(1) = uvar(i, (j - 1)*6 + 1)
141 h0(2) = uvar(i, (j - 1)*6 + 2)
142 h0(3) = uvar(i, (j - 1)*6 + 3)
143 h0(4) = uvar(i, (j - 1)*6 + 4)
144 h0(5) = uvar(i, (j - 1)*6 + 5)
145 h0(6) = uvar(i, (j - 1)*6 + 6)
146
147
148 h(1,j) = aa(i,j)*h0(1) + bb(i,j)*epxx
149 h(2,j) = aa(i,j)*h0(2) + bb(i,j)*epyy
150 h(3,j) = aa(i,j)*h0(3) + bb(i,j)*epzz
151 h(4,j) = aa(i,j)*h0(4) + half*bb(i,j)*epspxy(i)
152 h(5,j) = aa(i,j)*h0(5) + half*bb(i,j)*epspyz(i)
153 h(6,j) = aa(i,j)*h0(6) + half*bb(i,j)*epspzx(i)
154
155 uvar(i, (j - 1)*6 + 1) = h(1,j)
156 uvar(i, (j - 1)*6 + 2) = h(2,j)
157 uvar(i, (j - 1)*6 + 3) = h(3,j)
158 uvar(i, (j - 1)*6 + 4) = h(4,j)
159 uvar(i, (j - 1)*6 + 5) = h(5,j)
160 uvar(i, (j - 1)*6 + 6) = h(6,j)
161
162 ENDDO
163
164
165
166
167 s(1:6) = zero
168
169 DO j= 1,nprony
170 s(1) = s(1) + h(1,j)
171 s(2) = s(2) + h(2,j)
172
173 s(4) = s(4) + h(4,j)
174 s(5) = s(5) + h(5,j)
175 s(6) = s(6) + h(6,j)
176 ENDDO
177
178 sigvxx(i) = s(1) - p
179 sigvyy(i) = s(2) - p
180
181 sigvxy(i) = s(4)
182 sigvyz(i) = s(5)
183 sigvzx(i) = s(6)
184
185 ENDDO
186
187 DO i=1,nel
188 sigvxx(i) = sigvxx(i)*off(i)
189 sigvyy(i) = sigvyy(i)*off(i)
190 sigvxy(i) = sigvxy(i)*off(i)
191 sigvyz(i) = sigvyz(i)*off(i)
192 sigvzx(i) = sigvzx(i)*off(i)
193
194 soundsp(i) = sqrt(soundsp(i)**2 + g/rho0(i))
195 ENDDO
196 RETURN