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