73
74
75
76
77 USE python_funct_mod
78 USE intbufdef_mod
81 USE sensor_mod
82 USE nodal_arrays_mod
83 USE extend_array_mod
84 USE output_mod
85 use element_mod , only : nixs
86
87
88
89#include "implicit_f.inc"
90
91
92
93#include "param_c.inc"
94#include "com04_c.inc"
95#include "com08_c.inc"
96#include "lagmult.inc"
97 COMMON /lagglob/n_mult
98
99
100
101 type(output_), intent(inout) :: output
102 INTEGER ,INTENT(IN) :: NSENSOR,ITASK
103 INTEGER IPARI(NPARI,*),IXS(NIXS,*),IXS16(8,*),
104 . IXS10(6,*),IXS20(12,*),ITAB(*),
105 . LAGBUF(*),IBCSLAG(*),GJBUFI(LKJNI,*),
106 . IBMPC(*),NPBYL(NNPBY,*),LPBYL(*),IBFV(NIFV,*),NPF(*),
107 . NEWFRONT(*),ICONTACT(*),LPRW(*),NPRW(*),KINET(*)
108
110 . x(3,*), d(3,*), dr(3,*), a(3,*), ar(3,*), v(3,*), vr(3,*),
111 . ms(*), in(*), lambda(*),fani(3,*),fsav(nthvki,*),
112 . skew(lskew,*),wag(*),wat(*),gjbufr(lkjnr,*),rbmpc(*),
113 . vel(lfxvelr,*),tf(*),rwbuf(nrwlp,*),rbyl(nrby,*)
114
115 TYPE(INTBUF_STRUCT_) INTBUF_TAB(*)
116 TYPE(H3D_DATABASE) :: H3D_DATA
117 TYPE (SENSOR_STR_) ,DIMENSION(NSENSOR) ,INTENT(IN) :: SENSOR_TAB
118 TYPE(PYTHON_), INTENT(INOUT) :: PYTHON
119 TYPE(nodal_arrays_), intent(in) :: nodes
120
121 TYPE (GROUP_) , DIMENSION(NGRNOD) :: IGRNOD
122 TYPE (GROUP_) , DIMENSION(NGRBRIC) :: IGRBRIC
123
124
125
126 INTEGER N,N_MULT,N_MUL_MX,NKMAX,NH,NTY,NCR,
127 . IP0,IP1,IP2,IP3,IP4,IP5,IP6,IP7,IP8,IP8A,IP8B,IP9,IP10,
128 . IP11,IP12,IP13,IP14,IP15,IP16,IP17,IP18,IP19,IP20,
129 . J1,J2,J3,,J5,K,N2,N3,N4,N5,N6,LWAT,ISKIP,NCF_S,NCF_E,
130 . INUM,IDDL,ISKW,NB_JLT,NB_JLT_NEW,NB_STOK_N,
131 . NUM_ISTOCK,KINDEX2,
132 . ILAGM, ISENS
134
135 n_mul_mx = lag_ncf + lag_ncl
136 nkmax = lag_nkf + lag_nkl
137 nhmax = lag_nhf + lag_nhl
138 n_mult = 0
139 num_istock = 4*numnod
140 lwat =
max(6*(numels16+numels20),nrwlag,2*numnod+num_istock)
141
142 ip0 = 1
143 ip1 = ip0 + n_mul_mx
144 ip2 = ip1 + n_mul_mx + 1
145 ip3 = ip2 + nkmax
146 ip4 = ip3 + nkmax
147 ip5 = ip4 + nkmax
148 ip6 = ip5 + nkmax
149 ip7 = ip6 + numnod
150 ip8 = ip7 + lwat
151 ip8a= ip7 + numnod
152 ip8b= ip8a+ numnod
153 IF(itask==0)THEN
154 kindex2=ip8b
155 ELSE
156 kindex2=1
157 END IF
158 j1 = 1
159 j2 = j1 + lag_ncf + 1
160 j3 = j2 + lag_nhf
161 j4 = j3 + lag_ncf
162 j5 = j4 + lag_ncf
163
164 DO n=0,lag_ncf-1
165 lagbuf(j3+n) = 0
166 lagbuf(j4+n) = 0
167 ENDDO
168 DO n=1,n_mul_mx
169 lambda(n) = zero
170 ENDDO
171 DO n=ip0,ip1-1
172 wag(n) = zero
173 ENDDO
176
177
178
180
182
183 IF(itask==0.AND.nbcslag>0)
CALL ltag_bcs(wag(ip6) ,ngrnod,
184 . igrnod,ibcslag )
185
187
188 IF(itask==0.AND.ninter>0)
CALL ltag_i2main(wag(ip6) ,
189 . ipari ,intbuf_tab )
190
192
193 IF(itask==0.AND.ngjoint>0)
CALL ltag_gjnt(wag(ip6),
194 . gjbufi )
195
197
198 IF(itask==0.AND.nummpc>0)
CALL ltag_mpc(wag(ip6) ,
199 . ibmpc ,ibmpc(nummpc+1))
200
202
203 IF(itask==0.AND.nfvlag>0)
CALL ltag_fxv(wag(ip6) ,
204 . ibfv )
205
207
208 IF(itask==0.AND.nrbylag>0)
CALL ltag_rby(wag(ip6) ,
209 . npbyl ,lpbyl )
210
211
212
214
215 DO n=1,ninter
216 nty = ipari(7,n)
217
218 IF(nty==7.OR.nty==22)THEN
219 isens = 0
220 IF(nty==7) isens = ipari(64,n)
221 IF(isens > 0) THEN
222 ts = sensor_tab(isens)%TSTART
223 ELSE
224 ts = tt
225 ENDIF
226 nb_jlt = 0
227 nb_jlt_new= 0
228 nb_stok_n = 0
229 ilagm =ipari(33,n)
230 IF(ilagm /= 0) THEN
231 IF(tt>=ts) THEN
233 1 n ,ipari ,intbuf_tab,x ,
234 2 v ,a ,itask ,ms ,
235 3 wag(ip1) ,wag(ip2) ,wag(ip3) ,wag(ip4) ,wag(ip5) ,
236 4 n_mul_mx ,nkmax ,itab ,wat(kindex2),nb_jlt ,
237 5 nb_jlt_new,nb_stok_n ,newfront ,icontact ,wag(ip7) ,
238 6 wag(ip8a) ,wag(ip6) ,kinet )
239 ENDIF
240 ENDIF
241
242 ELSEIF(nty==16)THEN
243 ilagm =ipari(33,n)
245 1 n ,ipari ,intbuf_tab,x ,v ,
246 2 a ,itask ,igrnod ,wag(ip7) ,wat(ip8) ,
247 3 ms ,wag(ip1) ,wag(ip2) ,wag(ip3) ,wag(ip4) ,
248 4 wag(ip5) ,n_mul_mx ,ixs ,ixs16 ,ixs20 ,
249 5 nkmax ,ixs10 ,wag(ip6) ,igrbric)
250
251 ELSEIF(nty==17)THEN
252 ilagm =ipari(33,n)
254 1 n ,ipari ,intbuf_tab(n) ,x ,
255 2 v ,a ,itask ,igrbric ,
256 3 wag(ip7) ,ms ,n_mult ,wag(ip1) ,
257 4 wag(ip2) ,wag(ip3) ,wag(ip4) ,wag(ip5) ,n_mul_mx ,
258 5 ixs ,ixs16 ,ixs20 ,nkmax ,wag(ip6) )
259
260 ENDIF
261 ENDDO
262
264
265 k=1
266 DO n=1,nrwall
267 n2=n +nrwall
268 n3=n2+nrwall
269 n4=n3+nrwall
270 n5=n4+nrwall
271 n6=n5+nrwall
272 IF(nprw(n6)==1)THEN
273 CALL lag_rwall(rwbuf(1,n),lprw(k),nprw(n),nprw(n2),nprw(n3),
274 2 wat(ip8),x ,v ,a ,wag(ip1),
275 3 wag(ip2),wag(ip3),wag(ip4),wag(ip5),wag(ip6),
276 4 n_mul_mx,nkmax ,n_mult )
277 ENDIF
278 k=k+nprw(n)
279 ENDDO
280
281
282
283 iskip = 0
284 ncf_s = n_mult
285 DO n=ip7,ip8-1
286 wag(n) = zero
287 ENDDO
288
290
291 IF(itask==0 .AND. nbcslag>0)
CALL lag_bcs(
292 1 igrnod ,ibcslag ,skew ,wag(ip0) ,ngrnod ,
293 2 wag(ip1) ,wag(ip2) ,wag(ip3) ,wag(ip4) ,wag(ip5) ,
294 3 wag(ip6) ,lagbuf(j3),lagbuf(j4),ms ,in ,
295 4 v ,vr ,a ,ar ,iskip ,
296 5 ncf_s ,n_mult )
297
299
301 1 ipari ,intbuf_tab,wag(ip1) ,wag(ip2) ,wag(ip3) ,
302 2 wag(ip4) ,wag(ip5) ,wag(ip6) ,wag(ip7) ,lagbuf(j3),
303 3 lagbuf(j4),in ,ms ,x ,v ,
304 4 vr ,a ,ar ,iskip ,ncf_s ,
305 5 n_mult )
306
308
309 IF(itask==0 .AND. ngjoint>0)
CALL lag_gjnt(
310 1 gjbufi ,gjbufr ,x ,vr ,ar ,
311 2 wag(ip1) ,wag(ip2) ,wag(ip3) ,wag(ip4) ,wag(ip5) ,
312 3 wag(ip6) ,wag(ip7) ,lagbuf(j3),lagbuf(j4),ms ,
313 4 in ,v ,a ,iskip ,ncf_s ,
314 5 n_mult )
315
317
318 IF(itask==0 .AND. nummpc>0) THEN
319 inum = nummpc+1
320 iddl = inum +lmpc
321 iskw = iddl +lmpc
323 1 rbmpc ,ibmpc ,ibmpc(inum),ibmpc(iddl),ibmpc(iskw),
324 2 skew ,wag(ip1) ,wag(ip2) ,wag(ip3) ,wag(ip4) ,
325 3 wag(ip5) ,wag(ip6) ,lagbuf(j3) ,lagbuf(j4) ,ms ,
326 4 in ,v ,vr ,a ,ar ,
327 5 iskip ,ncf_s ,n_mult )
328 ENDIF
329
331
332 IF(itask==0 .AND. nfvlag>0)
CALL lag_fxv(
333 1 ibfv ,vel ,skew ,npf ,tf ,
334 2 wag(ip0) ,wag(ip1) ,wag(ip2) ,wag(ip3) ,wag(ip4) ,
335 3 wag(ip5) ,wag(ip6) ,lagbuf(j3),lagbuf(j4),ms ,
336 4 in ,v ,vr ,a ,ar ,
337 5 iskip ,ncf_s ,n_mult ,python, nodes)
338
339 ncf_e = n_mult
340
341
342
344
345 IF(itask==0 .AND. nrbylag>0) THEN
347 1 rbyl ,npbyl ,lpbyl ,ms ,in ,
348 2 wag(ip1) ,wag(ip2) ,wag(ip3) ,wag(ip4) ,wag(ip5) ,
349 3 wag(ip6) ,v ,vr ,a ,ar ,
350 4 x ,n_mult ,ncr )
351 ELSE
352 ncr = n_mult
353 ENDIF
354
355
356
357
359
360 IF(itask==0) THEN
361 nh = nhmax + 3*(n_mul_mx - n_mult)
362
363 ip7 = ip6 + n_mult + 1
364 ip8 = ip7 + nh
365 ip9 = ip8 + nh
366 ip10 = ip9 + n_mult
367 ip11 = ip0
368 ip12 = ip10 + n_mult
369 ip13 = ip12 + n_mult
370 ip14 = ip13 + 6 * numnod
371 ip15 = ip14 + nh
372 ip16 = ip15 + n_mult
373 ip17 = ip16 + n_mult
374 ip18 = ip17 + n_mult
375 ip19 = ip18 + n_mult
376 ip20 = ip19 + n_mult
377
378 DO n=ip13,ip14-1
379 wag(n) = zero
380 ENDDO
381
383 1 nh ,n_mult ,ncr ,a ,v ,
384 2 ms ,wag(ip1) ,wag(ip2) ,wag(ip3) ,wag(ip5) ,
385 3 wag(ip6) ,wag(ip7) ,wag(ip8) ,wag(ip9) ,wag(ip10) ,
386 4 wag(ip11) ,wag(ip12) ,wag(ip13) ,wag(ip14) ,wag(ip15) ,
387 5 wag(ip16) ,wag(ip17) ,wag(ip18) ,wag(ip19) ,lambda ,
388 6 rbyl ,npbyl ,ar ,vr ,in ,
389 7 lagbuf(j1),lagbuf(j2),lagbuf(j3),lagbuf(j4),ncf_s ,
390 8 ncf_e )
391 ENDIF
392
394
395 IF(itask==0)
397 2 wag(ip1),wag(ip2),wag(ip3),wag(ip5),lambda ,
398 3
399 4 n_mult ,ncr )
400
402
403 IF(itask==0)
404 .
CALL lag_anith(output,wag(ip1),wag(ip2),wag(ip3),wag(ip4),wag(ip5),
405 . fani ,fsav ,n_mult ,h3d_data )
406
407
408
409 RETURN
subroutine i16main(nin, ipari, intbuf_tab, x, v, a, itask, igrnod, eminx, wat, ms, iadll, lll, jll, sll, xll, n_mul_mx, ixs, ixs16, ixs20, nkmax, ixs10, comntag, igrbric)
subroutine i17main(nin, ipari, intbuf_tab, x, v, a, itask, igrbric, eminx, ms, nc, iadll, lll, jll, sll, xll, n_mul_mx, ixs, ixs16, ixs20, nkmax, comntag)
subroutine i7main_lmult(nin, ipari, intbuf_tab, x, v, a, itask, ms, iadll, lll, jll, sll, xll, n_mul_mx, nkmax, itab, index2, nb_jlt, nb_jlt_new, nb_stok_n, newfront, icontact, itag, xtag, comntag, kinet)
subroutine lag_anith(output, iadll, lll, jll, sll, xll, fani, fsav, nc, h3d_data)
subroutine lag_bcs(igrnod, ibcslag, sk, rll, ngrnod, iadll, lll, jll, sll, xll, comntag, icftag, jcftag, mass, iner, v, vr, a, ar, iskip, ncf_s, nc)
subroutine lag_fxv(ibfv, vel, skew, npf, tf, bll, iadll, lll, jll, sll, xll, comntag, icftag, jcftag, ms, in, v, vr, a, ar, iskip, ncf_s, nc, python, nodes)
subroutine lag_gjnt(gjbufi, gjbufr, x, vr, ar, iadll, lll, jll, sll, xll, comntag, ltsm, icftag, jcftag, ms, in, v, a, iskip, ncf_s, nc)
subroutine lag_i2main(ipari, intbuf_tab, iadll, lll, jll, sll, xll, comntag, ltsm, icftag, jcftag, in, ms, x, v, vr, a, ar, iskip, ncf_s, n_mult)
subroutine lag_mpc(rbmpc, impcnc, impcnn, impcdl, impcsk, skew, iadll, lll, jll, sll, xll, comntag, icftag, jcftag, ms, in, v, vr, a, ar, iskip, ncf_s, nc)
subroutine lag_mult_solv(nh, nc, ncr, a, v, mas, iadll, lll, jll, xll, iadh, jcih, hh, z, p, r, q, ltsm, hl, diag_h, diag_l, work1, work2, work3, lambda, rbyl, npbyl, ar, vr, in, iadhf, jcihf, icftag, jcftag, ncf_s, ncf_e)
subroutine ltag_rby(comntag, npbyl, lpbyl)
subroutine ltag_i2main(comntag, ipari, intbuf_tab)
subroutine ltag_gjnt(comntag, gjbufi)
subroutine init_intv(intv, len)
subroutine ltag_mpc(comntag, impcnc, impcnn)
subroutine ltag_bcs(comntag, ngrnod, igrnod, ibcslag)
subroutine ltag_fxv(comntag, ibfv)
subroutine init_int(i, j)
subroutine lag_rby(rbyl, npbyl, lpbyl, mass, iner, iadll, lll, jll, sll, xll, comntag, v, vr, a, ar, x, nc, ncr)
subroutine rby_decond(x, v, vr, a, ar, iadll, lll, jll, xll, lambda, mass, iner, rbyl, npbyl, lpbyl, nc, ncr)
subroutine lag_rwall(rwl, nsw, nsn, itied, msr, index, x, v, a, iadll, lll, jll, sll, xll, comntag, n_mul_mx, nkmax, nc)