OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
c_fxbody.F
Go to the documentation of this file.
1Copyright> OpenRadioss
2Copyright> Copyright (C) 1986-2025 Altair Engineering Inc.
3Copyright>
4Copyright> This program is free software: you can redistribute it and/or modify
5Copyright> it under the terms of the GNU Affero General Public License as published by
6Copyright> the Free Software Foundation, either version 3 of the License, or
7Copyright> (at your option) any later version.
8Copyright>
9Copyright> This program is distributed in the hope that it will be useful,
10Copyright> but WITHOUT ANY WARRANTY; without even the implied warranty of
11Copyright> MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12Copyright> GNU Affero General Public License for more details.
13Copyright>
14Copyright> You should have received a copy of the GNU Affero General Public License
15Copyright> along with this program. If not, see <https://www.gnu.org/licenses/>.
16Copyright>
17Copyright>
18Copyright> Commercial Alternative: Altair Radioss Software
19Copyright>
20Copyright> As an alternative to this open-source version, Altair also offers Altair Radioss
21Copyright> software under a commercial license. Contact Altair to discuss further if the
22Copyright> commercial version may interest you: https://www.altair.com/radioss/.
23!||====================================================================
24!|| c_fxbody1 ../starter/source/restart/ddsplit/c_fxbody.F
25!||--- called by ------------------------------------------------------
26!|| ddsplit ../starter/source/restart/ddsplit/ddsplit.F
27!||====================================================================
28 SUBROUTINE c_fxbody1(
29 . FXBIPM , FXBNOD , NODLOCAL, IPARG , FXBELM,
30 . LENNOD_L , LENMOD_L, LENELM_L, LENSIG_L, PROC ,
31 . LENGRVI_L, FXBGRVI )
32C-----------------------------------------------
33C I m p l i c i t T y p e s
34C-----------------------------------------------
35#include "implicit_f.inc"
36C-----------------------------------------------
37C C o m m o n B l o c k s
38C-----------------------------------------------
39#include "com04_c.inc"
40#include "param_c.inc"
41#include "fxbcom.inc"
42C-----------------------------------------------
43C D u m m y A r g u m e n t s
44C-----------------------------------------------
45 INTEGER FXBIPM(NBIPM,*), FXBNOD(*), NODLOCAL(*), IPARG(NPARG,*),
46 . FXBELM(*), LENNOD_L, LENMOD_L, LENELM_L, LENSIG_L, PROC,
47 . LENGRVI_L, FXBGRVI(*)
48C-----------------------------------------------
49C L o c a l V a r i a b l e s
50C-----------------------------------------------
51 INTEGER NFX, NSN, NSNI, IFILE, ANOD, I, II, AELM, NELS, NELC,
52 . NELT, NELP, NELTG, NG, P, NSN_L, NSNI_L, NMOD, NME,
53 . NLG, AGRVI, IADG, IG, NNO, NNO_L
54C
55 lennod_l=0
56 lenmod_l=0
57 lenelm_l=0
58 lensig_l=0
59 lengrvi_l=0
60 DO nfx=1,nfxbody
61 nsn=fxbipm(3,nfx)
62 nsni=fxbipm(18,nfx)
63 nmod=fxbipm(4,nfx)
64 nme=fxbipm(17,nfx)
65 ifile=fxbipm(29,nfx)
66C Modes
67 anod=fxbipm(6,nfx)
68 nsn_l=0
69 nsni_l=0
70 DO i=1,nsni
71 ii=fxbnod(anod+i-1)
72 IF (nodlocal(ii)/=0) THEN
73 nsn_l=nsn_l+1
74 nsni_l=nsni_l+1
75 ENDIF
76 ENDDO
77 DO i=nsni+1,nsn
78 ii=fxbnod(anod+i-1)
79 IF (nodlocal(ii)/=0) nsn_l=nsn_l+1
80 ENDDO
81 lennod_l=lennod_l+nsn_l
82 IF (ifile==0) THEN
83 lenmod_l=lenmod_l+nsn_l*(nme+nmod)
84 ELSEIF (ifile==1) THEN
85 lenmod_l=lenmod_l+nsni_l*(nme+nmod)
86 ENDIF
87C Champs de contraintes
88 aelm=fxbipm(19,nfx)
89 nels=fxbipm(21,nfx)
90 nelc=fxbipm(22,nfx)
91 nelt=fxbipm(34,nfx)
92 nelp=fxbipm(35,nfx)
93 neltg=fxbipm(23,nfx)
94 DO i=1,nels
95 ng=fxbelm(aelm)
96 p=iparg(32,ng)
97 IF (p==proc) THEN
98 lenelm_l=lenelm_l+13
99 IF (ifile==0) lensig_l=lensig_l+7*nmod
100 ENDIF
101 aelm=aelm+13
102 ENDDO
103 DO i=1,nelc
104 ng=fxbelm(aelm)
105 p=iparg(32,ng)
106 IF (p==proc) THEN
107 lenelm_l=lenelm_l+10
108 IF (ifile==0) lensig_l=lensig_l+10*nmod
109 ENDIF
110 aelm=aelm+10
111 ENDDO
112 DO i=1,nelt
113 ng=fxbelm(aelm)
114 p=iparg(32,ng)
115 IF (p==proc) THEN
116 lenelm_l=lenelm_l+7
117 IF (ifile==0) lensig_l=lensig_l+2*nmod
118 ENDIF
119 aelm=aelm+7
120 ENDDO
121 DO i=1,nelp
122 ng=fxbelm(aelm)
123 p=iparg(32,ng)
124 IF (p==proc) THEN
125 lenelm_l=lenelm_l+9
126 IF (ifile==0) lensig_l=lensig_l+8*nmod
127 ENDIF
128 aelm=aelm+9
129 ENDDO
130 DO i=1,neltg
131 ng=fxbelm(aelm)
132 p=iparg(32,ng)
133 IF (p==proc) THEN
134 lenelm_l=lenelm_l+9
135 IF (ifile==0) lensig_l=lensig_l+10*nmod
136 ENDIF
137 aelm=aelm+9
138 ENDDO
139C Gravite
140 nlg=fxbipm(25,nfx)
141 agrvi=fxbipm(26,nfx)
142 iadg=0
143 DO ig=1,nlg
144 nno=fxbgrvi(agrvi+iadg+1)
145 nno_l=0
146 DO i=1,nno
147 ii=fxbgrvi(agrvi+iadg+i+1)
148 IF (nodlocal(ii)/=0) nno_l=nno_l+1
149 ENDDO
150 iadg=iadg+2+nno
151 lengrvi_l=lengrvi_l+2+nno_l
152 ENDDO
153 ENDDO
154C
155 RETURN
156 END
157!||====================================================================
158!|| c_fxbody2 ../starter/source/restart/ddsplit/c_fxbody.F
159!||--- called by ------------------------------------------------------
160!|| ddsplit ../starter/source/restart/ddsplit/ddsplit.F
161!||--- calls -----------------------------------------------------
162!|| nlocal ../starter/source/spmd/node/ddtools.F
163!||====================================================================
164 SUBROUTINE c_fxbody2(
165 . FXBIPM , FXBNOD , NODLOCAL, IPARG , FXBELM ,
166 . FXBNOD_L , FXBMOD_L, FXBELM_L, FXBSIG_L, PROC ,
167 . FXBMOD , FXBSIG , FXBIPM_L, FXBGRVI,
168 . FXBGRVI_L, LENNOD_L,ITASK)
169C-----------------------------------------------
170C M o d u l e s
171C-----------------------------------------------
172C-----------------------------------------------
173C I m p l i c i t T y p e s
174C-----------------------------------------------
175#include "implicit_f.inc"
176C-----------------------------------------------
177C C o m m o n B l o c k s
178C-----------------------------------------------
179#include "com01_c.inc"
180#include "com04_c.inc"
181#include "scr15_c.inc"
182#include "param_c.inc"
183#include "units_c.inc"
184#include "units_fxbody_c.inc"
185#include "fxbcom.inc"
186C-----------------------------------------------
187C D u m m y A r g u m e n t s
188C-----------------------------------------------
189 INTEGER FXBIPM(NBIPM,*), FXBNOD(*), NODLOCAL(*), IPARG(NPARG,*),
190 . FXBELM(*), FXBNOD_L(*), FXBELM_L(*), PROC,
191 . FXBIPM_L(NBIPM,*), FXBGRVI(*),
192 . FXBGRVI_L(*), LENNOD_L
193 my_real
194 . FXBMOD_L(*), FXBSIG_L(*), FXBMOD(*), FXBSIG(*)
195C-----------------------------------------------
196C F u n c t i o n
197C-----------------------------------------------
198 INTEGER NLOCAL
199 EXTERNAL NLOCAL
200C-----------------------------------------------
201C L o c a l V a r i a b l e s
202C-----------------------------------------------
203 INTEGER RCLEN, LB_L, NG, P, IAD_L(NGROUP), LBUFELI, ANOD_L,
204 . AMOD_L, IRCM_L, AELM_L, ASIG_L, IRCS_L, NFX, I, NSN,
205 . nsni, ifile, nmod, nme, ircm, anod, amod, nsn_l, nsni_l,
206 . ii, asig, ircs, nels, nelc, nelt, nelp, neltg, aelm,
207 . nels_l, nelc_l, nelt_l, nelp_l, neltg_l, j, k, elm(13),
208 . lvsig, iad, jj, asig2, asig_l2, lvsig2, nmax, pmain, pp,
209 . agrvi_l, nlg, agrvi, iadg, iadg_l, ig, nno, nno_l,
210 . ng_l(ngroup), iadfxb(lennod_l),itask
211 my_real
212 . flrec6(6), var(6)
213 my_real
214 . , DIMENSION(:), ALLOCATABLE :: vsig, vsig2
215 CHARACTER(LEN=4) :: CIT
216 CHARACTER(LEN=256) :: SCR_FILE_NAME,SCR_FILE_NAME2
217C
218 INQUIRE(iolength=rclen) flrec6
219
220c initially was set in starter0, but re-set here for multi threading compatibility
221 ifxm_l = 27000
222 ifxs_l = 28000
223 nels_l = 0
224 nelc_l = 0
225 nelt_l = 0
226 nelp_l = 0
227 neltg_l = 0
228
229
230 WRITE(cit,'(I4.4)')itask
231 scr_file_name ='SCR_FXM_'//rootnam(1:rootlen)//'_'//cit(1:4)//'.scr'
232 scr_file_name2='SCR_FXS_'//rootnam(1:rootlen)//'_'//cit(1:4)//'.scr'
233
234 OPEN(unit=ifxm_l+itask,file=trim(scr_file_name),access='DIRECT',recl=rclen)
235 OPEN(unit=ifxs_l+itask,file=trim(scr_file_name2),access='DIRECT',recl=rclen)
236C
237 lb_l=1
238 ii=0
239 DO ng=1,ngroup
240 p=iparg(32,ng)
241 IF (p==proc) THEN
242 ii=ii+1
243 ng_l(ng)=ii
244 iad_l(ng)=lb_l
245 IF (ng<ngroup) THEN
246 lbufeli=iparg(4,ng+1)-iparg(4,ng)
247 ELSE
248 lbufeli=lbufel+1-iparg(4,ng)
249 ENDIF
250 lb_l=lb_l+lbufeli
251 ENDIF
252 ENDDO
253C
254 anod_l=0
255 amod_l=0
256 ircm_l=0
257 aelm_l=0
258 asig_l=0
259 ircs_l=0
260 agrvi_l=1
261 DO nfx=1,nfxbody
262 DO i=1,nbipm
263 fxbipm_l(i,nfx)=fxbipm(i,nfx)
264 ENDDO
265C Noeud Main
266 fxbipm_l(2,nfx)=nodlocal(fxbipm(2,nfx))
267C
268 nsn=fxbipm(3,nfx)
269 nsni=fxbipm(18,nfx)
270 ifile=fxbipm(29,nfx)
271 nmod=fxbipm(4,nfx)
272 nme=fxbipm(17,nfx)
273 ircm=fxbipm(30,nfx)
274C Modes
275 anod=fxbipm(6,nfx)
276 amod=fxbipm(7,nfx)
277 fxbipm_l(6,nfx)=anod_l+1
278 fxbipm_l(7,nfx)=amod_l+1
279 nsn_l=0
280 nsni_l=0
281 DO i=1,nsni
282 ii=fxbnod(anod+i-1)
283 IF (nodlocal(ii)/=0) THEN
284 nsn_l=nsn_l+1
285 nsni_l=nsni_l+1
286 anod_l=anod_l+1
287 fxbnod_l(anod_l)=nodlocal(ii)
288 iadfxb(nsn_l)=i
289 ENDIF
290 ENDDO
291 DO i=nsni+1,nsn
292 ii=fxbnod(anod+i-1)
293 IF (nodlocal(ii)/=0) THEN
294 nsn_l=nsn_l+1
295 anod_l=anod_l+1
296 fxbnod_l(anod_l)=nodlocal(ii)
297 iadfxb(nsn_l)=i
298 ENDIF
299 ENDDO
300 fxbipm_l(3,nfx)=nsn_l
301 fxbipm_l(18,nfx)=nsni_l
302 DO i=1,nsn_l
303 anod_l=anod_l+1
304 fxbnod_l(anod_l)=iadfxb(i)
305 ENDDO
306 fxbipm_l(30,nfx)=ircm_l
307 IF (ifile==0) THEN
308 DO i=1,nme+nmod
309 DO j=1,nsn
310 jj=fxbnod(anod+j-1)
311 IF (nodlocal(jj)/=0) THEN
312 DO k=1,6
313 fxbmod_l(amod_l+k)=fxbmod(amod-1+6*(j-1)+k)
314 ENDDO
315 amod_l=amod_l+6
316 ENDIF
317 ENDDO
318 amod=amod+6*nsn
319 ENDDO
320 ELSEIF (ifile==1) THEN
321 DO i=1,nme+nmod
322 DO j=1,nsni
323 jj=fxbnod(anod+j-1)
324 IF (nodlocal(jj)/=0) THEN
325 DO k=1,6
326 fxbmod_l(amod_l+k)=fxbmod(amod-1+6*(j-1)+k)
327 ENDDO
328 amod_l=amod_l+6
329 ENDIF
330 ENDDO
331 amod=amod+6*nsni
332 DO j=nsni+1,nsn
333 ircm=ircm+1
334 jj=fxbnod(anod+j-1)
335 IF (nodlocal(jj)/=0) THEN
336!$OMP CRITICAL(read_IXFM_critic)
337 READ(ifxm,rec=ircm) (var(k),k=1,6)
338!$OMP END CRITICAL(read_IXFM_critic)
339 ircm_l=ircm_l+1
340 WRITE(ifxm_l+itask,rec=ircm_l) (var(k),k=1,6)
341 ENDIF
342 ENDDO
343 ENDDO
344 ENDIF
345 fxbipm_l(32,nfx)=ircm_l
346C
347Champs de contrainte modaux
348 asig=fxbipm(20,nfx)
349 ircs=fxbipm(31,nfx)
350 nels=fxbipm(21,nfx)
351 nelc=fxbipm(22,nfx)
352 nelt=fxbipm(34,nfx)
353 nelp=fxbipm(35,nfx)
354 neltg=fxbipm(23,nfx)
355C
356 fxbipm_l(19,nfx)=aelm_l+1
357 fxbipm_l(20,nfx)=asig_l+1
358C
359 DO i=1,nmod
360 aelm=fxbipm(19,nfx)
361 nels_l=0
362 nelc_l=0
363 nelt_l=0
364 nelp_l=0
365 neltg_l=0
366 IF (ifile==0) THEN
367 DO j=1,nels
368 ng=fxbelm(aelm)
369 p=iparg(32,ng)
370 iad=iparg(4,ng)
371 IF (p==proc) THEN
372 nels_l=nels_l+1
373 IF (i==1) THEN
374 DO k=1,13
375 elm(k)=fxbelm(aelm+k-1)
376 ENDDO
377 elm(1)=ng_l(ng)
378 elm(11)=elm(11)-iad+iad_l(ng)
379 elm(12)=elm(12)-iad+iad_l(ng)
380 DO k=1,13
381 fxbelm_l(aelm_l+k)=elm(k)
382 ENDDO
383 aelm_l=aelm_l+13
384 ENDIF
385 DO k=1,7
386 fxbsig_l(asig_l+k)=fxbsig(asig+k-1)
387 ENDDO
388 asig_l=asig_l+7
389 ENDIF
390 aelm=aelm+13
391 asig=asig+7
392 ENDDO
393 DO j=1,nelc
394 ng=fxbelm(aelm)
395 p=iparg(32,ng)
396 iad=iparg(4,ng)
397 IF (p==proc) THEN
398 nelc_l=nelc_l+1
399 IF (i==1) THEN
400 DO k=1,10
401 elm(k)=fxbelm(aelm+k-1)
402 ENDDO
403 elm(1)=ng_l(ng)
404 elm(7)=elm(7)-iad+iad_l(ng)
405 elm(8)=elm(8)-iad+iad_l(ng)
406 elm(9)=elm(9)-iad+iad_l(ng)
407 DO k=1,10
408 fxbelm_l(aelm_l+k)=elm(k)
409 ENDDO
410 aelm_l=aelm_l+10
411 ENDIF
412 DO k=1,10
413 fxbsig_l(asig_l+k)=fxbsig(asig+k-1)
414 ENDDO
415 asig_l=asig_l+10
416 ENDIF
417 aelm=aelm+10
418 asig=asig+10
419 ENDDO
420 DO j=1,nelt
421 ng=fxbelm(aelm)
422 p=iparg(32,ng)
423 iad=iparg(4,ng)
424 IF (p==proc) THEN
425 nelt_l=nelt_l+1
426 IF (i==1) THEN
427 DO k=1,7
428 elm(k)=fxbelm(aelm+k-1)
429 ENDDO
430 elm(1)=ng_l(ng)
431 elm(5)=elm(5)-iad+iad_l(ng)
432 elm(6)=elm(6)-iad+iad_l(ng)
433 DO k=1,7
434 fxbelm_l(aelm_l+k)=elm(k)
435 ENDDO
436 aelm_l=aelm_l+7
437 ENDIF
438 DO k=1,2
439 fxbsig_l(asig_l+k)=fxbsig(asig+k-1)
440 ENDDO
441 asig_l=asig_l+2
442 ENDIF
443 aelm=aelm+7
444 asig=asig+2
445 ENDDO
446 DO j=1,nelp
447 ng=fxbelm(aelm)
448 p=iparg(32,ng)
449 iad=iparg(4,ng)
450 IF (p==proc) THEN
451 nelp_l=nelp_l+1
452 IF (i==1) THEN
453 DO k=1,9
454 elm(k)=fxbelm(aelm+k-1)
455 ENDDO
456 elm(1)=ng_l(ng)
457 elm(6)=elm(6)-iad+iad_l(ng)
458 elm(7)=elm(7)-iad+iad_l(ng)
459 elm(8)=elm(8)-iad+iad_l(ng)
460 DO k=1,9
461 fxbelm_l(aelm_l+k)=elm(k)
462 ENDDO
463 aelm_l=aelm_l+9
464 ENDIF
465 DO k=1,8
466 fxbsig_l(asig_l+k)=fxbsig(asig+k-1)
467 ENDDO
468 asig_l=asig_l+8
469 ENDIF
470 aelm=aelm+9
471 asig=asig+8
472 ENDDO
473 DO j=1,neltg
474 ng=fxbelm(aelm)
475 p=iparg(32,ng)
476 iad=iparg(4,ng)
477 IF (p==proc) THEN
478 neltg_l=neltg_l+1
479 IF (i==1) THEN
480 DO k=1,9
481 elm(k)=fxbelm(aelm+k-1)
482 ENDDO
483 elm(1)=ng_l(ng)
484 elm(6)=elm(6)-iad+iad_l(ng)
485 elm(7)=elm(7)-iad+iad_l(ng)
486 elm(8)=elm(8)-iad+iad_l(ng)
487 DO k=1,9
488 fxbelm_l(aelm_l+k)=elm(k)
489 ENDDO
490 aelm_l=aelm_l+9
491 ENDIF
492 DO k=1,10
493 fxbsig_l(asig_l+k)=fxbsig(asig+k-1)
494 ENDDO
495 asig_l=asig_l+10
496 ENDIF
497 aelm=aelm+9
498 asig=asig+10
499 ENDDO
500 ELSEIF (ifile==1) THEN
501 lvsig=nels*7+nelc*10+nelt*2+nelp*8+neltg*10
502 ALLOCATE(vsig(lvsig), vsig2(lvsig))
503 iad=0
504 DO j=1,lvsig/6
505 ircs=ircs+1
506!$OMP CRITICAL(read_IXFS_critic)
507 READ(ifxs,rec=ircs) (vsig(iad+k),k=1,6)
508!$OMP END CRITICAL(read_IXFS_critic)
509 iad=iad+6
510 ENDDO
511 jj=lvsig-(lvsig/6)*6
512 IF (jj>0) THEN
513 ircs=ircs+1
514!$OMP CRITICAL(read_IXFS_critic)
515 READ(ifxs,rec=ircs) (vsig(iad+k),k=1,jj)
516!$OMP END CRITICAL(read_IXFS_critic)
517 ENDIF
518C
519 asig2=0
520 asig_l2=0
521 DO j=1,nels
522 ng=fxbelm(aelm)
523 p=iparg(32,ng)
524 iad=iparg(4,ng)
525 IF (p==proc) THEN
526 nels_l=nels_l+1
527 IF (i==1) THEN
528 DO k=1,13
529 elm(k)=fxbelm(aelm+k-1)
530 ENDDO
531 elm(1)=ng_l(ng)
532 elm(11)=elm(11)-iad+iad_l(ng)
533 elm(12)=elm(12)-iad+iad_l(ng)
534 DO k=1,13
535 fxbelm_l(aelm_l+k)=elm(k)
536 ENDDO
537 aelm_l=aelm_l+13
538 ENDIF
539 DO k=1,7
540 vsig2(asig_l2+k)=vsig(asig2+k)
541 ENDDO
542 asig_l2=asig_l2+7
543 ENDIF
544 aelm=aelm+13
545 asig2=asig2+7
546 ENDDO
547 DO j=1,nelc
548 ng=fxbelm(aelm)
549 p=iparg(32,ng)
550 iad=iparg(4,ng)
551 IF (p==proc) THEN
552 nelc_l=nelc_l+1
553 IF (i==1) THEN
554 DO k=1,10
555 elm(k)=fxbelm(aelm+k-1)
556 ENDDO
557 elm(1)=ng_l(ng)
558 elm(7)=elm(7)-iad+iad_l(ng)
559 elm(8)=elm(8)-iad+iad_l(ng)
560 elm(9)=elm(9)-iad+iad_l(ng)
561 DO k=1,10
562 fxbelm_l(aelm_l+k)=elm(k)
563 ENDDO
564 aelm_l=aelm_l+10
565 ENDIF
566 DO k=1,10
567 vsig2(asig_l2+k)=vsig(asig2+k)
568 ENDDO
569 asig_l2=asig_l2+10
570 ENDIF
571 aelm=aelm+10
572 asig2=asig2+10
573 ENDDO
574 DO j=1,nelt
575 ng=fxbelm(aelm)
576 p=iparg(32,ng)
577 iad=iparg(4,ng)
578 IF (p==proc) THEN
579 nelt_l=nelt_l+1
580 IF (i==1) THEN
581 DO k=1,7
582 elm(k)=fxbelm(aelm+k-1)
583 ENDDO
584 elm(1)=ng_l(ng)
585 elm(5)=elm(5)-iad+iad_l(ng)
586 elm(6)=elm(6)-iad+iad_l(ng)
587 DO k=1,7
588 fxbelm_l(aelm_l+k)=elm(k)
589 ENDDO
590 aelm_l=aelm_l+7
591 ENDIF
592 DO k=1,2
593 vsig2(asig_l2+k)=vsig(asig2+k)
594 ENDDO
595 asig_l2=asig_l2+2
596 ENDIF
597 aelm=aelm+7
598 asig2=asig2+2
599 ENDDO
600 DO j=1,nelp
601 ng=fxbelm(aelm)
602 p=iparg(32,ng)
603 iad=iparg(4,ng)
604 IF (p==proc) THEN
605 nelp_l=nelp_l+1
606 IF (i==1) THEN
607 DO k=1,9
608 elm(k)=fxbelm(aelm+k-1)
609 ENDDO
610 elm(1)=ng_l(ng)
611 elm(6)=elm(6)-iad+iad_l(ng)
612 elm(7)=elm(7)-iad+iad_l(ng)
613 elm(8)=elm(8)-iad+iad_l(ng)
614 DO k=1,9
615 fxbelm_l(aelm_l+k)=elm(k)
616 ENDDO
617 aelm_l=aelm_l+9
618 ENDIF
619 DO k=1,8
620 vsig2(asig_l2+k)=vsig(asig2+k)
621 ENDDO
622 asig_l2=asig_l2+8
623 ENDIF
624 aelm=aelm+9
625 asig2=asig2+8
626 ENDDO
627 DO j=1,neltg
628 ng=fxbelm(aelm)
629 p=iparg(32,ng)
630 iad=iparg(4,ng)
631 IF (p==proc) THEN
632 neltg_l=neltg_l+1
633 IF (i==1) THEN
634 DO k=1,9
635 elm(k)=fxbelm(aelm+k-1)
636 ENDDO
637 elm(1)=ng_l(ng)
638 elm(6)=elm(6)-iad+iad_l(ng)
639 elm(7)=elm(7)-iad+iad_l(ng)
640 elm(8)=elm(8)-iad+iad_l(ng)
641 DO k=1,9
642 fxbelm_l(aelm_l+k)=elm(k)
643 ENDDO
644 aelm_l=aelm_l+9
645 ENDIF
646 DO k=1,10
647 vsig2(asig_l2+k)=vsig(asig2+k)
648 ENDDO
649 asig_l2=asig_l2+10
650 ENDIF
651 aelm=aelm+9
652 asig2=asig2+10
653 ENDDO
654C
655 lvsig2=nels_l*7+nelc_l*10+nelt_l*2+nelp_l*8+neltg_l*10
656 iad=0
657 DO j=1,lvsig2/6
658 ircs_l=ircs_l+1
659 WRITE(ifxs_l+itask,rec=ircs_l) (vsig2(iad+k),k=1,6)
660 iad=iad+6
661 ENDDO
662 jj=lvsig2-(lvsig2/6)*6
663 IF (jj/=0) THEN
664 ircs_l=ircs_l+1
665 WRITE(ifxs_l+itask,rec=ircs_l) (vsig2(iad+k),k=1,jj)
666 ENDIF
667 DEALLOCATE(vsig, vsig2)
668 ENDIF
669 ENDDO
670 fxbipm_l(21,nfx)=nels_l
671 fxbipm_l(22,nfx)=nelc_l
672 fxbipm_l(34,nfx)=nelt_l
673 fxbipm_l(35,nfx)=nelp_l
674 fxbipm_l(23,nfx)=neltg_l
675 fxbipm_l(33,nfx)=ircs_l
676C Gravite
677 nlg=fxbipm(25,nfx)
678 agrvi=fxbipm(26,nfx)
679 fxbipm_l(26,nfx)=agrvi_l
680 iadg=0
681 iadg_l=0
682 DO ig=1,nlg
683 fxbgrvi_l(agrvi_l+iadg_l)=fxbgrvi(agrvi+iadg)
684 nno=fxbgrvi(agrvi+iadg+1)
685 nno_l=0
686 DO i=1,nno
687 ii=fxbgrvi(agrvi+iadg+i+1)
688 IF (nodlocal(ii)/=0) THEN
689 nno_l=nno_l+1
690 fxbgrvi_l(agrvi_l+iadg_l+nno_l+1)=nodlocal(ii)
691 ENDIF
692 ENDDO
693 iadg=iadg+2+nno
694 fxbgrvi_l(agrvi_l+iadg_l+1)=nno_l
695 iadg_l=iadg_l+2+nno_l
696 ENDDO
697 agrvi_l=agrvi_l+iadg_l
698C Identification du PMAIN
699 nmax=0
700 pmain=1
701 DO p=1,nspmd
702 nsn_l=0
703 DO i=1,nsn
704 ii=fxbnod(anod+i-1)
705 IF(nlocal(ii,p)==1)THEN
706 DO pp = 1, p-1
707 IF(nlocal(ii,pp)==1) THEN
708 GOTO 100
709 ENDIF
710 ENDDO
711 nsn_l=nsn_l+1
712 100 CONTINUE
713 ENDIF
714 ENDDO
715 IF(nsn_l>nmax)THEN
716 pmain=p
717 nmax=nsn_l
718 ENDIF
719 ENDDO
720 fxbipm_l(39,nfx)=pmain-1
721 fxbipm_l(40,nfx)=fxbipm(18,nfx)
722 ENDDO
723 lennod_l=lennod_l*2
724C
725 RETURN
726 END
727!||====================================================================
728!|| c_fxbody3 ../starter/source/restart/ddsplit/c_fxbody.F
729!||--- called by ------------------------------------------------------
730!|| ddsplit ../starter/source/restart/ddsplit/ddsplit.F
731!||====================================================================
732 SUBROUTINE c_fxbody3(
733 . LENGLM_L, LENCP_L , LENLM_L , LENFLS_L, LENDLS_L,
734 . LENMCD_L, LENGRVR_L, FXBIPM_L, PROC )
735C-----------------------------------------------
736C I m p l i c i t T y p e s
737C-----------------------------------------------
738#include "implicit_f.inc"
739C-----------------------------------------------
740C C o m m o n B l o c k s
741C-----------------------------------------------
742#include "com04_c.inc"
743#include "fxbcom.inc"
744C-----------------------------------------------
745C D u m m y A r g u m e n t s
746C-----------------------------------------------
747 INTEGER LENGLM_L, LENCP_L, LENLM_L, LENFLS_L, LENDLS_L,
748 . LENMCD_L, LENGRVR_L, FXBIPM_L(NBIPM,*),
749 . PROC
750C-----------------------------------------------
751C L o c a l V a r i a b l e s
752C-----------------------------------------------
753 INTEGER NTR, NFX, NMOD, NMST, NME, NLG, PMAIN
754C
755 LENGLM_L=0
756 lencp_l=0
757 lenlm_l=0
758 lenfls_l=0
759 lendls_l=0
760 lenmcd_l=0
761 lengrvr_l=0
762C
763 ntr=9
764 DO nfx=1,nfxbody
765 nmod=fxbipm_l(4,nfx)
766 nmst=fxbipm_l(5,nfx)
767 nme=fxbipm_l(17,nfx)
768 nlg=fxbipm_l(25,nfx)
769 pmain=fxbipm_l(39,nfx)
770C
771 fxbipm_l(8 ,nfx)=lenglm_l+1
772 fxbipm_l(9 ,nfx)=lencp_l+1
773 fxbipm_l(10,nfx)=lenlm_l+1
774 fxbipm_l(11,nfx)=lenfls_l+1
775 fxbipm_l(12,nfx)=lendls_l+1
776 fxbipm_l(15,nfx)=lenmcd_l+1
777 fxbipm_l(27,nfx)=lengrvr_l+1
778C
779 IF (pmain==proc) THEN
780 lenglm_l =lenglm_l +nme*(nme+1)/2
781 lencp_l =lencp_l +ntr*nmod*nme
782 lenlm_l =lenlm_l +nmod
783 lenfls_l =lenfls_l +nmst*(2*nmod-nmst+1)/2
784 lendls_l =lendls_l +nmod-nmst
785 lenmcd_l =lenmcd_l +nme*nme
786 lengrvr_l=lengrvr_l+nme*nlg+nmod*9*nlg
787 ENDIF
788 ENDDO
789C
790 RETURN
791 END
792!||====================================================================
793!|| c_fxbody4 ../starter/source/restart/ddsplit/c_fxbody.f
794!||--- called by ------------------------------------------------------
795!|| ddsplit ../starter/source/restart/ddsplit/ddsplit.F
796!||====================================================================
797 SUBROUTINE c_fxbody4(
798 . FXBGLM , FXBCPM , FXBCPS , FXBLM , FXBFLS ,
799 . FXBDLS , FXBGRVR , FXBIPM , PROC , FXBGLM_L,
800 . FXBCPM_L , FXBCPS_L, FXBLM_L , FXBFLS_L, FXBDLS_L,
801 . FXBGRVR_L, FXBIPM_L)
802C-----------------------------------------------
803C I m p l i c i t T y p e s
804C-----------------------------------------------
805#include "implicit_f.inc"
806C-----------------------------------------------
807C C o m m o n B l o c k s
808C-----------------------------------------------
809#include "com04_c.inc"
810#include "fxbcom.inc"
811C-----------------------------------------------
812C D u m m y A r g u m e n t s
813C-----------------------------------------------
814 INTEGER FXBIPM(NBIPM,*), FXBIPM_L(NBIPM,*), PROC
815 my_real
816 . FXBGLM(*), FXBCPM(*), FXBCPS(*), FXBLM(*), FXBFLS(*),
817 . FXBDLS(*), FXBGRVR(*), FXBGLM_L(*), FXBCPM_L(*),
818 . FXBCPS_L(*), FXBLM_L(*), FXBFLS_L(*), FXBDLS_L(*),
819 . FXBGRVR_L(*)
820C-----------------------------------------------
821C L o c a l V a r i a b l e s
822C-----------------------------------------------
823 INTEGER NTR, NFX, NMOD, NMST, NME, NLG, PMAIN, AGLM, ACP, ALM,
824 . AFLS, ADLS, AGRVR, AGLM_L, ACP_L, ALM_L, AFLS_L, ADLS_L,
825 . AGRVR_L, I
826C
827 ntr=9
828 DO nfx=1,nfxbody
829 nmod=fxbipm_l(4,nfx)
830 nmst=fxbipm_l(5,nfx)
831 nme=fxbipm_l(17,nfx)
832 nlg=fxbipm_l(25,nfx)
833 pmain=fxbipm_l(39,nfx)
834C
835 aglm =fxbipm(8,nfx)
836 acp =fxbipm(9,nfx)
837 alm =fxbipm(10,nfx)
838 afls =fxbipm(11,nfx)
839 adls =fxbipm(12,nfx)
840 agrvr=fxbipm(27,nfx)
841 aglm_l =fxbipm_l(8,nfx)
842 acp_l =fxbipm_l(9,nfx)
843 alm_l =fxbipm_l(10,nfx)
844 afls_l =fxbipm_l(11,nfx)
845 adls_l =fxbipm_l(12,nfx)
846 agrvr_l=fxbipm_l(27,nfx)
847C
848 IF (pmain==proc) THEN
849 DO i=1,nme*(nme+1)/2
850 fxbglm_l(aglm_l+i-1)=fxbglm(aglm+i-1)
851 ENDDO
852 DO i=1,ntr*nmod*nme
853 fxbcpm_l(acp_l+i-1)=fxbcpm(acp+i-1)
854 fxbcps_l(acp_l+i-1)=fxbcps(acp+i-1)
855 ENDDO
856 DO i=1,nmod
857 fxblm_l(alm_l+i-1)=fxblm(alm+i-1)
858 ENDDO
859 DO i=1,nmst*(2*nmod-nmst+1)/2
860 fxbfls_l(afls_l+i-1)=fxbfls(afls+i-1)
861 ENDDO
862 DO i=1,nmod-nmst
863 fxbdls_l(adls_l+i-1)=fxbdls(adls+i-1)
864 ENDDO
865 DO i=1,nme*nlg+nmod*9*nlg
866 fxbgrvr_l(agrvr_l+i-1)=fxbgrvr(agrvr+i-1)
867 ENDDO
868 ENDIF
869 ENDDO
870C
871 RETURN
872 END
subroutine c_fxbody2(fxbipm, fxbnod, nodlocal, iparg, fxbelm, fxbnod_l, fxbmod_l, fxbelm_l, fxbsig_l, proc, fxbmod, fxbsig, fxbipm_l, fxbgrvi, fxbgrvi_l, lennod_l, itask)
Definition c_fxbody.F:169
subroutine c_fxbody4(fxbglm, fxbcpm, fxbcps, fxblm, fxbfls, fxbdls, fxbgrvr, fxbipm, proc, fxbglm_l, fxbcpm_l, fxbcps_l, fxblm_l, fxbfls_l, fxbdls_l, fxbgrvr_l, fxbipm_l)
Definition c_fxbody.F:802
subroutine c_fxbody1(fxbipm, fxbnod, nodlocal, iparg, fxbelm, lennod_l, lenmod_l, lenelm_l, lensig_l, proc, lengrvi_l, fxbgrvi)
Definition c_fxbody.F:32
subroutine c_fxbody3(lenglm_l, lencp_l, lenlm_l, lenfls_l, lendls_l, lenmcd_l, lengrvr_l, fxbipm_l, proc)
Definition c_fxbody.F:735
subroutine ddsplit(p, cep, cel, igeo, mat_elem, ipm, icode, iskew, iskn, insel, ibcslag, ipart, iparts, ipartq, ipartc, ipartt, ipartp, ipartr, iparttg, detonators, ipartx, npc, ixtg, group_param_tab, ixtg6, ixs, ixs10, ixs20, ixs16, ixq, ixc, ixt, ixp, ixr, itab, itabm1, gjbufi, nale, ale_connectivity, kxx, ixx, ibcl, ibfv, las, laccelm, nnlink, lllink, iparg, igrav, lgrav, ibvel, lbvel, iactiv, factiv, kinet, ipari, nprw, lprw, iexmad, npby, lpby, ixri, nstrf, ljoint, pornod, monvol, icontact, lagbuf, fr_iad, x, d, v, vr, dr, thke, dampr, damp, ms, in, tf, pm, skew, xframe, geo, eani, bufmat, bufgeo, bufsf, brmpc, gjbufr, w, veul, fill, dfill, wb, dsav, asav, msnf, spbuf, fac, vel, fsav, fzero, xlas, accelm, fbvel, gravfac, fr_wave, failwave, parts0, elbuf, rwl, rwsav, rby, rivet, secbuf, rvolu, rconx, nloc_dmg, fvmain, libagale, lenthg, lbufmat, lbufgeo, lbufsf, lenxlas, lnom_opt, lenlas, lenvolu, npts, cne, lcne, addcne, cni2, lcni2g, addcni2, cepi2, celi2, i2nsnt, probint, ddstat, pm1shf, dd_iad, kxsp, ixsp, nod2sp, cepsp, nthwa, nairwa, nmnt, l_mul_lag1, l_mul_lag, lwaspio, ipartsp, ispcond, pm1sph, wma, eigipm, eigibuf, eigrpm, iflow, rflow, memflow, iexlnk, fasolfr, iparth, fxbipm, fxbrpm, fxbnod, fxbmod, fxbglm, fxbcpm, fxbcps, fxblm, fxbfls, fxbdls, fxbdep, fxbvit, fxbacc, fxbelm, fxbsig, fxbgrvi, fxbgrvr, iadll, lll, ibmpc, lambda, lrbagale, iskwp, nskwp, isensp, nsensp, iaccp, naccp, ipart_state, mcp, temp, unitab, intstamp, iframe, clusters, partsav, ibft, fbft, ibcv, fconv, irbe3, lrbe3, frbe3, front_rm, rbym, irbym, lcrbym, inoise, fnoise, ms0, admsms, nom_sect, ispsym, sh4tree, sh3tree, ipadmesh, ibfflux, fbfflux, sh4trim, sh3trim, padmesh, msc, mstg, inc, intg, ptg, mcpc, mcptg, rcontact, acontact, pcontact, mscnd, incnd, mssa, mstr, msp, msrt, ibcr, fradia, dmelc, dmeltg, dmels, dmeltr, dmelp, dmelrt, res_sms, isphio, lprtsph, lonfsph, vsphio, sphveln, alph, ifill, ims, irbe2, lrbe2, ms_ply, zi_ply, inod_pxfem, iel_pxfem, icodply, iskwply, addcne_pxfem, cne_pxfem, cel_pxfem, ithvar, xdp, table, celsph, icfield, lcfield, cfield, msz2, itask, diag_sms, iloadp, lloadp, loadp, inod_crkxfem, iel_crkxfem, addcne_crkxfem, cne_crkxfem, cel_crkxfem, ibufssg_io, intercep, ibordnode, iedgesh, ibordedge, linale, nodedge, iedge, cep_crkxfem, iedge_tmp, crknodiad, elbuf_tab, nom_opt, lgauge, gauge, igaup, ngaup, nodlevxf, frontb_r2r, dflow, vflow, wflow, sph2sol, sol2sph, irst, elcutc, nodenr, kxfenod2elc, enrtag, intbuf_tab, i11flag, xfem_tab, lenthgr, rthbuf, ixig3d, kxig3d, knot, ipartig3d, wige, ncrkpart, indx_crk, crklvset, crkshell, crksky, crkavx, crkedge, sensors, stack, xfem_phantom, t8, tab_ump, poin_ump, sol2sph_typ, addcsrect, csrect, drape, loads, itagnd, icnds10, addcncnd, cepcnd, celcnd, cncnd, nativ_sms, i24maxnsne, multi_fvm, segquadfr, intbuf_fric_tab, subset, igrnod, igrbric, igrquad, igrsh4n, igrsh3n, igrtruss, igrbeam, igrspring, igrpart, igrsurf, igrslin, poin_part_shell, poin_part_tri, poin_part_sol, mid_pid_shell, mid_pid_tri, mid_pid_sol, tag_nm, nindx_nm, indx_nm, tag_scratch, nindx_scrt, indx_scrt, flag_24_25, numnod_l, tag_skn, multiple_skew, igrsurf_proc, knotlocpc, knotlocel, ale_elm, size_ale_elm, pinch_data, tag_skins6, ibcscyc, lbcscyc, t_monvol, indx_s, indx_q, indx_tg, face_elm_s, face_elm_q, face_elm_tg, nbr_th_monvol, ebcs_tab, kloadpinter, loadpinter, dgaploadint, s_loadpinter, len_cep, dynain_data, drapeg, user_windows, output, interfaces, number_load_cyl, loads_per_proc, python, dpl0cld, vel0cld, names_and_titles, bcs_per_proc, constraint_struct, glob_therm, pblast)
Definition ddsplit.F:336
program starter
Definition starter.F:39