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
70
71 INTEGER NEL ,NPRONY,IGTYP
73 . time,timestep,kv,gv(nprony),beta(nprony),
74 . rho0(*),epspxx(*),epspyy(*),
75 . epspxy(*),epspyz(*),epspzx(*),sigv(nel,5),dir(nel,2)
76
77
78
80 . sigvxx(*),sigvyy(*),
81 . sigvxy(*),sigvyz(*),sigvzx(*),
82 . soundsp(*)
83
84
85
87 . vari(nel,*) , off(*)
88
89
90
91
92
93
94
95
96
97
98
99
100
101 integer
102 . i,j,ii,ll
104 . cc,g1,dav,epxx(mvsiz),epyy(mvsiz),epzz(mvsiz),svxx,
105 . svyy,svzz,p(mvsiz),
106 . aa(mvsiz,nprony),bb(mvsiz,nprony),h0(6),epspzz(mvsiz),
107 . h(mvsiz,6,nprony),s(mvsiz,6),a1(mvsiz),a2(mvsiz),fac,h01,h02,h03,h04,
108 . h05,h06
109
110
111
112
113
114
115
116 g1 = zero
117 DO i=1,nprony
118 g1 = g1 + gv(i)
119 ENDDO
120
121 a1(1:nel) = zero
122 a2(1:nel) = zero
123 epspzz(1:nel) = zero
124
125 DO j=1,nprony
126 DO i= 1,nel
127 aa(i,j)= exp(-beta(j)*timestep)
128 bb(i,j)=timestep*gv(j)*exp(-half*beta(j)*timestep)
129
130
131
132 h03 = vari(i, (j - 1)*6 + 3)
133 a1(i) = a1(i) + aa(i,j)*h03
134 a2(i) = a2(i) + bb(i,j)
135 ENDDO
136 ENDDO
137
138
139
140 DO i= 1,nel
141 fac = one/
max(em20,two_third*a2(i) + kv)
142 epspzz(i) = -a1(i)+(third*a2(i)-kv)*(epspxx(i)+epspyy(i))
143 epspzz(i)= fac*epspzz(i)
144 ENDDO
145
146 DO i= 1,nel
147
148 dav = third*(epspxx(i) + epspyy(i) + epspzz(i))
149 p(i) = -three*kv*dav
150
151 epxx(i) = epspxx(i) - dav
152 epyy(i) = epspyy(i) - dav
153 epzz(i) = epspzz(i) - dav
154 ENDDO
155
156 DO j= 1,nprony
157 DO i=1,nel
158
159 h01 = vari(i, (j - 1)*6 + 1)
160 h02 = vari(i, (j - 1)*6 + 2)
161 h03 = vari(i, (j - 1)*6 + 3)
162 h04 = vari(i, (j - 1)*6 + 4)
163 h05 = vari(i, (j - 1)*6 + 5)
164 h06 = vari(i, (j - 1)*6 + 6)
165
166
167 h(i,1,j) = aa(i,j)*h01 + bb(i,j)*epxx(i)
168 h(i,2,j) = aa(i,j)*h02 + bb(i,j)*epyy(i)
169 h(i,3,j) = aa(i,j)*h03 + bb(i,j)*epzz(i)
170 h(i,4,j) = aa(i,j)*h04 + half*bb(i,j)*epspxy(i)
171 h(i,5,j) = aa(i,j)*h05 + half*bb(i,j)*epspyz(i)
172 h(i,6,j) = aa(i,j)*h06 + half*bb(i,j)*epspzx(i)
173
174
175 vari(i, (j - 1)*6 + 1) = h(i,1,j)
176 vari(i, (j - 1)*6 + 2) = h(i,2,j)
177 vari(i, (j - 1)*6 + 3) = h(i,3,j)
178 vari(i, (j - 1)*6 + 4) = h(i,4,j)
179 vari(i, (j - 1)*6 + 5) = h(i,5,j)
180 vari(i, (j - 1)*6 + 6) = h(i,6,j)
181 ENDDO
182 ENDDO
183
184
185
186
187 DO ii = 1,6
188 s(1:mvsiz,ii) = zero
189 ENDDO
190
191 DO j= 1,nprony
192 DO i=1,nel
193 s(i,1) = s(i,1) + h(i,1,j)
194 s(i,2) = s(i,2) + h(i,2,j)
195
196 s(i,4) = s(i,4) + h(i,4,j)
197 s(i,5) = s(i,5) + h(i,5,j)
198 s(i,6) = s(i,6) + h(i,6,j)
199 ENDDO
200 ENDDO
201 DO i=1,nel
202 sigvxx(i) = s(i,1) - p(i)
203 sigvyy(i) = s(i,2) - p(i)
204 sigvxy(i) = s(i,4)
205 sigvyz(i) = s(i,5)
206 sigvzx(i) = s(i,6)
207 ENDDO
208
209 DO i=1,nel
210 sigvxx(i) = sigvxx(i)*off(i)
211 sigvyy(i) = sigvyy(i)*off(i)
212 sigvxy(i) = sigvxy(i)*off(i)
213 sigvyz(i) = sigvyz(i)*off(i)
214 sigvzx(i) = sigvzx(i)*off(i)
215
216 sigv(i,1) = sigvxx(i)
217 sigv(i,2) = sigvyy(i)
218 sigv(i,3) = sigvxy(i)
219 sigv(i,4) = sigvyz(i)
220 sigv(i,5) = sigvzx(i)
221
222 soundsp(i) = sqrt(soundsp(i)**2 + g1/rho0(i))
223 ENDDO
224
225
226 ll = 1
228
229 DO i=1,nel
230 sigvxx(i) = sigv(i,1)
231 sigvyy(i) = sigv(i,2)
232 sigvxy(i) = sigv(i,3)
233 sigvyz(i) = sigv(i,4)
234 sigvzx(i) = sigv(i,5)
235 ENDDO
236
237 RETURN
subroutine roto_sig(jft, jlt, sig, dir, nel)