36
37
38
40
41
42
43#include "implicit_f.inc"
44
45
46
47#include "mvsiz_p.inc"
48
49
50
51#include "vect01_c.inc"
52#include "param_c.inc"
53#include "inter22.inc"
54
55
56
57 INTEGER :: NEL
58 my_real :: v(3,*) , rho(*) , vol(*) , mom(nel,3) , tf(*)
59 INTEGER :: IXS(NIXS,*), IPM(NPROPMI,*), MAT(MVSIZ), IPARG1(NPARG), NPF(*)
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85 INTEGER :: I, J, II, IALEFVM_FLG,IALEL,IVxFUN, IVyFUN, IVzFUN, MX, MLW, ITYP
86 my_real :: subvol, vcell(3), vnod(3,8),
87 . vx1(mvsiz), vx2(mvsiz), vx3(mvsiz), vx4(mvsiz), vx5(mvsiz), vx6(mvsiz), vx7(mvsiz), vx8(mvsiz),
88 . vy1(mvsiz), vy2(mvsiz), vy3(mvsiz), vy4(mvsiz), vy5(mvsiz), vy6(mvsiz), vy7(mvsiz), vy8(mvsiz),
89 . vz1(mvsiz), vz2(mvsiz), vz3(mvsiz), vz4(mvsiz), vz5(mvsiz), vz6(mvsiz), vz7(mvsiz), vz8(mvsiz),
90 . vx0 , vy0 , vz0,
91 . vx , vy , vz ,
92 . dydx , t0
94
95
96
97
98
99 ialel = iparg1(7)+iparg1(11)
100 IF(ialel == 0)RETURN
102
103
104
105
106
107
108
109
110
111 IF(int22>0)THEN
115
116
118 ENDIF
122 print *, "** WARNING INT22 : /ALE/SOLVER CARD"
123 print *, " RECOMMENDED VALUE IS IMOM_VEL=5"
125 ENDIF
126 ENDIF
127 ENDIF
128
131
132
133
134
135
136
137
138 ENDIF
139
140
141 mlw = iparg1(1)
142
143
144
145 IF(mlw /= 11) THEN
146
147 DO i=lft,llt
148 ii = i+nft
149
150 vx1(i) = v(1,ixs(2,ii))
151 vy1(i) = v(2,ixs(2,ii))
152 vz1(i) = v(3,ixs(2,ii))
153
154 vx2(i) = v(1,ixs(3,ii))
155 vy2(i) = v(2,ixs(3,ii))
156 vz2(i) = v(3,ixs(3,ii))
157
158 vx3(i) = v(1,ixs(4,ii))
159 vy3(i) = v(2,ixs(4,ii))
160 vz3(i) = v(3,ixs(4,ii))
161
162 vx4(i) = v(1,ixs(5,ii))
163 vy4(i) = v(2,ixs(5,ii))
164 vz4(i) = v(3,ixs(5,ii))
165
166 vx5(i) = v(1,ixs(6,ii))
167 vy5(i) = v(2,ixs(6,ii))
168 vz5(i) = v(3,ixs(6,ii))
169
170 vx6(i) = v(1,ixs(7,ii))
171 vy6(i) = v(2,ixs(7,ii))
172 vz6(i) = v(3,ixs(7,ii))
173
174 vx7(i) = v(1,ixs(8,ii))
175 vy7(i) = v(2,ixs(8,ii))
176 vz7(i) = v(3,ixs(8,ii))
177
178 vx8(i) = v(1,ixs(9,ii))
179 vy8(i) = v(2,ixs(9,ii))
180 vz8(i) = v(3,ixs(9,ii))
181
182 vcell(1) = one_over_8 * (vx1(i)+vx2(i)+vx3(i)+vx4(i)+vx5(i)+vx6(i)+vx7(i)+vx8(i))
183 vcell(2) = one_over_8 * (vy1(i)+vy2(i)+vy3(i)+vy4(i)+vy5(i)+vy6(i)+vy7(i)+vy8(i))
184 vcell(3) = one_over_8 * (vz1(i)+vz2(i)+vz3(i)+vz4(i)+vz5(i)+vz6(i)+vz7(i)+vz8(i))
185
186
187
188 mom(i,1) = vcell(1)*rho(i)
189 mom(i,2) = vcell(2)*rho(i)
190 mom(i,3) = vcell(3)*rho(i)
191 ENDDO
192
193
194 DO i=lft,llt
195 ii = i+nft
201 alefvm_buffer%FCELL(6,ii) = -third*(sig(i,1)+sig(i,2)+sig(i,3))
202 ENDDO
203
204
205
206
207 ELSE
208
209
210 mx = mat(lft)
211 ivxfun = ipm(18,mx)
212 ivyfun = ipm(19,mx)
213 ivzfun = ipm(20,mx)
214 ityp = pm(50,mx)
215 vx0 = pm(101,mx)
216 vy0 = pm(102,mx)
217 vz0 = pm(103,mx)
218
219 IF(ityp == 2)THEN
220 t0 = zero
221
222 IF(ivxfun>0)THEN
223 vx = vx0*finter(ivxfun,t0,npf,tf,dydx)
224 ELSE
225 vx = vx0
226 ENDIF
227
228 IF(ivyfun>0)THEN
229 vy = vy0*finter(ivyfun,t0,npf,tf,dydx)
230 ELSE
231 vy = vy0
232 ENDIF
233
234 IF(ivzfun>0)THEN
235 vz = vz0*finter(ivzfun,t0,npf,tf,dydx)
236 ELSE
237 vz = vz0
238 ENDIF
239
240 DO i=lft,llt
241 ii = i+nft
242 mom(i,1) = vx*rho(i)
243 mom(i,2) = vy*rho(i)
244 mom(i,3) = vz*rho(i)
250 alefvm_buffer%FCELL(6,ii) = -third*(sig(i,1)+sig(i,2)+sig(i,3))
251 ENDDO
252 ELSEIF(ityp == 3)THEN
253 t0 = zero
254 vx=zero
255 vy=zero
256 vz=zero
257 DO i=lft,llt
258 ii = i+nft
259 mom(i,1) = vx*rho(i)
260 mom(i,2) = vy*rho(i)
261 mom(i,3) = vz*rho(i)
267 alefvm_buffer%FCELL(6,ii) = -third*(sig(i,1)+sig(i,2)+sig(i,3))
268 ENDDO
269 ENDIF
270
271 ENDIF
272
273
274
275 RETURN
type(alefvm_buffer_), target alefvm_buffer
type(alefvm_param_), target alefvm_param