40
41
42
43#include "implicit_f.inc"
44
45
46
47 INTEGER :: NEL,NUPARAM, NUVAR
51 . rho0 ,
52 . epspxx, epspyy,epspxy, epspyz, epspzx,
53 . depsxx, depsyy, depsxy, depsyz, depszx,
54 . epsxx , epsyy , epsxy , epsyz , epszx,
55 . sigoxx, sigoyy,sigoxy, sigoyz, sigozx,
56 . gs ,thkly , thk
57
58
59
60 my_real ,
DIMENSION(NEL) ,
INTENT(OUT) :: soundsp,
61 . signxx,signyy,signxy,signyz,signzx
62
63
64
65 my_real :: uvar(nel,nuvar), off(nel)
66
67
68
69 INTEGER NPF(*), NFUNC, IFUNC(NFUNC)
71 . finter,tf(*)
72 EXTERNAL finter
73
74
75
76
77
78
79 INTEGER :: I, IFORM
80 my_real :: bulk,bulk3,g_ins,g_inf,ge,ge2,gv,gv2,c1,c2,beta,
81 . aa, bb, dav, p, trace, h0(6),h(6),
alpha,dp_drho,cc2
83 . depsm,depszz, signzz, sigozz, depsdxx,depsdyy,depsdzz, dp,
84 . dexx,deyy,dezz,dexy,deyz,dezx,ddexx,ddeyy,ddezz,ddexy,ddeyz,
85 . ddezx,depsdxy,depsdyz,depsdzx,epspm,
86 . depsvxx,depsvyy,depsvzz,depsvxy,depsvyz,depsvzx,em,epsm ,epszz,
87 . epspzz
88
89 bulk = uparam(1)
90 g_ins = uparam(2)
91 g_inf = uparam(3)
92 beta = uparam(4)
93
94 ge = g_inf
95 gv = g_ins-g_inf
96 ge2 = ge * two
97 gv2 = gv * two
98 c1 = one - exp(-beta*timestep)
99 c2 =-c1 / beta
100 bulk3 = bulk*three
101 cc2 = gv2*(c1 + c2/
max(em20,timestep))
102
103 DO i=1,nel
104
105
106
107 dezz(i) = uvar(i,7)
108 h(3) = uvar(i,3)
109 aa = gv2*c1*(dezz(i) - h(3)) + third*(ge2 - cc2 - bulk3)*(depsxx(i) + depsyy(i))
110 bb = two_third*ge2 + bulk - two_third*cc2
111 depszz(i) = aa/bb
112 ddezz(i) = two_third*depszz(i) - third*(depsxx(i) + depsyy(i))
113 dezz(i) = uvar(i,7) + ddezz(i)
114 epszz(i) = three_half*dezz(i) + half*(epsxx(i)+ epsyy(i))
115 epspzz(i) = depszz(i)/
max(em20,timestep)
116
117 depsm(i) = third *(depsxx(i)+depsyy(i)+depszz(i))
118 epspm(i) = third *(epspxx(i)+epspyy(i)+epspzz(i))
119 em(i) = third *(epsxx(i) +epsyy(i) +epszz(i) )
120 uvar(i,7) = dezz(i)
121
122 thk(i) = thk(i) + depszz(i)*thkly(i)*off(i)
123 END DO
124
125
126
127 DO i=1,nel
128 dexx(i) = epsxx(i)-em(i)
129 deyy(i) = epsyy(i)-em(i)
130 dezz(i) = epszz(i)-em(i)
131 dexy(i) = epsxy(i)
132 deyz(i) = epsyz(i)
133 dezx(i) = epszx(i)
134
135 ddexx(i) = depsxx(i)-depsm(i)
136 ddeyy(i) = depsyy(i)-depsm(i)
137 ddezz(i) = depszz(i)-depsm(i)
138 ddexy(i) = depsxy(i)
139 ddeyz(i) = depsyz(i)
140 ddezx(i) = depszx(i)
141
142 depsdxx(i) = epspxx(i)-epspm(i)
143 depsdyy(i) = epspyy(i)-epspm(i)
144 depsdzz(i) = epspzz(i)-epspm(i)
145 depsdxy(i) = epspxy(i)
146 depsdyz(i) = epspyz(i)
147 depsdzx(i) = epspzx(i)
148 END DO
149
150 DO i=1,nel
151 depsvxx(i) = c1*(dexx(i)-uvar(i,1)) + c2*depsdxx(i)
152 depsvyy(i) = c1*(deyy(i)-uvar(i,2)) + c2*depsdyy(i)
153 depsvzz(i) = c1*(dezz(i)-uvar(i,3)) + c2*depsdzz(i)
154 depsvxy(i) = c1*(dexy(i)-uvar(i,4)) + c2*depsdxy(i)
155 depsvyz(i) = c1*(deyz(i)-uvar(i,5)) + c2*depsdyz(i)
156 depsvzx(i) = c1*(dezx(i)-uvar(i,6)) + c2*depsdzx(i)
157 END DO
158
159 dp(1:nel) = bulk3 * depsm(1:nel)
160
161 DO i=1,nel
162 signxx(i) = sigoxx(i) + ge2*ddexx(i) - gv2*depsvxx(i) + dp(i)
163 signyy(i) = sigoyy(i) + ge2*ddeyy(i) - gv2*depsvyy(i) + dp(i)
164
165 signxy(i) = sigoxy(i) + ge *ddexy(i) - gv *depsvxy(i)
166 signyz(i) = sigoyz(i) + ge *ddeyz(i) - gv *depsvyz(i)
167 signzx(i) = sigozx(i) + ge *ddezx(i) - gv *depsvzx(i)
168 END DO
169
170 dp_drho = four_over_3*g_ins + bulk
171 soundsp(1:nel) = sqrt(dp_drho / rho0(1:nel))
172
173 DO i=1,nel
174 uvar(i,1) = uvar(i,1) + depsvxx(i) + ddexx(i)
175 uvar(i,2) = uvar(i,2) + depsvyy(i) + ddeyy(i)
176 uvar(i,3) = uvar(i,3) + depsvzz(i) + ddezz(i)
177 uvar(i,4) = uvar(i,4) + depsvxy(i) + ddexy(i)
178 uvar(i,5) = uvar(i,5) + depsvyz(i) + ddeyz(i)
179 uvar(i,6) = uvar(i,6) + depsvzx(i) + ddezx(i)
180 END DO
181
182
183
184 RETURN