42
43
44
46
47
48
49#include "implicit_f.inc"
50#include "mvsiz_p.inc"
51#include "param_c.inc"
52#include "scr06_c.inc"
53#include "scr14_c.inc"
54#include "com01_c.inc"
55
56
57
58 INTEGER NEL, NUPARAM, NUVAR,MAT(NEL),NGL(NEL),IPM(NPROPMI,*),IPT
59 my_real time,timestep,uparam(*),
60 . rho(nel),rho0(nel),volume(nel),eint(nel),
61 . epspxx(nel),epspyy(nel),epspzz(nel),
62 . epspxy(nel),epspyz(nel),epspzx(nel),
63 . depsxx(nel),depsyy(nel),depszz(nel),
64 . depsxy(nel),depsyz(nel),depszx(nel),
65 . sigoxx(nel),sigoyy(nel),sigozz(nel),
66 . sigoxy(nel),sigoyz(nel),sigozx(nel),
67 . deltax(nel),aire(nel)
68
69
70
72 . signxx(nel),signyy(nel),signzz(nel),
73 . signxy(nel),signyz(nel),signzx(nel),
74 . sigvxx(nel),sigvyy(nel),sigvzz(nel),
75 . sigvxy(nel),sigvyz(nel),sigvzx(nel),
76 . soundsp(nel),viscmax(nel)
77
78
79
80 my_real uvar(nel,nuvar), off(nel),wxx(nel),wyy(nel),wzz(nel)
81
82
83
84 INTEGER MTN
85
86
87
88 INTEGER I,J,ISGS,IADBUF,K
90 . vis,c1,smag2,
91 . dav(mvsiz),dxx(mvsiz),dyy(mvsiz),dzz(mvsiz),
92 . dxy(mvsiz),dyz(mvsiz),dzx(mvsiz),ss(mvsiz),
93 . ca,vis2(mvsiz),vis2n,viscpression,
94 . vis1(mvsiz),delta(mvsiz),fac,kapa,e,c,vis1o,vis1n,y2p,ypm
95
96
97
98
99
100 ypm=onzep225
101 kapa=zep4187
102 e=ninep793
103
104
105
106 IF(time==zero .AND.
ale%GLOBAL%INCOMP==1)
THEN
107 DO i=1,nel
108 sigoxx(i)=third*(sigoxx(i)+sigoyy(i)+sigozz(i))
109 sigoyy(i)=sigoxx(i)
110 sigozz(i)=sigoxx(i)
111 ENDDO
112 ENDIF
113
114 IF(time==zero .AND. mtn==47)THEN
115 DO i=1,nel
116 uvar(i,1)=ypm
117 ENDDO
118 ENDIF
119
120
121
122 iadbuf = ipm(7,mat(1))-1
123 vis = uparam(iadbuf+1)
124 c1 = uparam(iadbuf+2)
125 isgs = int(uparam(iadbuf+3))
126 smag2= uparam(iadbuf+4)
127 ca = uparam(iadbuf+5)
128
129
130
131 IF(
ale%GLOBAL%INCOMP==1)
THEN
132 DO i=1,nel
133 signxx(i)=sigoxx(i)+c1*(depsxx(i)+depsyy(i)+depszz(i))
134 signyy(i)=signxx(i)
135 signzz(i)=signxx(i)
136 signxy(i)=zero
137 signyz(i)=zero
138 signzx(i)=zero
139 soundsp(i) = sqrt(c1/rho(i))
140 ENDDO
141 ELSE
142 DO i=1,nel
143 signxx(i)=c1*(one -rho(i)/rho0(i))
144 signyy(i)=signxx(i)
145 signzz(i)=signxx(i)
146 signxy(i)=zero
147 signyz(i)=zero
148 signzx(i)=zero
149 soundsp(i) = sqrt(c1/rho(i))
150 ENDDO
151 ENDIF
152
153
154
155
156 DO i=1,nel
157 dav(i)=third*(epspxx(i)+epspyy(i)+epspzz(i))
158 dxy(i)=half*epspxy(i)
159 dyz(i)=half*epspyz(i)
160 dzx(i)=half*epspzx(i)
161 ss(i)=sqrt(two*(epspxx(i)**2+epspyy(i)**2+epspzz(i)**2+dxy(i)**2+dyz(i)**2+dzx(i)**2))
162 dxx(i)=epspxx(i)-dav(i)
163 dyy(i)=epspyy(i)-dav(i)
164 dzz(i)=epspzz(i)-dav(i)
165 ENDDO
166
167 IF(mtn==46)THEN
168 IF(n2d==0)THEN
169 IF(isgs==3)THEN
170 DO i=1,nel
171 delta(i)=deltax(i)**2
172 ENDDO
173 ELSE
174 DO i=1,nel
175 delta(i)=volume(i)**two_third
176 ENDDO
177 ENDIF
178 ELSE
179 IF(isgs==3)THEN
180 DO i=1,nel
181 delta(i)=deltax(i)**2
182 ENDDO
183 ELSE
184 DO i=1,nel
185 delta(i)=aire(i)
186 ENDDO
187 ENDIF
188 ENDIF
189 DO i=1,nel
190 vis1(i)=vis+smag2*ss(i)*delta(i)
191 vis2(i)=ca*vis1(i)
192 uvar(i,1)=vis1(i)/vis
193 ENDDO
194 ELSE
195
196
197 DO i=1,nel
198 IF(isgs/=0)THEN
199 c=ss(i)*kapa*deltax(i)*deltax(i)/vis
200 y2p=uvar(i,1)
201
202
203
204 y2p=c/log(e*y2p)
206 vis1n=kapa*y2p/log(e*y2p)
207 vis2n=zero
208 IF(isgs>=2)vis2n=kapa*y2p
209 uvar(i,1)=y2p
210 ELSE
211 vis1n=one
212 vis2n=zero
213 uvar(i,1)=one
214 ENDIF
215 vis1(i)=vis*vis1n
216 vis2(i)=vis*vis2n
217 ENDDO
218 ENDIF
219
220 DO i=1,nel
221 vis1(i)=rho(i)*vis1(i)
222 vis2(i)=three*rho(i)*vis2(i)
223 viscpression=vis2(i)*dav(i)
224 viscmax(i) = vis1(i)+half*vis2(i)
225 vis1(i)=2.*vis1(i)
226 sigvxx(i)=vis1(i)*dxx(i)+viscpression
227 sigvyy(i)=vis1(i)*dyy(i)+viscpression
228 sigvzz(i)=vis1(i)*dzz(i)+viscpression
229 sigvxy(i)=vis1(i)*dxy(i)
230 sigvyz(i)=vis1(i)*dyz(i)
231 sigvzx(i)=vis1(i)*dzx(i)
232 ENDDO
233
234
235
236 IF((anim_e(10)==1 .OR. anim_se(10)==1) .AND. timestep/=0.)THEN
237 fac=four/timestep
238 IF(n2d==0)THEN
239 DO i=1,nel
240 uvar(i,2)=fac*sqrt(wxx(i)**2+wyy(i)**2+wzz(i)**2)
241 ENDDO
242 ELSE
243 DO i=1,nel
244 uvar(i,2)=fac*wzz(i)
245 ENDDO
246 ENDIF
247 ENDIF
248
249 RETURN