70
71
72
73
74 USE python_funct_mod
75 USE intbufdef_mod
78 USE sensor_mod
79 USE nodal_arrays_mod
80
81
82
83#include "implicit_f.inc"
84
85
86
87#include "param_c.inc"
88#include "com04_c.inc"
89#include "com08_c.inc"
90#include "lagmult.inc"
91 COMMON /lagglob/n_mult
92
93
94
95 INTEGER ,INTENT(IN) :: NSENSOR,ITASK
96 INTEGER IPARI(NPARI,*),IXS(NIXS,*),IXS16(8,*),
97 . IXS10(6,*),IXS20(12,*),ITAB(*),
98 . LAGBUF(*),IBCSLAG(*),GJBUFI(LKJNI,*),
99 . IBMPC(*),NPBYL(NNPBY,*),LPBYL(*),IBFV(NIFV,*),NPF(*),
100 . NEWFRONT(*),ICONTACT(*),LPRW(*),NPRW(*),KINET(*)
101
103 . x(3,*), d(3,*), dr(3,*), a(3,*), ar(3,*), v(3,*), vr(3,*),
104 . ms(*), in(*), lambda(*),fani(3,*),fsav(nthvki,*),
105 . skew(lskew,*),wag(*),wat(*),gjbufr(lkjnr,*),rbmpc(*),
106 . vel(lfxvelr,*),tf(*),rwbuf(nrwlp,*),rbyl(nrby,*)
107
108 TYPE(INTBUF_STRUCT_) INTBUF_TAB(*)
109 TYPE(H3D_DATABASE) :: H3D_DATA
110 TYPE (SENSOR_STR_) ,DIMENSION(NSENSOR) ,INTENT(IN) :: SENSOR_TAB
111 TYPE(PYTHON_), INTENT(INOUT) :: PYTHON
112 TYPE(nodal_arrays_), intent(in) :: nodes
113
114 TYPE (GROUP_) , DIMENSION(NGRNOD) :: IGRNOD
115 TYPE (GROUP_) , DIMENSION(NGRBRIC) :: IGRBRIC
116
117
118
119 INTEGER N,I,N_MULT,N_MUL_MX,NKMAX,LENH,NH,NTY,NCR,
120 . IP0,IP1,IP2,IP3,IP4,IP5,IP6,IP7,IP8,IP8A,IP8B,IP9,IP10,
121 . IP11,IP12,IP13,IP14,IP15,IP16,,IP18,IP19,IP20,
122 . J1,J2,J3,J4,J5,K,N1,N2,N3,N4,N5,N6,,ISKIP,NCF_S,NCF_E,
123 . INUM,IDDL,ISKW,ITYP,NB_JLT,NB_JLT_NEW,NB_STOK_N,
124 . NUM_ISTOCK,KINDEX2,
125 . ILAGM, ISENS
127
128 n_mul_mx = lag_ncf + lag_ncl
129 nkmax = lag_nkf + lag_nkl
130 nhmax = lag_nhf + lag_nhl
131 n_mult = 0
132 num_istock = 4*numnod
133 lwat =
max(6*(numels16+numels20),nrwlag,2*numnod+num_istock)
134
135 ip0 = 1
136 ip1 = ip0 + n_mul_mx
137 ip2 = ip1 + n_mul_mx + 1
138 ip3 = ip2 + nkmax
139 ip4 = ip3 + nkmax
140 ip5 = ip4 + nkmax
141 ip6 = ip5 + nkmax
142 ip7 = ip6 + numnod
143 ip8 = ip7 + lwat
144 ip8a= ip7 + numnod
145 ip8b= ip8a+ numnod
146 IF(itask==0)THEN
147 kindex2=ip8b
148 ELSE
149 kindex2=1
150 END IF
151 j1 = 1
152 j2 = j1 + lag_ncf + 1
153 j3 = j2 + lag_nhf
154 j4 = j3 + lag_ncf
155 j5 = j4 + lag_ncf
156
157 DO n=0,lag_ncf-1
158 lagbuf(j3+n) = 0
159 lagbuf(j4+n) = 0
160 ENDDO
161 DO n=1,n_mul_mx
162 lambda(n) = zero
163 ENDDO
164 DO n=ip0,ip1-1
165 wag(n) = zero
166 ENDDO
169
170
171
173
175
176 IF(itask==0.AND.nbcslag>0)
CALL ltag_bcs(wag(ip6) ,ngrnod,
177 . igrnod,ibcslag )
178
180
181 IF(itask==0.AND.ninter>0)
CALL ltag_i2main(wag(ip6) ,
182 . ipari ,intbuf_tab )
183
185
186 IF(itask==0.AND.ngjoint>0)
CALL ltag_gjnt(wag(ip6),
187 . gjbufi )
188
190
191 IF(itask==0.AND.nummpc>0)
CALL ltag_mpc(wag(ip6) ,
192 . ibmpc ,ibmpc(nummpc+1))
193
195
196 IF(itask==0.AND.nfvlag>0)
CALL ltag_fxv(wag(ip6) ,
197 . ibfv )
198
200
201 IF(itask==0.AND.nrbylag>0)
CALL ltag_rby(wag(ip6) ,
202 . npbyl ,lpbyl )
203
204
205
207
208 DO n=1,ninter
209 nty = ipari(7,n)
210
211 IF(nty==7.OR.nty==22)THEN
212 isens = 0
213 IF(nty==7) isens = ipari(64,n)
214 IF(isens > 0) THEN
215 ts = sensor_tab(isens)%TSTART
216 ELSE
217 ts = tt
218 ENDIF
219 nb_jlt = 0
220 nb_jlt_new= 0
221 nb_stok_n = 0
222 ilagm =ipari(33,n)
223 IF(ilagm /= 0) THEN
224 IF(tt>=ts) THEN
226 1 n ,ipari ,intbuf_tab,x ,
227 2 v ,a ,itask ,ms ,
228 3 wag(ip1) ,wag(ip2) ,wag(ip3) ,wag(ip4) ,wag(ip5) ,
229 4 n_mul_mx ,nkmax ,itab ,wat(kindex2),nb_jlt ,
230 5 nb_jlt_new,nb_stok_n ,newfront ,icontact ,wag(ip7) ,
231 6 wag(ip8a) ,wag(ip6) ,kinet )
232 ENDIF
233 ENDIF
234
235 ELSEIF(nty==16)THEN
236 ilagm =ipari(33,n)
238 1 n ,ipari ,intbuf_tab,x ,v ,
239 2 a ,itask ,igrnod ,wag(ip7) ,wat(ip8) ,
240 3 ms ,wag(ip1) ,wag(ip2) ,wag(ip3) ,wag(ip4) ,
241 4 wag(ip5) ,n_mul_mx ,ixs ,ixs16 ,ixs20 ,
242 5 nkmax ,ixs10 ,wag(ip6) ,igrbric)
243
244 ELSEIF(nty==17)THEN
245 ilagm =ipari(33,n)
247 1 n ,ipari ,intbuf_tab(n) ,x ,
248 2 v ,a ,itask ,igrbric ,
249 3 wag(ip7) ,ms ,n_mult ,wag(ip1) ,
250 4 wag(ip2) ,wag(ip3) ,wag(ip4) ,wag(ip5) ,n_mul_mx ,
251 5 ixs ,ixs16 ,ixs20 ,nkmax ,wag(ip6) )
252
253 ENDIF
254 ENDDO
255
257
258 k=1
259 DO n=1,nrwall
260 n2=n +nrwall
261 n3=n2+nrwall
262 n4=n3+nrwall
263 n5=n4+nrwall
264 n6=n5+nrwall
265 IF(nprw(n6)==1)THEN
266 CALL lag_rwall(rwbuf(1,n),lprw(k),nprw(n),nprw(n2),nprw(n3),
267 2 wat(ip8),x ,v ,a ,wag(ip1),
268 3 wag(ip2),wag(ip3),wag(ip4),wag(ip5),wag(ip6),
269 4 n_mul_mx,nkmax ,n_mult )
270 ENDIF
271 k=k+nprw(n)
272 ENDDO
273
274
275
276 iskip = 0
277 ncf_s = n_mult
278 DO n=ip7,ip8-1
279 wag(n) = zero
280 ENDDO
281
283
284 IF(itask==0 .AND. nbcslag>0)
CALL lag_bcs(
285 1 igrnod ,ibcslag ,skew ,wag(ip0) ,ngrnod ,
286 2 wag(ip1) ,wag(ip2) ,wag(ip3) ,wag(ip4) ,wag(ip5) ,
287 3 wag(ip6) ,lagbuf(j3),lagbuf(j4),ms ,in ,
288 4 v ,vr ,a ,ar ,iskip ,
289 5 ncf_s ,n_mult )
290
292
294 1 ipari ,intbuf_tab,wag(ip1) ,wag(ip2) ,wag(ip3) ,
295 2 wag(ip4) ,wag(ip5) ,wag(ip6) ,wag(ip7) ,lagbuf(j3),
296 3 lagbuf(j4),in ,ms ,x ,v ,
297 4 vr ,a ,ar ,iskip ,ncf_s ,
298 5 n_mult )
299
301
302 IF(itask==0 .AND. ngjoint>0)
CALL lag_gjnt(
303 1 gjbufi ,gjbufr ,x ,vr ,ar ,
304 2 wag(ip1) ,wag(ip2) ,wag(ip3) ,wag(ip4) ,wag(ip5) ,
305 3 wag(ip6) ,wag(ip7) ,lagbuf(j3),lagbuf(j4),ms ,
306 4 in ,v ,a ,iskip ,ncf_s ,
307 5 n_mult )
308
310
311 IF(itask==0 .AND. nummpc>0) THEN
312 inum = nummpc+1
313 iddl = inum +lmpc
314 iskw = iddl +lmpc
316 1 rbmpc ,ibmpc ,ibmpc(inum),ibmpc(iddl),ibmpc(iskw),
317 2 skew ,wag(ip1) ,wag(ip2) ,wag(ip3) ,wag(ip4) ,
318 3 wag(ip5) ,wag(ip6) ,lagbuf(j3) ,lagbuf(j4) ,ms ,
319 4 in ,v ,vr ,a ,ar ,
320 5 iskip ,ncf_s ,n_mult )
321 ENDIF
322
324
325 IF(itask==0 .AND. nfvlag>0)
CALL lag_fxv(
326 1 ibfv ,vel ,skew ,npf ,tf ,
327 2 wag(ip0) ,wag(ip1) ,wag(ip2) ,wag(ip3) ,wag(ip4) ,
328 3 wag(ip5) ,wag(ip6) ,lagbuf(j3),lagbuf(j4),ms ,
329 4 in ,v ,vr ,a ,ar ,
330 5 iskip ,ncf_s ,n_mult ,python, nodes)
331
332 ncf_e = n_mult
333
334
335
337
338 IF(itask==0 .AND. nrbylag>0) THEN
340 1 rbyl ,npbyl ,lpbyl ,ms ,in ,
341 2 wag(ip1) ,wag(ip2) ,wag(ip3) ,wag(ip4) ,wag(ip5) ,
342 3 wag(ip6) ,v ,vr ,a ,ar ,
343 4 x ,n_mult ,ncr )
344 ELSE
345 ncr = n_mult
346 ENDIF
347
348
349
350
352
353 IF(itask==0) THEN
354 nh = nhmax + 3*(n_mul_mx - n_mult)
355
356 ip7 = ip6 + n_mult + 1
357 ip8 = ip7 + nh
358 ip9 = ip8 + nh
359 ip10 = ip9 + n_mult
360 ip11 = ip0
361 ip12 = ip10 + n_mult
362 ip13 = ip12 + n_mult
363 ip14 = ip13 + 6 * numnod
364 ip15 = ip14 + nh
365 ip16 = ip15 + n_mult
366 ip17 = ip16 + n_mult
367 ip18 = ip17 + n_mult
368 ip19 = ip18 + n_mult
369 ip20 = ip19 + n_mult
370
371 DO n=ip13,ip14-1
372 wag(n) = zero
373 ENDDO
374
376 1 nh ,n_mult ,ncr ,a ,v ,
377 2 ms ,wag(ip1) ,wag(ip2) ,wag(ip3) ,wag(ip5) ,
378 3 wag(ip6) ,wag(ip7) ,wag(ip8) ,wag(ip9) ,wag(ip10) ,
379 4 wag(ip11) ,wag(ip12) ,wag(ip13) ,wag(ip14) ,wag(ip15) ,
380 5 wag(ip16) ,wag(ip17) ,wag(ip18) ,wag(ip19) ,lambda ,
381 6 rbyl ,npbyl ,ar ,vr ,in ,
382 7 lagbuf(j1),lagbuf(j2),lagbuf(j3),lagbuf(j4),ncf_s ,
383 8 ncf_e )
384 ENDIF
385
387
388 IF(itask==0)
390 2 wag(ip1),wag(ip2),wag(ip3),wag(ip5),lambda ,
391 3 ms ,in ,rbyl ,npbyl ,lpbyl ,
392 4 n_mult ,ncr )
393
395
396 IF(itask==0)
397 .
CALL lag_anith(wag(ip1),wag(ip2),wag(ip3),wag(ip4),wag(ip5),
398 . fani ,fsav ,n_mult ,h3d_data )
399
400
401
402 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(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)