OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
ddsplit.F File Reference
#include "implicit_f.inc"
#include "com01_c.inc"
#include "com04_c.inc"
#include "com10_c.inc"
#include "com_xfem1.inc"
#include "eigcom.inc"
#include "flowcom.inc"
#include "fxbcom.inc"
#include "intstamp_c.inc"
#include "lagmult.inc"
#include "param_c.inc"
#include "scr03_c.inc"
#include "scr05_c.inc"
#include "scr15_c.inc"
#include "scr16_c.inc"
#include "scr17_c.inc"
#include "scr23_c.inc"
#include "sms_c.inc"
#include "sphcom.inc"
#include "tabsiz_c.inc"
#include "tablen_c.inc"
#include "remesh_c.inc"
#include "r2r_c.inc"
#include "inter22.inc"
#include "drape_c.inc"
#include "debug_rst.inc"

Go to the source code of this file.

Functions/Subroutines

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, rwstif_pen, sln_pen)

Function/Subroutine Documentation

◆ ddsplit()

subroutine ddsplit ( integer, dimension(:), pointer p,
integer, dimension(len_cep) cep,
integer, dimension(scel), intent(in) cel,
integer, dimension(*) igeo,
type(mat_elem_), intent(in) mat_elem,
integer, dimension(*) ipm,
integer, dimension(*) icode,
integer, dimension(*) iskew,
integer, dimension(*) iskn,
integer, dimension(*) insel,
integer, dimension(*) ibcslag,
integer, dimension(*) ipart,
integer, dimension(*) iparts,
integer, dimension(*) ipartq,
integer, dimension(*) ipartc,
integer, dimension(*) ipartt,
integer, dimension(*) ipartp,
integer, dimension(*) ipartr,
integer, dimension(*) iparttg,
type(detonators_struct_), intent(in) detonators,
integer, dimension(*) ipartx,
integer, dimension(*) npc,
integer, dimension(nixtg,*) ixtg,
type(group_param_), dimension(ngroup) group_param_tab,
integer, dimension(4,*) ixtg6,
integer, dimension(nixs,*) ixs,
integer, dimension(6,*) ixs10,
integer, dimension(12,*) ixs20,
integer, dimension(8,*) ixs16,
integer, dimension(nixq,*) ixq,
integer, dimension(*) ixc,
integer, dimension(*) ixt,
integer, dimension(*) ixp,
integer, dimension(*) ixr,
integer, dimension(*) itab,
integer, dimension(*) itabm1,
integer, dimension(*) gjbufi,
integer, dimension(*) nale,
type(t_ale_connectivity), intent(inout) ale_connectivity,
integer, dimension(*) kxx,
integer, dimension(*) ixx,
integer, dimension(*) ibcl,
integer, dimension(*) ibfv,
integer, dimension(*) las,
integer, dimension(*) laccelm,
integer, dimension(*) nnlink,
integer, dimension(*) lllink,
integer, dimension(*) iparg,
integer, dimension(*) igrav,
integer, dimension(*) lgrav,
integer, dimension(*) ibvel,
integer, dimension(*) lbvel,
integer, dimension(*) iactiv,
factiv,
integer, dimension(*) kinet,
integer, dimension(*) ipari,
integer, dimension(*) nprw,
integer, dimension(*) lprw,
integer, dimension(*) iexmad,
integer, dimension(*) npby,
integer, dimension(*) lpby,
integer, dimension(*) ixri,
integer, dimension(*) nstrf,
integer, dimension(*) ljoint,
integer, dimension(*) pornod,
integer, dimension(*) monvol,
integer, dimension(*) icontact,
integer, dimension(*) lagbuf,
integer, dimension(*) fr_iad,
x,
d,
v,
vr,
dr,
thke,
dampr,
damp,
ms,
in,
tf,
pm,
skew,
xframe,
geo,
eani,
bufmat,
double precision, dimension(*) bufgeo,
bufsf,
brmpc,
gjbufr,
w,
veul,
fill,
dfill,
wb,
dsav,
asav,
msnf,
spbuf,
fac,
vel,
fsav,
fzero,
xlas,
accelm,
fbvel,
gravfac,
fr_wave,
type (failwave_str_) failwave,
parts0,
elbuf,
rwl,
rwsav,
rby,
rivet,
secbuf,
rvolu,
rconx,
type (nlocal_str_) nloc_dmg,
integer, dimension(*) fvmain,
integer libagale,
integer lenthg,
integer lbufmat,
integer lbufgeo,
integer lbufsf,
integer lenxlas,
integer lnom_opt,
integer lenlas,
integer lenvolu,
integer npts,
integer, dimension(*) cne,
integer lcne,
integer, dimension(0:*) addcne,
integer, dimension(*) cni2,
integer lcni2g,
integer, dimension(0:*) addcni2,
integer, dimension(*) cepi2,
integer, dimension(*) celi2,
integer i2nsnt,
probint,
integer, dimension(50) ddstat,
integer pm1shf,
integer, dimension(*) dd_iad,
integer, dimension(*) kxsp,
integer, dimension(*) ixsp,
integer, dimension(*) nod2sp,
integer, dimension(*) cepsp,
integer nthwa,
integer nairwa,
integer nmnt,
integer l_mul_lag1,
integer l_mul_lag,
integer lwaspio,
integer, dimension(*) ipartsp,
integer, dimension(*) ispcond,
integer pm1sph,
wma,
integer, dimension(*) eigipm,
integer, dimension(*) eigibuf,
eigrpm,
integer, dimension(*) iflow,
rflow,
integer(kind=8), dimension(*) memflow,
integer, dimension(*) iexlnk,
integer, dimension(2,*) fasolfr,
integer, dimension(*) iparth,
integer, dimension(*) fxbipm,
fxbrpm,
integer, dimension(*) fxbnod,
fxbmod,
fxbglm,
fxbcpm,
fxbcps,
fxblm,
fxbfls,
fxbdls,
fxbdep,
fxbvit,
fxbacc,
integer, dimension(*) fxbelm,
fxbsig,
integer, dimension(*) fxbgrvi,
fxbgrvr,
integer, dimension(*) iadll,
integer, dimension(*) lll,
integer, dimension(*) ibmpc,
lambda,
integer lrbagale,
integer, dimension(*) iskwp,
integer, dimension(*) nskwp,
integer, dimension(2,*) isensp,
integer, dimension(*) nsensp,
integer, dimension(p) iaccp,
integer, dimension(*) naccp,
integer, dimension(*) ipart_state,
mcp,
temp,
type (unit_type_), intent(in) unitab,
type (intstamp_data), dimension(*) intstamp,
integer, dimension(*) iframe,
type (cluster_), dimension(ncluster) clusters,
partsav,
integer, dimension(*) ibft,
fbft,
integer, dimension(*) ibcv,
fconv,
integer, dimension(nrbe3l,*) irbe3,
integer, dimension(*) lrbe3,
frbe3,
integer, dimension(nrbym,*) front_rm,
rbym,
integer, dimension(*) irbym,
integer, dimension(*) lcrbym,
integer, dimension(*) inoise,
fnoise,
ms0,
admsms,
integer, dimension(*) nom_sect,
integer, dimension(*) ispsym,
integer, dimension(*) sh4tree,
integer, dimension(*) sh3tree,
integer, dimension(*) ipadmesh,
integer, dimension(*) ibfflux,
fbfflux,
integer, dimension(*) sh4trim,
integer, dimension(*) sh3trim,
padmesh,
msc,
mstg,
inc,
intg,
ptg,
mcpc,
mcptg,
rcontact,
acontact,
pcontact,
mscnd,
incnd,
mssa,
mstr,
msp,
msrt,
integer, dimension(*) ibcr,
fradia,
dmelc,
dmeltg,
dmels,
dmeltr,
dmelp,
dmelrt,
res_sms,
integer, dimension(*) isphio,
integer, dimension(*) lprtsph,
integer, dimension(*) lonfsph,
vsphio,
sphveln,
alph,
integer, dimension(*) ifill,
integer, dimension(*) ims,
integer, dimension(nrbe2l,*) irbe2,
integer, dimension(*) lrbe2,
ms_ply,
zi_ply,
integer, dimension(*) inod_pxfem,
integer, dimension(*) iel_pxfem,
integer, dimension(*) icodply,
integer, dimension(*) iskwply,
integer, dimension(0:*) addcne_pxfem,
integer, dimension(*) cne_pxfem,
integer, dimension(*) cel_pxfem,
integer, dimension(*) ithvar,
double precision, dimension(*) xdp,
type (ttable), dimension(*) table,
integer, dimension(numsph) celsph,
integer, dimension(*) icfield,
integer, dimension(*) lcfield,
cfield,
msz2,
integer itask,
diag_sms,
integer, dimension(*) iloadp,
integer, dimension(*) lloadp,
loadp,
integer, dimension(*) inod_crkxfem,
integer, dimension(*) iel_crkxfem,
integer, dimension(0:*) addcne_crkxfem,
integer, dimension(*) cne_crkxfem,
integer, dimension(*) cel_crkxfem,
integer, dimension(sibufssg_io) ibufssg_io,
type(intersurfp), dimension(3,ninter) intercep,
integer, dimension(*) ibordnode,
integer, dimension(*) iedgesh,
integer, dimension(*) ibordedge,
integer, dimension(*) linale,
integer, dimension(2,*) nodedge,
integer, dimension(*) iedge,
integer, dimension(*) cep_crkxfem,
integer, dimension(3,*) iedge_tmp,
integer, dimension(*) crknodiad,
type (elbuf_struct_), dimension(ngroup) elbuf_tab,
integer, dimension(lnopt1,*) nom_opt,
integer, dimension(*) lgauge,
gauge,
integer, dimension(*) igaup,
integer, dimension(*) ngaup,
integer, dimension(*) nodlevxf,
integer, dimension(sfrontb_r2r,*) frontb_r2r,
dflow,
vflow,
wflow,
integer, dimension(*) sph2sol,
integer, dimension(*) sol2sph,
integer, dimension(*) irst,
integer, dimension(2,*) elcutc,
integer, dimension(*) nodenr,
integer, dimension(*) kxfenod2elc,
integer, dimension(*) enrtag,
type (intbuf_struct_), dimension(*) intbuf_tab,
integer i11flag,
type (elbuf_struct_), dimension(ngroup,*) xfem_tab,
integer lenthgr,
rthbuf,
integer, dimension(*) ixig3d,
integer, dimension(*) kxig3d,
knot,
integer, dimension(*) ipartig3d,
wige,
integer ncrkpart,
integer, dimension(*) indx_crk,
type (xfem_lvset_), dimension(nlevmax) crklvset,
type (xfem_shell_), dimension(nlevmax) crkshell,
type (xfem_sky_), dimension(nlevmax) crksky,
type (xfem_avx_), dimension(nlevmax) crkavx,
type (xfem_edge_), dimension(nxlaymax) crkedge,
type (sensors_), intent(in) sensors,
type (stack_ply) stack,
type (xfem_phantom_), dimension(nxlaymax) xfem_phantom,
type (int8_struct_), dimension(nspmd,*) t8,
tab_ump,
integer, dimension(nummat) poin_ump,
integer, dimension(*) sol2sph_typ,
integer, dimension(*) addcsrect,
integer, dimension(*) csrect,
type (drape_), dimension (numelc_drape + numeltg_drape) drape,
type(loads_), intent(in) loads,
integer, dimension(*) itagnd,
integer, dimension(*) icnds10,
integer, dimension(0:*) addcncnd,
integer, dimension(*) cepcnd,
integer, dimension(*) celcnd,
integer, dimension(*) cncnd,
integer, dimension(*) nativ_sms,
integer i24maxnsne,
type(multi_fvm_struct) multi_fvm,
integer, dimension(2,*) segquadfr,
type(intbuf_fric_struct_), dimension(*) intbuf_fric_tab,
type (subset_), dimension(nsubs) subset,
type (group_), dimension(ngrnod) igrnod,
type (group_), dimension(ngrbric) igrbric,
type (group_), dimension(ngrquad) igrquad,
type (group_), dimension(ngrshel) igrsh4n,
type (group_), dimension(ngrsh3n) igrsh3n,
type (group_), dimension(ngrtrus) igrtruss,
type (group_), dimension(ngrbeam) igrbeam,
type (group_), dimension(ngrspri) igrspring,
type (group_), dimension(ngrpart) igrpart,
type (surf_), dimension(nsurf) igrsurf,
type (surf_), dimension(nslin) igrslin,
integer, dimension(2,npart), intent(in) poin_part_shell,
integer, dimension(2,npart), intent(in) poin_part_tri,
integer, dimension(2,npart,7), intent(in) poin_part_sol,
type(mid_pid_type), dimension(nummat), intent(in) mid_pid_shell,
type(mid_pid_type), dimension(nummat), intent(in) mid_pid_tri,
type(mid_pid_type), dimension(nummat,7), intent(in) mid_pid_sol,
integer, dimension(*) tag_nm,
integer, intent(inout) nindx_nm,
integer, dimension(*), intent(inout) indx_nm,
integer, dimension(*) tag_scratch,
integer, intent(inout) nindx_scrt,
integer, dimension(*), intent(inout) indx_scrt,
logical, intent(in) flag_24_25,
integer, intent(in) numnod_l,
integer, dimension(numskw+1), intent(inout) tag_skn,
type(plist_skew_), dimension(numskw+1), intent(inout) multiple_skew,
type(surf_), dimension(nsurf,nspmd), intent(in) igrsurf_proc,
knotlocpc,
knotlocel,
type(split_cfd_type), intent(in) ale_elm,
integer, intent(in) size_ale_elm,
type (pinch) pinch_data,
integer, dimension(*) tag_skins6,
integer, dimension(*) ibcscyc,
integer, dimension(*) lbcscyc,
type(monvol_struct_), dimension(nvolu), intent(in) t_monvol,
integer, dimension(*), intent(in) indx_s,
integer, dimension(*), intent(in) indx_q,
integer, dimension(*), intent(in) indx_tg,
integer, dimension(6*numels,*), intent(in) face_elm_s,
integer, dimension(4*numelq,*), intent(in) face_elm_q,
integer, dimension(3*numeltg,*), intent(in) face_elm_tg,
integer nbr_th_monvol,
type(t_ebcs_tab), intent(inout) ebcs_tab,
integer, dimension(ninter+1), intent(in) kloadpinter,
integer, dimension(s_loadpinter), intent(in) loadpinter,
dimension(s_loadpinter ), intent(in) dgaploadint,
integer, intent(in) s_loadpinter,
integer, intent(in) len_cep,
type (dynain_database), intent(inout) dynain_data,
type (drapeg_) drapeg,
type(user_windows_), intent(in) user_windows,
type (output_), intent(in) output,
type (interfaces_), intent(in) interfaces,
integer, intent(in) number_load_cyl,
type(loads_), intent(inout) loads_per_proc,
type(python_), intent(inout) python,
dimension(6,nconld), intent(in) dpl0cld,
dimension(6,nconld), intent(in) vel0cld,
type(names_and_titles_), intent(in) names_and_titles,
type(bcs_struct_), intent(inout) bcs_per_proc,
type(constraint_), intent(inout) constraint_struct,
type(glob_therm_), intent(inout) glob_therm,
type(pblast_), intent(inout) pblast,
intent(in) rwstif_pen,
integer, intent(in) sln_pen )
Parameters
[in]len_cepsize of CEP
[in]celconnectivity global element id --> local element
[in]detonatorsdetonators data structure
[in]names_and_titlesNAMES_AND_TITLES host the input deck names and titles for outputs
[in,out]constraint_structconstraint structure for the splitting

Definition at line 242 of file ddsplit.F.

337C-----------------------------------------------
338C M o d u l e s
339C-----------------------------------------------
340 USE my_alloc_mod
341 USE unitab_mod
342 USE dsgraph_mod
343 USE fvbag_mod
344 USE intstamp_mod
345 USE table_mod
346 USE mat_elem_mod
347 USE message_mod
348 USE front_mod
349 USE cluster_mod
350 USE intbufdef_mod
351 USE xfem2def_mod
352 USE stack_mod
353 USE alefvm_mod
354 USE int8_mod
356 USE multi_fvm_mod
357 USE stack_var_mod
358 USE intbuf_fric_mod
359 USE pblast_mod
360 USE groupdef_mod
361 USE mid_pid_mod
362 USE failwave_mod
364 USE skew_mod
365 USE split_cfd_mod
366 USE pinchtype_mod
367 USE inoutfile_mod
370 USE drape_mod
371 USE sensor_mod
372 USE ale_ebcs_mod
373 USE ebcs_mod
374 USE joint_mod
375 USE seatbelt_mod
376 USE outmax_mod
377 USE loads_mod
378 USE state_mod
380 USE ale_mod
381 USE output_mod
382 USE interfaces_mod
383 USE submodel_mod , ONLY : nsubmod
384 USE python_funct_mod
386 USE bcs_mod , ONLY : bcs_struct_
387 use constraint_mod , only : constraint_
388 use c_inivell_mod , only : c_inivell
389 use w_inivel_str_mod , only : w_inivel_str
390 use glob_therm_mod
391 use write_ale_grid_mod, only : write_ale_grid
392 use pblast_mod
394 use checksum_starter_option_mod, only : checksum_write_starter_restart
395 use w_bcs_proc_mod , only : w_bcs_proc
396 use element_mod , only : nixs,nixq,nixc,nixp,nixt,nixr,nixtg
397
398C-----------------------------------------------
399C I m p l i c i t T y p e s
400C-----------------------------------------------
401#include "implicit_f.inc"
402C-----------------------------------------------
403C C o m m o n B l o c k s
404C-----------------------------------------------
405#include "com01_c.inc"
406#include "com04_c.inc"
407#include "com10_c.inc"
408#include "com_xfem1.inc"
409#include "eigcom.inc"
410#include "flowcom.inc"
411#include "fxbcom.inc"
412#include "intstamp_c.inc"
413#include "lagmult.inc"
414#include "param_c.inc"
415#include "scr03_c.inc"
416#include "scr05_c.inc"
417#include "scr15_c.inc"
418#include "scr16_c.inc"
419#include "scr17_c.inc"
420#include "scr23_c.inc"
421#include "sms_c.inc"
422#include "sphcom.inc"
423#include "tabsiz_c.inc"
424#include "tablen_c.inc"
425#include "remesh_c.inc"
426#include "r2r_c.inc"
427#include "inter22.inc"
428#include "drape_c.inc"
429#include "debug_rst.inc"
430C-----------------------------------------------
431 TYPE intermasurfep
432 INTEGER, DIMENSION(:), POINTER :: P
433 END TYPE intermasurfep
434 TYPE (DYNAIN_DATABASE), INTENT(INOUT) :: DYNAIN_DATA
435 TYPE (OUTPUT_),INTENT(IN) :: OUTPUT
436 TYPE (INTERFACES_) ,INTENT(IN) :: INTERFACES
437 TYPE(PYTHON_), INTENT(INOUT) :: PYTHON
438 TYPE(pblast_), INTENT(INOUT) :: PBLAST
439C-----------------------------------------------
440C D u m m y A r g u m e n t s
441C-----------------------------------------------
442 TYPE (UNIT_TYPE_),INTENT(IN) ::UNITAB
443 INTEGER, INTENT(IN) :: LEN_CEP !< size of CEP
444 INTEGER, DIMENSION(SCEL), INTENT(IN) :: CEL !< connectivity global element id --> local element
445 TYPE(DETONATORS_STRUCT_),INTENT(IN) :: DETONATORS !< detonators data structure
446 INTEGER P,
447 . LIBAGALE, LENTHG, LENLAS, NPTS,LEN,
448 . LBUFMAT, LBUFGEO, LBUFSF, LENXLAS, LNOM_OPT,
449 . LENVOLU, NTHWA, NAIRWA, NMNT, I2NSNT,
450 . L_MUL_LAG1, L_MUL_LAG, LWASPIO,PM1SPH,
451 . LCNI2G, PM1SHF, I11FLAG,LENTHGR,NCRKPART,
452 . CEP(LEN_CEP),IGEO(*), IPM(*),
453 . ICODE(*),ISKEW(*),ISKN(*),INSEL(*),IBCSLAG(*),
454 . IPART(*),IPARTS(*),IPARTQ(*),IPARTC(*),IPARTT(*),
455 . IPARTP(*),IPARTR(*),IPARTTG(*),IPARTX(*),
456 . NPC(*),IXTG(NIXTG,*),IXTG6(4,*),
457 . IXS(NIXS,*),IXS10(6,*),IXS20(12,*),IXS16(8,*),
458 . IXQ(NIXQ,*),IXC(*),IXT(*),IXP(*),IXR(*),
459 . ITAB(*),ITABM1(*),GJBUFI(*),
460 . NALE(*),IEXMAD(*),KXX(*),IXX(*),IBCL(*),IBFV(*),LAS(*),
461 . LACCELM(*),NNLINK(*),LLLINK(*),
462 . IPARG(*),IGRAV(*),LGRAV(*),
463 . IBVEL(*),LBVEL(*),IACTIV(*),KINET(*),
464 . IPARI(*),NPRW(*),LPRW(*),
465 . NPBY(*),LPBY(*), IEXLNK(*),
466 . IXRI(*),NSTRF(*),LJOINT(*),PORNOD(*),MONVOL(*),FVMAIN(*),
467 . LAGBUF(*), FR_IAD(*),
468 . ICONTACT(*), IPARTSP(*), ISPCOND(*),
469 . DDSTAT(50), CNE(*), LCNE, ADDCNE(0:*),
470 . CNI2(*), ADDCNI2(0:*), CEPI2(*), CELI2(*),
471 . DD_IAD(*),
472 . KXSP(*), IXSP(*), NOD2SP(*), CEPSP(*),
473 . EIGIPM(*), EIGIBUF(*), IFLOW(*), FASOLFR(2,*),
474 . IPARTH(*),
475 . FXBIPM(*), FXBNOD(*),
476 . FXBELM(*), FXBGRVI(*), IADLL(*), LLL(*),IBMPC(*),LRBAGALE,
477 . ISKWP(*), NSKWP(*), ISENSP(2,*), NSENSP(*),
478 . IACCP(P), NACCP(*), IPART_STATE(*), IFRAME(*),
479 . IBFT(*),IBCV(*),IRBE3(NRBE3L,*),LRBE3(*),
480 . IRBYM(*) ,LCRBYM(*),FRONT_RM(NRBYM,*),INOISE(*),
481 . NOM_SECT(*), ISPSYM(*), SH4TREE(*), SH3TREE(*),
482 . IPADMESH(*), SH4TRIM(*), SH3TRIM(*), IBCR(*), IBFFLUX(*),
483 . ISPHIO(*), LPRTSPH(*), LONFSPH(*), IFILL(*), IMS(*),
484 . IRBE2(NRBE2L,*),LRBE2(*),INOD_PXFEM(*) ,
485 . IEL_PXFEM(*) ,ICODPLY(*),ISKWPLY(*) ,ADDCNE_PXFEM(0:*),
486 . CNE_PXFEM(*),CEL_PXFEM(*),ITHVAR(*), CELSPH(NUMSPH),
487 . ICFIELD(*),LCFIELD(*),ILOADP(*),LLOADP(*),INOD_CRKXFEM(*),
488 . IEL_CRKXFEM(*),ADDCNE_CRKXFEM(0:*),CNE_CRKXFEM(*),
489 . CEL_CRKXFEM(*),IBORDNODE(*),IEDGESH(*),IBORDEDGE(*),
490 . LINALE(*),NODEDGE(2,*),IEDGE(*),CEP_CRKXFEM(*),
491 . IEDGE_TMP(3,*),CRKNODIAD(*), LGAUGE(*), IGAUP(*),NGAUP(*),
492 . NODLEVXF(*),FRONTB_R2R(SFRONTB_R2R,*),
493 . SPH2SOL(*), SOL2SPH(*), IRST(*),ELCUTC(2,*),NODENR(*),
494 . KXFENOD2ELC(*),ENRTAG(*),IXIG3D(*),KXIG3D(*),
495 . IPARTIG3D(*),INDX_CRK(*),
496 . POIN_UMP(NUMMAT),SOL2SPH_TYP(*), ADDCSRECT(*), CSRECT(*),
497 . ITAGND(*),ICNDS10(*),
498 . ADDCNCND(0:*), CEPCND(*), CELCND(*),CNCND(*),NATIV_SMS(*),
499 . I24MAXNSNE,SEGQUADFR(2,*),TAG_SKINS6(*),IBCSCYC(*),LBCSCYC(*)
500 INTEGER, INTENT(IN) :: S_LOADPINTER
501 INTEGER, INTENT(IN) :: KLOADPINTER(NINTER+1) ,LOADPINTER(S_LOADPINTER)
502 my_real , INTENT(IN) :: dgaploadint(s_loadpinter )
503 INTEGER NOM_OPT(LNOPT1,*)
504 INTEGER(KIND=8) :: MEMFLOW(*)
505 INTEGER, DIMENSION(2,NPART), INTENT(IN) :: POIN_PART_SHELL,POIN_PART_TRI
506 INTEGER, DIMENSION(2,NPART,7), INTENT(IN) :: POIN_PART_SOL
507 INTEGER :: NBR_TH_MONVOL ! number of /TH/MONV
508
509 double precision
510 . bufgeo(*)
511 my_real
512 . x(*), d(*), v(*), vr(*), dr(*),
513 . thke(*), dampr(*), damp(*), ms(*), in(*),
514 . tf(*), pm(*), skew(*), xframe(*), geo(*),
515 . eani(*), bufmat(*), bufsf(*), brmpc(*),
516 . gjbufr(*), w(*), veul(*), fill(*), dfill(*),
517 . wb(*), asav(*), dsav(*), msnf(*),
518 . spbuf(*), fac(*), vel(*), factiv(*),
519 . fsav(*), fzero(*), xlas(*), accelm(*),
520 . fbvel(*), gravfac(*), fr_wave(*), elbuf(*),
521 . rwl(*), rwsav(*), rby(*), rivet(*),
522 . secbuf(*), rvolu(*), parts0(*), rconx(*),
523 . wma(*), eigrpm(*), rflow(*),
524 . probint, fxbrpm(*), fxbmod(*), fxbglm(*), fxbcpm(*),
525 . fxbcps(*), fxblm(*), fxbfls(*), fxbdls(*), fxbdep(*),
526 . fxbvit(*), fxbacc(*), fxbsig(*), fxbgrvr(*), lambda(*),
527 . mcp(*), temp(*), partsav(*),fbft(*), fconv(*),
528 . frbe3(*), rbym(*),fnoise(*), ms0(*), admsms(*),
529 . padmesh(*) ,msc(*), mstg(*),
530 . inc(*), intg(*), ptg(*), mcpc(*), mcptg(*),
531 . rcontact(*), acontact(*), pcontact(*), mscnd(*), incnd(*),
532 . mssa(*), mstr(*), msp(*), msrt(*), fradia(*), fbfflux(*),
533 . dmelc(*), dmeltg(*), dmels(*), dmeltr(*), dmelp(*),
534 . dmelrt(*), res_sms(*), vsphio(*), sphveln(*), alph(*),
535 . ms_ply(*),zi_ply(*),cfield(*),msz2(*),
536 . diag_sms(*),loadp(*),gauge(*),dflow(*),vflow(*),wflow(*),
537 . rthbuf(*),knot(*),wige(*),tab_ump(7,taille),
538 . knotlocpc(*),knotlocel(*)
539 my_real, INTENT(IN) :: dpl0cld(6,nconld),vel0cld(6,nconld)
540 TYPE (INTSTAMP_DATA) INTSTAMP(*)
541 TYPE (TTABLE) TABLE(*)
542 TYPE (INTBUF_STRUCT_) INTBUF_TAB(*)
543 TYPE (ELBUF_STRUCT_), DIMENSION(NGROUP) :: ELBUF_TAB
544 TYPE (ELBUF_STRUCT_), DIMENSION(NGROUP,*) :: XFEM_TAB
545 TYPE (CLUSTER_) , DIMENSION(NCLUSTER) :: CLUSTERS
546 TYPE (XFEM_SHELL_) , DIMENSION(NLEVMAX) :: CRKSHELL
547 TYPE (XFEM_LVSET_) , DIMENSION(NLEVMAX) :: CRKLVSET
548 TYPE (XFEM_SKY_) , DIMENSION(NLEVMAX) :: CRKSKY
549 TYPE (XFEM_AVX_) , DIMENSION(NLEVMAX) :: CRKAVX
550 TYPE (XFEM_EDGE_) , DIMENSION(NXLAYMAX) :: CRKEDGE
551 TYPE (XFEM_PHANTOM_), DIMENSION(NXLAYMAX) :: XFEM_PHANTOM
552 TYPE (STACK_PLY) :: STACK
553 TYPE (INT8_STRUCT_) :: T8(NSPMD,*)
554 TYPE(MULTI_FVM_STRUCT) :: MULTI_FVM
555 TYPE(INTBUF_FRIC_STRUCT_) :: INTBUF_FRIC_TAB(*)
556 TYPE(MID_PID_TYPE), DIMENSION(NUMMAT), INTENT(IN) :: MID_PID_SHELL,MID_PID_TRI
557 TYPE(MID_PID_TYPE), DIMENSION(NUMMAT,7), INTENT(IN) :: MID_PID_SOL
558 TYPE (FAILWAVE_STR_) :: FAILWAVE
559 TYPE (NLOCAL_STR_) :: NLOC_DMG
560 TYPE (DRAPE_) :: DRAPE (NUMELC_DRAPE + NUMELTG_DRAPE)
561 TYPE (SENSORS_) ,INTENT(IN) :: SENSORS
562 TYPE (DRAPEG_) :: DRAPEG
563C-----------------------------------------------
564 TYPE (SUBSET_) , DIMENSION(NSUBS) :: SUBSET
565 TYPE (GROUP_) , DIMENSION(NGRNOD) :: IGRNOD
566 TYPE (GROUP_) , DIMENSION(NGRBRIC) :: IGRBRIC
567 TYPE (GROUP_) , DIMENSION(NGRQUAD) :: IGRQUAD
568 TYPE (GROUP_) , DIMENSION(NGRSHEL) :: IGRSH4N
569 TYPE (GROUP_) , DIMENSION(NGRSH3N) :: IGRSH3N
570 TYPE (GROUP_) , DIMENSION(NGRTRUS) :: IGRTRUSS
571 TYPE (GROUP_) , DIMENSION(NGRBEAM) :: IGRBEAM
572 TYPE (GROUP_) , DIMENSION(NGRSPRI) :: IGRSPRING
573 TYPE (GROUP_) , DIMENSION(NGRPART) :: IGRPART
574 TYPE (SURF_) , DIMENSION(NSURF) :: IGRSURF
575 TYPE (SURF_) , DIMENSION(NSLIN) :: IGRSLIN
576 TYPE (PINCH) :: PINCH_DATA
577
578 INTEGER,INTENT(IN) :: SLN_PEN
579 my_real, DIMENSION(SLN_PEN), INTENT(IN ) :: rwstif_pen
580 LOGICAL, INTENT(IN) :: FLAG_24_25
581 INTEGER, INTENT(IN) :: NUMNOD_L
582 INTEGER, INTENT(INOUT) :: NINDX_NM,NINDX_SCRT
583 INTEGER, DIMENSION(*), INTENT(INOUT) :: INDX_NM,INDX_SCRT
584 INTEGER, DIMENSION(*) :: TAG_NM,TAG_SCRATCH
585! -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-**-*-*-*-*-*-*-*-*-*-*-*-*
586! INDX_XXX : size = NUMNOD
587! index of non-zero TAG_XXX value
588! used for optimize the initialization
589! of TAG_XXX array (XXX = NM or SCRT for SCRATCH)
590! allocated array in lectur and threadprivate array
591! NINDX_XXX : number of non-zero TAG_XXX value
592! TAG_XXX : size = NUMNOD
593! array used to tag an element for
594! a given interface ; allocated in lectur
595! allocated array in lectur and threadprivate array
596! FLAG_24_25 : logical, flag for interface 24 or 25
597! NUMNOD_L : integer, number of local element
598! -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-**-*-*-*-*-*-*-*-*-*-*-*-*
599 INTEGER, DIMENSION(NUMSKW+1), INTENT(INOUT) :: TAG_SKN
600 TYPE(PLIST_SKEW_), DIMENSION(NUMSKW+1), INTENT(INOUT) :: MULTIPLE_SKEW
601! -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-**-*-*-*-*-*-*-*-*-*-*-*-*
602! TAG_SKN : integer ; dimension=NUMSKW+1
603! tag array --> tag the i SKEW if a SPRING uses it
604! tag array=0 --> the SKEW is not used by a SPRING
605! tag array=1 --> the SKEW is used by one SPRING
606! tag array>1 --> the SKEW is used by several SPRING
607! MULTIPLE_SKEW : SKEW_TYPE ; dimension=NUMSKW+1
608! MULTIPLE_SKEW(I)%PLIST(:) is a list of processor
609! where the SKEW is stuck
610! -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-**-*-*-*-*-*-*-*-*-*-*-*-*
611 TYPE(SURF_), DIMENSION(NSURF,NSPMD), INTENT(IN) :: IGRSURF_PROC
612! -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-**-*-*-*-*-*-*-*-*-*-*-*-*
613! IGRSURF_PROC : SURF_ ; dimension=NSURF*NSPMD
614! local surface property array (=IGRSURF for each proc)
615! %ELTYP --> type of element (shell, triangle...)
616! %ELEM --> element id
617! %NSEG --> total element number
618! -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-**-*-*-*-*-*-*-*-*-*-*-*-*
619 INTEGER, INTENT(IN) :: SIZE_ALE_ELM
620 TYPE(split_cfd_type), INTENT(IN) :: ALE_ELM
621! -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-**-*-*-*-*-*-*-*-*-*-*-*-*
622! SIZE_ALE_ELM : integer ; dimension=NSPMD ; size of ALE_ELM%SOL_ID array
623! ALE_ELM : split_cfd_type ; dimension=NSPMD ; solid element ID used
624! during the domain splitting (ALE part)
625! -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-**-*-*-*-*-*-*-*-*-*-*-*-*
626 TYPE(MONVOL_STRUCT_), DIMENSION(NVOLU), INTENT(IN) :: T_MONVOL
627
628
629 INTEGER, DIMENSION(*), INTENT(in) :: INDX_S
630 INTEGER, DIMENSION(*), INTENT(in) :: INDX_Q
631 INTEGER, DIMENSION(*), INTENT(in) :: INDX_TG
632 INTEGER, DIMENSION(6*NUMELS,*), INTENT(in) :: FACE_ELM_S
633 INTEGER, DIMENSION(4*NUMELQ,*), INTENT(in) :: FACE_ELM_Q
634 INTEGER, DIMENSION(3*NUMELTG,*), INTENT(in) :: FACE_ELM_TG
635! -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-**-*-*-*-*-*-*-*-*-*-*-*-*
636! INDX_xxx : integer ; dimension=NUMELxxx ; index for the surface
637! of the remote connected element
638! Face_elm_xxx: Integer;Dimension = (6/4/3*NUMELXXX, 2);surface
639! of the remote connected element
640! -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-**-*-*-*-*-*-*-*-*-*-*-*-*
641 TYPE(t_ebcs_tab), INTENT(INOUT) :: EBCS_TAB
642 TYPE(USER_WINDOWS_),INTENT(IN) :: USER_WINDOWS
643
644 INTEGER, INTENT(IN) :: NUMBER_LOAD_CYL ! sum of load segment number
645 TYPE(LOADS_),INTENT(IN) :: LOADS ! initial structure of load cyl
646 TYPE(LOADS_),INTENT(INOUT) :: LOADS_PER_PROC ! structure of load cyl for for the current proc P
647 TYPE(BCS_STRUCT_),INTENT(INOUT) :: BCS_PER_PROC
648 TYPE(NAMES_AND_TITLES_),INTENT(IN) :: NAMES_AND_TITLES !< NAMES_AND_TITLES host the input deck names and titles for outputs
649 type(constraint_), intent(inout) :: constraint_struct !< constraint structure for the splitting
650 TYPE(INTERSURFP) :: INTERCEP(3,NINTER)
651 TYPE(glob_therm_) ,intent(inout) :: glob_therm
652C-----------------------------------------------
653C L o c a l V a r i a b l e s
654C-----------------------------------------------
655 INTEGER,DIMENSION(:,:),ALLOCATABLE:: DD_RBYM2
656 INTEGER,DIMENSION(:,:),ALLOCATABLE:: DD_RBY2
657 INTEGER I, IR_, IM,IFILNAM(2148),IFILNAM2(2148),
658 . NUMELS_L,NUMELS8_L,NUMELS10_L,NUMELS20_L,NUMELS16_L,
659 . NUMELQ_L ,NUMELC_L, NCONLD_L,NSKYLL_L,
660 . NUMELT_L,NUMELP_L,NUMELR_L,NUMELTG_L,
661 . NUMELTG3,NUMELTG3_L,NUMELTG6_L,NUMELX_L,NUMPOR_L,
662 . NSVOIS,NQVOIS,NTGVOIS,NE_NSVOIS,NE_NQVOIS,NE_NTGVOIS,NRCVVOIS,NSNDVOIS,ILAW11,LJOINT_L,
663 . NSEGFL_L,NGROUP_L, NSTRF_L,
664 . NSLAW_L, NESLAW_L, LWSAV_L, NSLARB_L,
665 . LBUFEL_L, LENWA_L, INTBAG_L, ISUMNX_L, NUMEL_L,
666 . NLLINK_L, LLGRAV_L, LLBVEL_L, NFXVEL_L, OFF1,
667 . OFF, SHF, IUN, NUMEL, ISP0, NBDDACC, NBDDKIN, NBDDNOD,
668 . NBDDPROC, NBDDBOUN, NBDDNRB, NRBYKIN_L, NSKYRW_L,
669 . NSKYRBK_L, LENTHGT, NBDDI2M, NNMV_L, NNMVC_L, NBDDNCJ,
670 . LCNE_L, NISKY0_L, LCNI2_L, I2NSN_L, NISKYI2_L, NIR,
671 . NSKYRBM_L,NBDDNRBM, LSECBUF_L, NNODT_L, NNODL_L,
672 . NMADSH4_L, NMADSH3_L,NMADSOL_L,NMADNOD_L,MADCL_NMADNOD_L,
673 . IMAXIMP_L, I2NSN25_L,
674 . NUMSPH_L, LWASPH_L, NBI18_L, NSKYI18_L,
675 . NSNT_L,NMNT_L,NSNT2_L,NMNT2_L,
676 . NFASOLFR_L, NLAGF_L, PROC, INUM, IDDL, ISKW,
677 . LEN_IA, LEN_AM, I_EVAL,R_EVAL,LSKYI, NCMAX,
678 . NERVOIS, NESVOIS,NE_NERVOIS, NE_NESVOIS, NBCFD, NUMEL_L2,
679 . DD_RBM2(3,NIBVEL),
680 . EIGIPM_L(NEIPM,NEIG), LEIBUF_L, EIGIBUF_L(LEIBUF),
681 . IFLOW_L(LIFLOW), DD_LAGF(3,NSPMD+1),MY_ILEN,MY_RLEN,
682 . SKIPPON_L,LLRBE3_L,NSKYRBE3_L,
683 . NRBE3_L,NBDDRBE3M,NSLARBM_L,NSKYRBMK,NRBE3PEN_L,
684 . NRBYMKIN_L ,NBDDNRBYM,NSKTRBMK_L,NRBYMK_L,
685 . NSKYRBMK_L, LAG_SEC,
686 . NRBE2_L,LLRBE2_L,NBDDRBE2,NUMELCPXFE_L,NUMNODPXFE_L,
687 . ITAG_PXFEM(NPLYXFE),INDEX_PXFEM(NPLYXFE),
688 . LCNEPXFEM_L,LLCFIELD_L,
689 . ITASK,LLLOADP_L,NUMELCRKXFE_L,NUMNODCRKXFE_L,LCNECRKXFEM_L,
690 . NUMELCCRKXFE_L,NUMELTGCRKXFE_L,
691 . NUMEDGES_L,NBDDEDGE_L,
692 . SDD_R2R_ELEM,NOD_XFE_L,
693 . NSPHSOL_L,FIRST_SPHSOL_L,NCLUSTER_L,IXEL,FLAG_ALLOCATE,
694 . FLAG_XFEM,NUMELIG3D_L,ISUMNIG3D_L, NUMNOR_L, NBDDNORT_L,
695 . NBDDNOR_MAX_L, NBCCFR25_L, NBCCNOR_L, NBDDEDGT_L, NBDDEDG_MAX_L, NRTMX25_L,
696 . NBDDCNDM,NS10E_L,LCNCND_L,
697 . NSEGQUADFR_L ,LINTFRIC, SIZ,LENIGRNOD_L,
698 . LENIGRBRIC_L,LENIGRQUAD_L,LENIGRSH4N_L,
699 . LENIGRTRUS_L,LENIGRBEAM_L,LENIGRSPRI_L,
700 . LENIGRSH3N_L,LENISURF_L,LENISLIN_L,NBCSCYC_L,LLBCSCYC_L,NS_DIFF,
701 . N_SLIPRING_L,N_RETRACTOR_L,N_ANCHOR_REMOTE_L,N_ANCHOR_REMOTE_SEND_L,
702 . N_SEATBELT_L,N_SEATBELT_2D_L,NUMSH4N_L,NUMSH3N_L,NCLOAD_L,NPLOAD_L,
703 . NDAMP_VREL_L,IDAMP_VREL_L(NDAMP),NINIVELT_L,LRW_PEN_L,NRW_PEN_L
704 INTEGER LWAMP_L !< Size of Working area in Engine. Need for SPH
705 INTEGER LWANMP_L !< Size of Working area in Engine. Need for SPH
706 INTEGER NCONV_L,NFXTEMP_L,NRADIA_L,NFXFLUX_L
707 INTEGER , DIMENSION(:), ALLOCATABLE:: NUMLOCGROUP,NUMLOCCLUSTER
708 INTEGER, DIMENSION(:),ALLOCATABLE :: NODLOCAL,IEPXFEM_L,INPXFEM_L,
709 . IELXFEMC_L,INCRKXFEM_L,ELCUTC_L,ELCUTTG_L,NODENR_L,
710 . KXFENOD2ELC_L,ENRTAG_L,
711 . IELXFEMTG_L,INDEX_CRKXFEM,NODLEVXF_L, NODLOCAL_MGM
712 INTEGER, DIMENSION(:),ALLOCATABLE :: NODGLOB, IDGLOB_L, UIDGLOB_L,
713 . IXSF, IXQF, IXTGF, ITABI2M, ITABRBE3M, ITABRBE2M
714 ! for parith/on + FVM solver : ID_GLOBAL_VOIS = user id ; FACE_VOIS= id of the remote connected element
715 INTEGER,DIMENSION(:,:),ALLOCATABLE :: IPARI_L
716 INTEGER, DIMENSION(:), ALLOCATABLE :: ID_GLOBAL_VOIS,FACE_VOIS
717 INTEGER, DIMENSION(:),ALLOCATABLE :: ITABCNDM
718 INTEGER LENNOD_L, LENMOD_L, LENELM_L, LENSIG_L,
719 . FXBIPM_L(NBIPM,NFXBODY), LENGLM_L, LENCP_L, LENLM_L,
720 . LENFLS_L, LENDLS_L, LENMCD_L, LENGRVI_L, LENGRVR_L
721 INTEGER LINTSTAMP, LTABLE
722 INTEGER, DIMENSION(:), ALLOCATABLE :: FXBNOD_L, FXBELM_L,
723 . FXBGRVI_L, MONVOL_L
724 my_real
725 . , DIMENSION(:), ALLOCATABLE :: fxbmod_l, fxbsig_l,
726 . fxbglm_l, fxbcpm_l,
727 . fxbcps_l, fxblm_l,
728 . fxbfls_l, fxbdls_l,
729 . fxbgrvr_l
730 my_real,DIMENSION(:),ALLOCATABLE::rdpartsav
731 my_real
732 . , DIMENSION(:), ALLOCATABLE :: forneqs
733
734 CHARACTER*100 FILNAM
735 CHARACTER*4 PROCNAM,CHRUN
736 INTEGER NUM16SHIFT_L,SPHSHIFT_L
737 INTEGER, DIMENSION(:), ALLOCATABLE :: ISKWP_L
738C SPH Modif Structures
739 INTEGER ,DIMENSION(:,:), ALLOCATABLE :: SPH_SEND_ARR,SPH_RECV_ARR
740 INTEGER ,DIMENSION(:), ALLOCATABLE :: SPHLOCAL
741 INTEGER RECV_COUNT(NSPMD),SEND_COUNT(NSPMD)
742 INTEGER, DIMENSION(:), ALLOCATABLE :: IEDGECRK_L,
743 . IBORDEDGE_L,NODEDGE_L,IEDGESH4_L,IEDGESH3_L,TAGEDGE,
744 . IEDGE_L,EDGELOCAL,EDGEGLOBAL
745
746c SPH inlet spmd structure
747 INTEGER SLONFSPH_L,SLPRTSPH_L,SSPHVELN_L
748 INTEGER IBUFSSG_IO(SIBUFSSG_IO)
749 my_real, DIMENSION(:), ALLOCATABLE :: rbufgeo
750 my_real
751 . msndp(nspmd)
752 INTEGER :: LEN_TMP_NAME
753 CHARACTER(len=4096) :: TMP_NAME
754C-----------------------------------------------
755C file structure v44 to modify
756C-----------------------------------------------
757 INTEGER LHEADER,LVARINT,LVARREA,LMXVINT,LMXVREA,LEN_G,LEN_M,
758 . LEN_S,LEN_ADM,LEN_IG,LEN_PM
759 parameter(lheader=15)
760 parameter(lmxvint=4000)
761 parameter(lmxvrea=1000+30*maxlaw+30)
762 INTEGER TABHEAD(LHEADER),TABVINT(LMXVINT)
763 my_real
764 . tabvrea(lmxvrea)
765 DOUBLE PRECISION XDP(*)
766
767 INTEGER, DIMENSION(:),ALLOCATABLE :: NODGLOBXFE
768
769 TYPE(INTBUF_STRUCT_),DIMENSION(:),ALLOCATABLE :: INTBUF_TAB_L
770 TYPE(MAT_ELEM_) ,INTENT(IN) :: MAT_ELEM
771 TYPE(GROUP_PARAM_) ,DIMENSION(NGROUP) :: GROUP_PARAM_TAB
772C-----------------------------------------------
773C For Meshgems
774C-----------------------------------------------
775 INTEGER :: MAX_ID
776C-----------------------------------------------
777C EBCS
778C-----------------------------------------------
779 INTEGER :: IEBCSLGTH, IEBCS_NELEM_L(NEBCS), IEBCS_TYPE(NEBCS)
780 INTEGER, DIMENSION(:), ALLOCATABLE ::
781 . IEBCS_LISTELEM_L,
782 . IEBCS_LISTFAC_L
783 my_real, DIMENSION(:), ALLOCATABLE :: iebcs_listdp0_l
784C-----------------------------------------------
785C Multifluid law
786C-----------------------------------------------
787 my_real, DIMENSION(:,:), ALLOCATABLE :: multi_fvm_vel_l
788C-----------------------------------------------
789C Python interface
790C-----------------------------------------------
791 INTEGER, DIMENSION(:), ALLOCATABLE :: BUFFER
792 INTEGER :: BUFFER_SIZE
793C-----------------------------------------------
794C FILE SIZE
795C-----------------------------------------------
796 INTEGER (KIND=8) :: FILE_SIZE
797 real(kind=8) :: secs
798C
799 INTEGER NPINCH_L
800 TYPE(t_ale_connectivity), INTENT(INOUT) :: ALE_CONNECTIVITY
801 INTEGER, DIMENSION(:), ALLOCATABLE :: ELEMID_L
802 INTEGER, DIMENSION(:), ALLOCATABLE :: NE_LERCVOIS !(NE_NERVOIS)
803 INTEGER, DIMENSION(:), ALLOCATABLE :: NE_LESDVOIS !(NE_NESVOIS)
804 INTEGER :: II, JJ, NEBCS_FVM, IPT, ITMP
805 INTEGER :: NEBCS_PARALLEL,OTHER_NEBCS
806 INTEGER, DIMENSION(NEBCS) :: LIST_EBCS_PARALLEL,LIST_OTHER_EBCS
807 TYPE(t_ebcs_tab) :: EBCS_TAB_LOC,EBCS_TAB_LOC_2
808 TYPE(t_connectivity_ext1) :: ee_connect_l
809 LOGICAL :: IS_EBCS_PARALLEL
810 INTEGER :: ISHADOW !< shadowing option for detonators (Eikonal equation solver)
811C-----------------------------------------------
812 TYPE(SEATBELT_REMOTE_NODES_STRUCT) ANCHOR_REMOTE_L,ANCHOR_REMOTE_SEND_L
813C-----------------------------------------------
814 INTEGER, DIMENSION(LTITLE) :: ITITLE !< Store the title in Integer to be written in Restart files
815C=======================================================================
816C ALLOCATION
817C ----------
818 IF (multi_fvm%IS_USED) THEN
819 ALLOCATE(multi_fvm_vel_l(3, numels + numelq + numeltg))
820 ELSE
821 ALLOCATE(multi_fvm_vel_l(1,1))
822 ENDIF
823
824
825 ALLOCATE(nodlocal(numnod))
826
827 IF (tetramesher_used) ALLOCATE(nodlocal_mgm(nb_total_node))
828 ALLOCATE(iepxfem_l(numelc))
829 ALLOCATE(inpxfem_l(numnod))
830 ALLOCATE(ielxfemc_l(numelc))
831 ALLOCATE(ielxfemtg_l(numeltg))
832 ALLOCATE(incrkxfem_l(numnod))
833 ALLOCATE(numlocgroup(ngroup)) !NUMLOCGROUP(NG) = NG_LOC or 0
834 ALLOCATE(numloccluster(ncluster)) !NUMLOCCLUSTER(I) = NG_LOC or 0
835 numloccluster(1:ncluster) = 0
836 ALLOCATE(iskwp_l(numskw+1))
837
838 CALL my_alloc(ipari_l,npari,max(1,ninter))
839 CALL my_alloc(rdpartsav,npsav*npart)
840 CALL my_alloc(dd_rbym2,3,nrbym)
841 CALL my_alloc(dd_rby2,3,nrbykin)
842C--------------------------------------------
843C Allocate and init MONVOL local
844C--------------------------------------------
845 ALLOCATE(monvol_l(lenvolu))
846 DO i = 1, lenvolu
847 monvol_l(i) = monvol(i)
848 END DO
849C--------------------------------------------
850 iun = 1
851 isp0 = 0
852 IF(p==1) isp0 = 1
853C--------------------------------------------
854C Init boundary Lag Mult
855C--------------------------------------------
856 DO proc = 1, nspmd+1
857 dd_lagf(1,proc) = 0
858 dd_lagf(2,proc) = 0
859 END DO
860C--------------------------------------------
861C Node numbering tables
862C--------------------------------------------
863 IF(numnod_l>0) ALLOCATE(nodglob(numnod_l))
864 CALL f_nodloc2(numnod,p ,nodglob,nodlocal,igeo ,
865 2 iparg,ixs ,ixq,ixc ,ixtg ,
866 3 ixt ,ixp ,ixr,geo ,numnod_l)
867C--------------------------------------
868C count local NGROUP
869C--------------------------------------
870 CALL c_ngroup(iparg,p-1,numlocgroup,ngroup_l)
871C--------------------------------------------
872c count local elements
873C--------------------------------------------
874 off = 0
875 CALL c_eltloc(cep(min(off+1,len_cep)),p-1,numels8,numels8_l)
876 off = off + numels8
877 CALL c_eltloc(cep(min(off+1,len_cep)),p-1,numels10,numels10_l)
878 off = off + numels10
879 CALL c_eltloc(cep(min(off+1,len_cep)),p-1,numels20,numels20_l)
880 off = off + numels20
881 CALL c_eltloc(cep(min(off+1,len_cep)),p-1,numels16,numels16_l)
882 off = off + numels16
883 numels_l = numels8_l + numels10_l + numels20_l + numels16_l
884 CALL c_eltloc(cep(min(off+1,len_cep)),p-1,numelq,numelq_l)
885 off = off + numelq
886 CALL c_eltloc(cep(min(off+1,len_cep)),p-1,numelc,numelc_l)
887 off = off + numelc
888 CALL c_eltloc(cep(min(off+1,len_cep)),p-1,numelt,numelt_l)
889 off = off + numelt
890 CALL c_eltloc(cep(min(off+1,len_cep)),p-1,numelp,numelp_l)
891 off = off + numelp
892 CALL c_eltloc(cep(min(off+1,len_cep)),p-1,numelr,numelr_l)
893 off = off + numelr
894 numeltg3=numeltg-numeltg6
895 CALL c_eltloc(cep(min(off+1,len_cep)),p-1,numeltg3,numeltg_l)
896 off = off + numeltg3
897 numeltg3_l = numeltg_l
898 CALL c_eltloc(cep(min(off+1,len_cep)),p-1,numeltg6,numeltg6_l)
899 off = off + numeltg6
900 numeltg_l = numeltg3_l+numeltg6_l
901 CALL c_eltloc(cep(min(off+1,len_cep)),p-1,numelx,numelx_l)
902 off = off + numelx
903 CALL c_eltloc(cep(min(off+1,len_cep)),p-1,numelig3d,numelig3d_l)
904 off = off + numelig3d
905C
906 IF (p==1) THEN
907 num16shift_l = 1
908 pm1shf = 2*numels16_l + 1
909 ELSE
910 num16shift_l = pm1shf
911 pm1shf = pm1shf + 2*numels16_l
912 ENDIF
913C--------------------------------------------
914C Counting local cluster
915C--------------------------------------------
916 ncluster_l = 0
917 IF(ncluster > 0) THEN
918 CALL c_cluster(clusters,p-1,cep,ncluster_l,numloccluster)
919 ENDIF
920C--------------------------------------------
921C count neighbor elements CFD/ALE
922C--------------------------------------------
923 nsvois = 0
924 nqvois = 0
925 ntgvois = 0
926 ne_nsvois = 0
927 ne_nqvois = 0
928 ne_ntgvois = 0
929 nrcvvois = 0
930 nsndvois = 0
931 ilaw11 = 0
932 nsegfl_l = 0
933 nervois = 0
934 nesvois = 0
935 ne_nervois = 0
936 ne_nesvois = 0
937 ishadow = 0
938 IF(detonators%IS_SHADOWING_REQUIRED) ishadow = 1
939 IF (iale + ieuler + glob_therm%ITHERM + ialelag + ishadow > 0) THEN
940 numel = max(numels,numelq)
941 numel_l = max(numels_l,numelq_l)
942 IF (multi_fvm%IS_USED .AND. n2d /= 0) THEN
943 numel = max(numel, numeltg)
944 numel_l = max(numel_l, numeltg_l)
945 ENDIF
946 CALL c_vois(nsvois ,nqvois , ntgvois, nrcvvois,nsndvois,ilaw11 ,
947 2 nsegfl_l,iparg ,cep ,ale_connectivity ,numel ,
948 3 p-1 ,ixs ,ixq ,ixtg,
949 4 nervois ,nesvois,nodlocal,numnod_l,numel_l,
950 5 cel, multi_fvm,ale_elm,size_ale_elm)
951! Node element connectivity
952 IF(ale_connectivity%has_ne_connect)THEN
953 CALL c_spmd_ne_connect(ale_connectivity, p - 1, cep, cel,
954 . nodglob, nodlocal,
955 . numel, numnod, numel_l, numnod_l,
956 . numels_l, numelq_l, numeltg_l,
957 . ne_nervois, ne_nesvois,
958 . ne_nsvois, ne_nqvois, ne_ntgvois)
959 ENDIF
960 ENDIF
961C
962C--------------------------------------
963C count ebcs (multifluid)
964C--------------------------------------
965 iebcslgth = 0
966 ALLOCATE(iebcs_listelem_l(0))
967 ALLOCATE(iebcs_listfac_l(0))
968 ALLOCATE(iebcs_listdp0_l(0))
969 ebcs_tab_loc%nebcs_fvm = 0
970 nebcs_fvm = 0
971 nebcs_parallel = 0
972 other_nebcs = 0
973 IF (nebcs > 0) THEN
974! Workaround for issues with Polymorphic types with some compilers
975!$OMP CRITICAL
976 DO ii = 1, nebcs
977 is_ebcs_parallel = .false.
978 IF(ebcs_tab%tab(ii)%poly%type==10 .or. ebcs_tab%tab(ii)%poly%type==11) is_ebcs_parallel=.true.
979 IF (ebcs_tab%tab(ii)%poly%is_multifluid) THEN
980 nebcs_fvm = nebcs_fvm + 1
981 ELSEIF(is_ebcs_parallel) THEN
982 nebcs_parallel = nebcs_parallel + 1
983 list_ebcs_parallel(nebcs_parallel) = ii
984 ELSEIF(p==1) THEN
985 other_nebcs = other_nebcs + 1
986 list_other_ebcs(other_nebcs) = ii
987 ENDIF
988 ENDDO
989 ! allocation of EBCS type FVM
990 CALL ebcs_tab_loc%create(nebcs_fvm)
991 ebcs_tab_loc%nebcs_fvm = nebcs_fvm
992
993 ! allocation of EBCS type nrf
994 ebcs_tab_loc_2%nebcs_parallel = nebcs_parallel
995 CALL ebcs_tab_loc_2%create(nebcs_parallel)
996 ebcs_tab_loc_2%nebcs_loc = other_nebcs
997 ebcs_tab_loc_2%nebcs_fvm = 0
998 ! --------------------
999 ! mode 0 : count the number of entity/element (if %has_ielem == .true.)
1000 CALL c_iebcs(ixs, ixq, ixtg,
1001 . numels, numelq, numeltg,
1002 . nebcs, cep, numels + numelq + numeltg,
1003 . p-1, iebcs_nelem_l, iebcs_type, iebcs_listelem_l, iebcs_listfac_l,iebcs_listdp0_l,iebcslgth, n2d,
1004 . multi_fvm%IS_USED,0,ebcs_tab)
1005 ! --------------------
1006
1007C ALLOCATE
1008 DEALLOCATE(iebcs_listelem_l)
1009 DEALLOCATE(iebcs_listfac_l)
1010 DEALLOCATE(iebcs_listdp0_l)
1011 ALLOCATE(iebcs_listfac_l(iebcslgth))
1012 ALLOCATE(iebcs_listelem_l(iebcslgth))
1013 ALLOCATE(iebcs_listdp0_l(iebcslgth))
1014
1015 ! --------------------
1016 ! mode 1 : initialization
1017 ! FILL IEBCS_LISTELEM_L and LISTFAC_L
1018 iebcslgth = 0
1019 CALL c_iebcs(ixs, ixq, ixtg,
1020 . numels, numelq, numeltg,
1021 . nebcs, cep, numels + numelq + numeltg,
1022 . p-1, iebcs_nelem_l, iebcs_type, iebcs_listelem_l, iebcs_listfac_l,iebcs_listdp0_l,iebcslgth, n2d,
1023 . multi_fvm%IS_USED,1,ebcs_tab)
1024 ! --------------------
1025
1026
1027 nebcs_fvm = 0
1028 nebcs_parallel = 0
1029 ipt = 1
1030 ! --------------------
1031 ! loop over the ebcs, 3 cases :
1032 ! (1) multifluid ebcs : parallel
1033 ! (2) non-reflecting ebcs (/EBCS/NRF) : parallel
1034 ! (3) other ebcs : sequential --> all the elements/nodes of the ebcs are on main processor
1035 ! for cases (1) & (2) : need to convert global id into local processor id
1036 DO ii = 1, nebcs
1037 is_ebcs_parallel = .false.
1038 IF(ebcs_tab%tab(ii)%poly%type == 10 .OR. ebcs_tab%tab(ii)%poly%type == 11 )is_ebcs_parallel = .true.
1039
1040 ! ------------
1041 ! multifluid ebcs
1042 IF (ebcs_tab%tab(ii)%poly%is_multifluid) THEN
1043
1044 nebcs_fvm = nebcs_fvm + 1
1045 ALLOCATE(ebcs_tab_loc%tab(nebcs_fvm)%poly, source = ebcs_tab%tab(ii)%poly)
1046 IF (ALLOCATED(ebcs_tab_loc%tab(nebcs_fvm)%poly%ielem)) THEN
1047 DEALLOCATE(ebcs_tab_loc%tab(nebcs_fvm)%poly%ielem)
1048 ENDIF
1049 IF (ALLOCATED(ebcs_tab_loc%tab(nebcs_fvm)%poly%iface)) THEN
1050 DEALLOCATE(ebcs_tab_loc%tab(nebcs_fvm)%poly%iface)
1051 ENDIF
1052 IF (ALLOCATED(ebcs_tab_loc%tab(nebcs_fvm)%poly%dp0)) THEN
1053 DEALLOCATE(ebcs_tab_loc%tab(nebcs_fvm)%poly%dp0)
1054 ENDIF
1055 ebcs_tab_loc%tab(nebcs_fvm)%poly%nb_elem = iebcs_nelem_l(ii)
1056 ALLOCATE(ebcs_tab_loc%tab(nebcs_fvm)%poly%ielem(iebcs_nelem_l(ii)))
1057 ALLOCATE(ebcs_tab_loc%tab(nebcs_fvm)%poly%iface(iebcs_nelem_l(ii)))
1058 IF(ebcs_tab_loc%tab(nebcs_fvm)%poly%has_dp0) ALLOCATE(ebcs_tab_loc%tab(nebcs_fvm)%poly%dp0(iebcs_nelem_l(ii)))
1059 DO jj = 1, iebcs_nelem_l(ii)
1060 ebcs_tab_loc%tab(nebcs_fvm)%poly%ielem(jj) = iebcs_listelem_l(ipt)
1061 ebcs_tab_loc%tab(nebcs_fvm)%poly%iface(jj) = iebcs_listfac_l(ipt)
1062 IF(ebcs_tab_loc%tab(nebcs_fvm)%poly%has_dp0)ebcs_tab_loc%tab(nebcs_fvm)%poly%dp0(jj) = iebcs_listdp0_l(ipt)
1063 ipt = ipt + 1
1064 ENDDO
1065 ! ------------
1066 ! parallel ebcs : /NRF /PROPELLANT
1067 ELSEIF(is_ebcs_parallel)THEN
1068 nebcs_parallel = nebcs_parallel + 1
1069 ALLOCATE(ebcs_tab_loc_2%tab(nebcs_parallel)%poly, source = ebcs_tab%tab(ii)%poly)
1070 IF(ebcs_tab%tab(ii)%poly%has_ielem) THEN
1071 ebcs_tab_loc_2%tab(nebcs_parallel)%poly%nb_elem = iebcs_nelem_l(ii)
1072 IF (ALLOCATED(ebcs_tab_loc_2%tab(nebcs_parallel)%poly%iface)) THEN
1073 DEALLOCATE(ebcs_tab_loc_2%tab(nebcs_parallel)%poly%iface)
1074 ENDIF
1075 ebcs_tab_loc_2%tab(nebcs_parallel)%poly%nb_elem = iebcs_nelem_l(ii)
1076 ALLOCATE(ebcs_tab_loc_2%tab(nebcs_parallel)%poly%iface(iebcs_nelem_l(ii)))
1077 DO jj = 1, iebcs_nelem_l(ii)
1078 ebcs_tab_loc_2%tab(nebcs_parallel)%poly%ielem(jj) = iebcs_listelem_l(ipt)
1079 ebcs_tab_loc_2%tab(nebcs_parallel)%poly%iface(jj) = iebcs_listfac_l(ipt)
1080 IF(ebcs_tab_loc_2%tab(nebcs_parallel)%poly%has_dp0) THEN
1081 ebcs_tab_loc_2%tab(nebcs_parallel)%poly%dp0(jj) = iebcs_listdp0_l(ipt)
1082 ENDIF
1083 ipt = ipt + 1
1084 ENDDO
1085 ENDIF
1086 ! ------------
1087 ! other ebcs
1088 ELSEIF(ebcs_tab%tab(ii)%poly%has_ielem .and. p==1) THEN
1089 ebcs_tab%tab(ii)%poly%nb_elem = iebcs_nelem_l(ii)
1090 IF (ALLOCATED(ebcs_tab%tab(ii)%poly%ielem)) THEN
1091 DEALLOCATE(ebcs_tab%tab(ii)%poly%ielem)
1092 ENDIF
1093 IF (ALLOCATED(ebcs_tab%tab(ii)%poly%iface)) THEN
1094 DEALLOCATE(ebcs_tab%tab(ii)%poly%iface)
1095 ENDIF
1096 ebcs_tab%tab(ii)%poly%nb_elem = iebcs_nelem_l(ii)
1097 ALLOCATE(ebcs_tab%tab(ii)%poly%ielem(iebcs_nelem_l(ii)))
1098 ALLOCATE(ebcs_tab%tab(ii)%poly%iface(iebcs_nelem_l(ii)))
1099 DO jj = 1, iebcs_nelem_l(ii)
1100 ebcs_tab%tab(ii)%poly%ielem(jj) = iebcs_listelem_l(ipt)
1101 ebcs_tab%tab(ii)%poly%iface(jj) = iebcs_listfac_l(ipt)
1102 IF(ebcs_tab%tab(ii)%poly%has_dp0)ebcs_tab%tab(ii)%poly%dp0(jj) = iebcs_listdp0_l(ipt)
1103 ipt = ipt + 1
1104 ENDDO
1105 ENDIF
1106 ! ------------
1107
1108 ENDDO
1109
1110 ! --------------------
1111 ! additional computation for /NRF ebcs (ids : global -> local)
1112 CALL split_ebcs(p,nebcs_parallel,list_ebcs_parallel,scel,cep,igrsurf,cel,ebcs_tab,ebcs_tab_loc_2)
1113 ! --------------------
1114!$OMP END CRITICAL
1115 ENDIF
1116C--------------------------------------
1117C Multifluid law velocity
1118C--------------------------------------
1119 IF (multi_fvm%IS_USED) THEN
1120 IF (n2d == 0) THEN
1121 CALL c_multi_vel(cep, numels, numels_l, p-1,
1122 . multi_fvm_vel_l, multi_fvm)
1123 ELSE
1124 CALL c_multi_vel(cep, numelq + numeltg, numelq_l + numeltg_l, p-1,
1125 . multi_fvm_vel_l, multi_fvm)
1126 ENDIF
1127 ENDIF
1128C--------------------------------------
1129c Count Buffer Subset, Groups, Surfaces, Lines
1130C--------------------------------------
1131 lenigrnod_l = 0
1132 lenigrbric_l = 0
1133 lenigrquad_l = 0
1134 lenigrsh4n_l = 0
1135 lenigrtrus_l = 0
1136 lenigrbeam_l = 0
1137 lenigrspri_l = 0
1138 lenigrsh3n_l = 0
1139 lenisurf_l = 0
1140 lenislin_l = 0
1141 CALL c_group_str(
1142 1 igrnod ,igrbric ,igrquad ,igrsh4n ,igrsh3n ,
1143 2 igrtruss ,igrbeam ,igrspring ,igrpart ,cep ,
1144 3 cel ,nodlocal ,p-1 ,lenigrnod_l,lenigrbric_l ,
1145 4 lenigrquad_l,lenigrsh4n_l,lenigrtrus_l,lenigrbeam_l,lenigrspri_l,
1146 5 lenigrsh3n_l,frontb_r2r ,numnod_l)
1147 CALL c_isurf_str(p-1,lenisurf_l,nspmd,igrsurf_proc)
1148
1149 CALL c_islin_str(igrslin ,p-1, lenislin_l)
1150C--------------------------------------------
1151C count Buffer interface
1152C--------------------------------------------
1153 imaximp_l= 0
1154 nbddi2m = 0
1155 i2nsn_l = 0
1156 nbi18_l = 0
1157 nskyi18_l= 0
1158 nsnt_l = 0
1159 nmnt_l = 0
1160 nsnt2_l = 0
1161 nmnt2_l = 0
1162 i2nsn25_l = 0
1163 numnor_l = 0
1164 IF(ninter>0) THEN
1165c start CPU timer for IPARI_L_INI
1166 CALL startime(5,1)
1167
1168 CALL ipari_l_ini(ipari ,p-1 ,numnod_l ,
1169 + nbddi2m ,i2nsn_l,probint ,imaximp_l,nbi18_l ,
1170 + nskyi18_l,nsnt_l ,nmnt_l ,nsnt2_l ,nmnt2_l ,
1171 + cep ,igrbric,ipari_l ,
1172 + nodlocal ,i2nsn25_l, intercep, intbuf_tab, numnor_l,
1173 + i24maxnsne, multi_fvm,tag_scratch,indx_scrt,nindx_scrt)
1174
1175c stop CPU timer for IPARI_L_INI
1176 CALL stoptime(5,1)
1177 ENDIF
1178
1179C--------------------------------------------
1180C Count Nodes RW
1181C--------------------------------------------
1182 nslaw_l = 0
1183 neslaw_l = 0
1184 lwsav_l = 0
1185 nskyrw_l = 0
1186 lrw_pen_l= 0
1187 IF(nrwall > 0)
1188 1 CALL c_rwall(nprw ,lprw ,rwl ,
1189 2 cep ,p-1 ,nslaw_l ,neslaw_l,
1190 3 lwsav_l,nskyrw_l,lrw_pen_l,nrw_pen_l)
1191C--------------------------------------------
1192C count Madymo storage
1193C--------------------------------------------
1194 nmadsh4_l = 0
1195 nmadsh3_l = 0
1196 nmadsol_l = 0
1197 nmadnod_l = 0
1198 madcl_nmadnod_l = 0
1199
1200 IF(nexmad/=0)
1201 + CALL c_mad(iexmad,nmadsh4_l,nmadsh3_l,nmadsol_l,nmadnod_l,
1202 + madcl_nmadnod_l,cep ,p-1 )
1203C--------------------------------------------
1204C Count nodes rby
1205C--------------------------------------------
1206 nslarb_l = 0
1207 nskyrbk_l = 0
1208 IF(nrbykin>0)
1209 + CALL c_rbyk(npby,lpby,p-1,nslarb_l,nskyrbk_l)
1210C--------------------------------------------
1211C count Rigid material nodes
1212C--------------------------------------------
1213 nslarbm_l = 0
1214 nskyrbmk_l = 0
1215 IF(nrbym > 0)
1216 + CALL c_rbymk(irbym,lcrbym,p-1,nslarbm_l,nskyrbmk_l)
1217C--------------------------------------------
1218C count Sections
1219C--------------------------------------------
1220 nstrf_l = 0
1221 lsecbuf_l = 0
1222 nnodt_l = 0
1223 nnodl_l = 0
1224 IF(nsect>0)
1225 + CALL c_sectio(nstrf ,cep ,p-1,nstrf_l,
1226 + lsecbuf_l,nnodt_l,nnodl_l)
1227C--------------------------------------------
1228C Count cylindrical joints: Already Done
1229C--------------------------------------------
1230 ljoint_l = 0
1231 IF(joint_sms) THEN
1232 IF(njoint>0.AND.p==1) CALL c_joint_sms(ljoint,p-1,ljoint_l)
1233 ENDIF
1234C--------------------------------------------
1235C Porosite
1236C--------------------------------------------
1237 numpor_l = 0
1238 IF(numpor>0) THEN
1239 CALL c_poro(pornod,p-1,numpor_l,geo)
1240 ENDIF
1241C--------------------------------------------
1242C Buffer element
1243C--------------------------------------------
1244 CALL c_bufel(iparg,p-1,lbufel_l)
1245C--------------------------------------------
1246C count Airbags
1247C--------------------------------------------
1248 intbag_l = 0
1249 IF(nvolu>0)THEN
1250 IF(intbag/=0)
1251 + intbag_l = lenvolu
1252 ELSEIF(intbag > 0 .AND. ialelag > 0 ) THEN
1253 intbag_l = intbag
1254 ENDIF
1255C--------------------------------------
1256C counts Multi-wire element
1257C--------------------------------------
1258 isumnx_l = 0
1259 IF (numelx_l>0)
1260 . CALL c_elmx(kxx,cep,p-1,isumnx_l)
1261C--------------------------------------
1262C count SPH Cells
1263C--------------------------------------
1264 numsph_l = 0
1265 lwasph_l = 0
1266 nsphsol_l =0
1267 first_sphsol_l = 0
1268C-- SOL2SPH_FLAG : general flag for all CPUS for SOL2SPH - communications are required for proc having common nodes on elements having SOL2SPH
1269 IF (nsphsol > 0) THEN
1270 sol2sph_flag = 1
1271 ELSE
1272 sol2sph_flag = 0
1273 ENDIF
1274C
1275 IF (numsph>0)THEN
1276 CALL c_isph(kxsp,cepsp,p-1,numsph_l,
1277 . slonfsph_l,slprtsph,slprtsph_l,ipartsp,ssphveln_l,
1278 . nsphsol_l ,first_sphsol_l)
1279 ENDIF
1280
1281 IF (p==1) THEN
1282 sphshift_l = 1
1283 pm1sph = 4*numsph_l + 1
1284 ELSE
1285 sphshift_l = pm1sph
1286 pm1sph = pm1sph + 4*numsph_l
1287 ENDIF
1288C--------------------------------------
1289C counts IBCL
1290C--------------------------------------
1291 nconld_l = 0
1292 IF (nconld>0)
1293 . CALL c_ibcl(ibcl,cep,p-1,nconld_l)
1294C--------------------------------------
1295C counts Fixvel
1296C--------------------------------------
1297 nfxvel_l = 0
1298 IF (nfxvel>0)
1299 . CALL c_ibfv(ibfv,nfxvel,nfxvel_l,p-1,dd_lagf)
1300C--------------------------------------
1301C counts LLINK
1302C--------------------------------------
1303 nllink_l=0
1304 nskyll_l=0
1305 IF (nlink>0)
1306 . CALL c_llink(nnlink,lllink,p-1,nllink_l,nskyll_l)
1307C--------------------------------------
1308C counts LLGRAV
1309C--------------------------------------
1310 llgrav_l=0
1311 IF (ngrav>0)
1312 . CALL c_igrav(igrav,lgrav,llgrav_l,p-1,nodlocal,numnod_l)
1313C--------------------------------------
1314C counts IBVEL
1315C--------------------------------------
1316 llbvel_l=0
1317 nskyrbm_l = 0
1318 IF (nibvel>0)
1319 . CALL c_ibvel(ibvel,lbvel,llbvel_l,nskyrbm_l,p-1)
1320C--------------------------------------
1321C counts RBE2
1322C--------------------------------------
1323 nrbe2_l=0
1324 llrbe2_l=0
1325 nbddrbe2 = 0
1326 IF (nrbe2>0)
1327 . CALL c_irbe2(irbe2,lrbe2,p-1 ,nrbe2_l,
1328 . llrbe2_l ,nbddrbe2)
1329C--------------------------------------
1330C counts RBE3
1331C--------------------------------------
1332 nrbe3_l=0
1333 llrbe3_l=0
1334 nbddrbe3m = 0
1335 nskyrbe3_l = 0
1336 nrbe3pen_l=0
1337 IF (nrbe3>0)
1338 . CALL c_irbe3(irbe3,lrbe3,nskyrbe3_l,p-1,
1339 . nrbe3_l,llrbe3_l ,nbddrbe3m,nrbe3pen_l)
1340C--------------------------------------
1341C counts MPC
1342C--------------------------------------
1343 IF (nummpc>0.AND.p==1)THEN
1344 inum = nummpc+1
1345 iddl = inum +lmpc
1346 iskw = iddl +lmpc
1347 CALL c_ibmpc(ibmpc,ibmpc(inum),ibmpc(iddl),ibmpc(iskw),dd_lagf)
1348 END IF
1349C--------------------------------------
1350C counts nb of local elts
1351C--------------------------------------
1352 numel_l = numels_l + numelq_l + numelc_l + numelt_l + numelp_l
1353 + + numelr_l + numeltg_l+ numelx_l + numsph_l
1354 + + numelig3d_l
1355C--------------------------------------------
1356C counts buffer TH
1357C--------------------------------------------
1358 lenthgt = nithgr*(nthgrp0+nbr_th_monvol)
1359C--------------------------------------
1360C counts boundary (SPMD)
1361C--------------------------------------
1362 nlagf_l = 0
1363 CALL c_front(p ,nbddacc,nbddkin,nbddnrb,
1364 2 npby ,nrbykin_l,ljoint ,nbddncj,ibvel ,
1365 3 nbddnrbm ,iadll ,lll ,nlagf_l, front_rm,
1366 4 nrbymk_l ,nbddnrbym,
1367 5 sdd_r2r_elem,addcsrect,csrect ,nbddnort_l,nbddnor_max_l,
1368 6 nbccnor_l,nbccfr25_l,nbddedgt_l,nbddedg_max_l,nrtmx25_l ,
1369 7 ipari ,intbuf_tab,intercep ,nodglob ,nodlocal ,
1370 8 numnod_l ,nloc_dmg)
1371 nbddnod = nbddacc+nbddkin
1372C--------------------------------------
1373C counts Parith/ON SPMD
1374C--------------------------------------
1375 IF (ipari0/=0) THEN
1376 CALL c_pon(addcne ,numnod_l,nodglob ,lcne_l ,i2nsnt ,
1377 2 addcni2,lcni2_l ,monvol ,
1378 3 cep ,p-1 ,nnmv_l ,nnmvc_l ,addcne_pxfem,
1379 4 lcnepxfem_l,inod_pxfem ,addcne_crkxfem,lcnecrkxfem_l,
1380 5 inod_crkxfem,addcncnd,lcncnd_l,igrsurf)
1381 nisky0_l=8*numels_l+6*numels10_l+8*numels16_l+12*numels20_l+
1382 + 4*numelq_l+4*numelc_l+2*numelt_l+2*numelp_l+
1383 + 3*numelr_l+3*numeltg_l+3*numeltg6_l+4*nconld_l
1384 nir = 4
1385 IF(n2d/=0) nir = 2
1386 niskyi2_l = i2nsn_l*nir
1387 ELSE
1388 lcni2_l = 0
1389 lcne_l = 0
1390 nisky0_l=0
1391 niskyi2_l = 0
1392 nnmv_l = 0
1393 nnmvc_l = 0
1394 lcnepxfem_l = 0
1395 lcnecrkxfem_l = 0
1396 lcncnd_l = 0
1397 ENDIF
1398C--------------------------------------------
1399C counts and split FLEXIBLE BODY
1400C--------------------------------------------
1401 IF (nfxbody>0) THEN
1402C Split arrays
1403 CALL c_fxbody1(
1404 . fxbipm, fxbnod, nodlocal, iparg, fxbelm,
1405 . lennod_l, lenmod_l, lenelm_l, lensig_l, p-1,
1406 . lengrvi_l, fxbgrvi )
1407C
1408 ALLOCATE(fxbnod_l(lennod_l*2), fxbmod_l(lenmod_l*6),
1409 . fxbelm_l(lenelm_l), fxbsig_l(lensig_l),
1410 . fxbgrvi_l(lengrvi_l))
1411C
1412 CALL c_fxbody2(
1413 . fxbipm, fxbnod, nodlocal, iparg, fxbelm,
1414 . fxbnod_l, fxbmod_l, fxbelm_l, fxbsig_l, p-1 ,
1415 . fxbmod, fxbsig, fxbipm_l, fxbgrvi,
1416 . fxbgrvi_l, lennod_l, itask)
1417C arrays pined to PMAIN
1418 CALL c_fxbody3(
1419 . lenglm_l, lencp_l, lenlm_l, lenfls_l, lendls_l,
1420 . lenmcd_l, lengrvr_l, fxbipm_l, p-1 )
1421C
1422 ALLOCATE(fxbglm_l(lenglm_l), fxbcpm_l(lencp_l),
1423 . fxbcps_l(lencp_l), fxblm_l(lenlm_l),
1424 . fxbfls_l(lenfls_l), fxbdls_l(lendls_l),
1425 . fxbgrvr_l(lengrvr_l))
1426C
1427 CALL c_fxbody4(
1428 . fxbglm, fxbcpm, fxbcps, fxblm, fxbfls,
1429 . fxbdls, fxbgrvr, fxbipm , p-1, fxbglm_l,
1430 . fxbcpm_l, fxbcps_l, fxblm_l, fxbfls_l, fxbdls_l,
1431 . fxbgrvr_l, fxbipm_l)
1432 ELSE
1433 lennod_l =0
1434 lenmod_l =0
1435 lenelm_l =0
1436 lensig_l =0
1437 lengrvi_l=0
1438 lenglm_l =0
1439 lencp_l =0
1440 lenlm_l =0
1441 lenfls_l =0
1442 lendls_l =0
1443 lenmcd_l =0
1444 lengrvr_l=0
1445 ENDIF
1446C--------------------------------------------
1447C counts Eig
1448C--------------------------------------------
1449 leibuf_l = 0
1450 IF (neig>0)
1451 . CALL c_eig(eigipm , eigibuf , eigrpm, nodlocal, eigipm_l,
1452 . eigibuf_l, leibuf_l)
1453C--------------------------------------------
1454C count slipring and retractor
1455C--------------------------------------------
1456 n_seatbelt_l = 0
1457 n_seatbelt_2d_l = 0
1458 n_slipring_l = 0
1459 n_retractor_l = 0
1460 n_anchor_remote_l = 0
1461 n_anchor_remote_send_l = 0
1462 off = numels + numelq + numelc + numelt + numelp
1463C
1464 IF (nslipring + nretractor > 0) THEN
1465 CALL c_seatbelts(n_slipring_l,n_retractor_l,p,nodlocal,elbuf_tab,
1466 . iparg,n_anchor_remote_l,n_anchor_remote_send_l,anchor_remote_l,anchor_remote_send_l,
1467 . n_seatbelt_l,n_seatbelt_2d_l,cep,off)
1468 ENDIF
1469C--------------------------------------------
1470 IF (nflow>0) CALL m_flow(iflow, iflow_l, nodlocal, p, memflow)
1471C--------------------------------------------
1472C Split airbags ALE
1473C--------------------------------------------
1474 IF (nfvbag>0) THEN
1475 IF (tetramesher_used) THEN
1476 nodlocal_mgm(1:numnod) = nodlocal(1:numnod)
1477 max_id = maxval(nodlocal(1:numnod))
1478! IF (P == 1) THEN
1479 DO i = 1, nb_total_node - numnod
1480 max_id = max_id + 1
1481 nodlocal_mgm(numnod + i) = max_id
1482 ENDDO
1483! ELSE
1484! DO I = 1, NB_TOTAL_NODE - NUMNOD
1485! NODLOCAL_MGM(NUMNOD + I) = 0
1486! ENDDO
1487! ENDIF
1488 CALL c_fvbag(
1489 . monvol, nodlocal_mgm, ixs_temp, p, nb_total_node, fvmain)
1490 ELSE
1491 CALL c_fvbag(
1492 . monvol, nodlocal, ixs, p, numnod,fvmain)
1493 ENDIF
1494 ENDIF
1495C--------------------------------------------
1496C count external solids faces
1497C--------------------------------------------
1498 nfasolfr_l= 0
1499 IF(nfasolfr/=0 .AND. numels_l/=0)THEN
1500 CALL c_fasolfr(fasolfr, cep, p-1, cel, nfasolfr_l)
1501 ENDIF
1502C--------------------------------------------
1503C Counting "external segments of quads"
1504C--------------------------------------------
1505 nsegquadfr_l= 0
1506 IF(nsegquadfr/=0 .AND. numelq_l/=0)THEN
1507 CALL c_segquadfr(segquadfr, cep, p-1, cel, nsegquadfr_l)
1508 ENDIF
1509C--------------------------------------
1510C Convec flow courses
1511C--------------------------------------
1512 nconv_l = 0
1513 IF (glob_therm%NUMCONV > 0)
1514 . CALL c_iconv(ibcv,cep,p-1,nconv_l,glob_therm%NUMCONV,glob_therm%NICONV)
1515C--------------------------------------
1516C counts radiative fluxes
1517C--------------------------------------
1518 nradia_l = 0
1519 IF (glob_therm%NUMRADIA > 0) CALL c_iradia(ibcr,cep,p-1,nradia_l,
1520 . glob_therm%NUMRADIA,glob_therm%NUMCONV,glob_therm%NIRADIA)
1521C--------------------------------------
1522C counts imposed fluxes
1523C--------------------------------------
1524 nfxflux_l = 0
1525 IF (glob_therm%NFXFLUX > 0) CALL c_ithflux(ibfflux,cep,p-1,nfxflux_l,
1526 . glob_therm%NUMCONV,glob_therm%NUMRADIA,glob_therm%NFXFLUX,glob_therm%NITFLUX)
1527C--------------------------------------
1528c counts Fixtemp
1529C--------------------------------------
1530 nfxtemp_l = 0
1531 IF (glob_therm%NFXTEMP > 0)
1532 . CALL c_ibft(ibft,glob_therm%NFXTEMP,nfxtemp_l,p-1,dd_lagf,glob_therm%NIFT)
1533C--------------------------------------
1534C Count Lagrange Multiply
1535C--------------------------------------
1536 lag_sec=0
1537 IF(lag_ncf+lag_ncl > 0)
1538 . CALL c_lag(ipari,nprw,lag_sec)
1539C--------------------------------------------
1540C Count Ply X-FEM Type SHEL 4-N
1541C--------------------------------------------
1542 numelcpxfe_l = 0
1543 numnodpxfe_l = 0
1544 IF(iplyxfem > 0 ) THEN
1545 off = numels + numelq
1546C plyxfem
1547 CALL c_pxfem(cep(min(off+1,len_cep)),p-1 ,nodglob ,iel_pxfem ,inod_pxfem,
1548 . iepxfem_l,inpxfem_l, numelc , numnod_l ,numelc_l,
1549 . numelcpxfe_l,numnodpxfe_l,index_pxfem)
1550 ENDIF
1551C--------------------------------------------
1552C count Elements (local) CRACK X-FEM type SHELL 4-NODE (layered shell)
1553C--------------------------------------------
1554 numelcrkxfe_l = 0
1555 numelccrkxfe_l = 0
1556 numeltgcrkxfe_l = 0
1557 numnodcrkxfe_l = 0
1558 numedges_l = 0
1559 nbddedge_l= 0
1560 incrkxfem_l=0
1561 ielxfemc_l=0
1562 ielxfemtg_l=0
1563 nod_xfe_l = 0
1564 IF(icrack3d > 0)THEN
1565 ALLOCATE(tagedge(numedges))
1566 tagedge = 0
1567C
1568 off = numels + numelq
1569 CALL c_crkxfem(
1570 . cep(min(off+1,len_cep)),p-1,iel_crkxfem,ielxfemc_l,numelc,
1571 . numelc_l,numelccrkxfe_l,numedges_l,iedgesh,4,tagedge)
1572 off = off + numelc + numelt + numelp + numelr
1573 IF(numeltg > 0)THEN
1574 CALL c_crkxfem(
1575 . cep(min(off+1,len_cep)),p-1,iel_crkxfem(1+numelc),ielxfemtg_l,numeltg,
1576 . numeltg_l,numeltgcrkxfe_l,numedges_l,
1577 . iedgesh(1+4*ecrkxfec),3,tagedge)
1578 END IF
1579 numelcrkxfe_l = numelccrkxfe_l + numeltgcrkxfe_l
1580C
1581 IF(numelcrkxfe_l>0)THEN
1582 ALLOCATE(nodglobxfe(4*numelcrkxfe_l*nlevmax))
1583 nodglobxfe = 0
1584 ENDIF
1585C
1586 ALLOCATE(index_crkxfem(ncrkxfe))
1587 ALLOCATE(nodlevxf_l(ncrkxfe))
1588 index_crkxfem = 0
1589 nodlevxf_l = 0
1590C
1591 CALL c_ncrkxfem(nodglob ,inod_crkxfem ,incrkxfem_l ,
1592 . numnod_l,numnodcrkxfe_l,index_crkxfem,p-1,
1593 . ixc,ixtg,cep_crkxfem,nodlocal,nodlevxf_l,
1594 . nodlevxf,nodglobxfe,nod_xfe_l,crkshell)
1595C
1596 ALLOCATE(iedgecrk_l(4*numelccrkxfe_l+3*numeltgcrkxfe_l),
1597 . ibordedge_l(numedges_l),nodedge_l(2*numedges_l),
1598 . iedgesh4_l(4*numelccrkxfe_l),
1599 . iedgesh3_l(3*numeltgcrkxfe_l),iedge_l(numedges_l))
1600 ALLOCATE(edgelocal(numedges))
1601 ALLOCATE(edgeglobal(numedges))
1602 iedgecrk_l = 0
1603 ibordedge_l = 0
1604 nodedge_l = 0
1605 iedgesh4_l = 0
1606 iedgesh3_l = 0
1607 iedge_l = 0
1608 edgelocal = 0
1609 edgeglobal = 0
1610 CALL c_crkedge(ielxfemc_l,ielxfemtg_l,iedgecrk_l,numedges,
1611 . iedgesh ,iedgesh(1+4*ecrkxfec),cep ,p-1,
1612 . ibordedge ,ibordedge_l,numedges_l,nodedge,
1613 . nodedge_l ,nodlocal ,iedgesh4_l,iedgesh3_l,
1614 . iel_crkxfem,iedge_l ,iedge ,ecrkxfec ,
1615 . edgelocal ,nbddedge_l,iedge_tmp,edgeglobal)
1616 ELSE
1617 ALLOCATE(iedgecrk_l(0))
1618 ALLOCATE(ibordedge_l(0))
1619 ALLOCATE(nodedge_l(0))
1620 ALLOCATE(iedgesh4_l(0),iedgesh3_l(0))
1621 ALLOCATE(tagedge(0))
1622 ALLOCATE(iedge_l(0))
1623 ALLOCATE(edgelocal(0))
1624 ALLOCATE(edgeglobal(0))
1625 ALLOCATE(nodglobxfe(0))
1626 ALLOCATE(index_crkxfem(0))
1627 ALLOCATE(nodlevxf_l(0))
1628 ENDIF
1629 CALL setlenwa(
1630 1 lenwa_l ,nthwa ,nairwa ,numels_l ,numelq_l,
1631 2 numelc_l,numeltg_l,numelt_l ,numelp_l ,numelr_l,
1632 3 numnod_l,nmnt ,l_mul_lag1,l_mul_lag,maxnx ,
1633 4 lwasph_l,numsph_l ,lwaspio, nrcvvois,ngroup_l,
1634 5 lwamp_l, lwanmp_l,glob_therm%ITHERM )
1635C--------------------------------------
1636C counts LLCFIELD
1637C--------------------------------------
1638 llcfield_l=0
1639 llloadp_l=0
1640 IF (nloadc>0)
1641 . CALL c_icfield(icfield,lcfield,llcfield_l,p-1)
1642 IF (nloadp>0) THEN
1643 CALL c_iloadp(iloadp,lloadp,llloadp_l,p-1)
1644 nisky0_l=nisky0_l+4*llloadp_l
1645 ENDIF
1646C--------------------------------------
1647C counts ISO GEOMETRIC ELEMENTS
1648C--------------------------------------
1649 isumnig3d_l = 0
1650 IF (numelig3d>0)
1651 . CALL c_elig3d(kxig3d,p-1,isumnig3d_l)
1652C--------------------------------------
1653C counts ICNDS10 Itet=2 of S10
1654C--------------------------------------
1655 ns10e_l = 0
1656 nbddcndm = 0
1657 msndp(p) = zero
1658 IF (ns10e>0)
1659 . CALL c_icnds10(icnds10,itagnd,p-1,ns10e_l,nbddcndm,ms,msndp(p))
1660C--------------------------------------
1661C counts /BCS/CYCLIC
1662C--------------------------------------
1663 nbcscyc_l = 0
1664 llbcscyc_l = 0
1665 IF (nbcscyc>0)
1666 . CALL c_ibcscyc(ibcscyc,lbcscyc,p-1 ,nbcscyc_l,llbcscyc_l)
1667C--------------------------------------------
1668C DRAPE option preparation
1669C--------------------------------------------
1670 numsh4n_l = 0
1671 numsh3n_l = 0
1672 IF (ndrape > 0) THEN
1673 off = numels + numelq
1674 IF(numelc_drape > 0 ) THEN
1675 CALL c_drape(drapeg%INDX,cep(min(off+1,len_cep)),p-1,
1676 . numelc,numsh4n_l)
1677 ENDIF
1678
1679 off = off + numelc + numelt + numelp + numelr
1680
1681 IF(numeltg_drape > 0) THEN
1682 CALL c_drape(drapeg%INDX(numelc+1),cep(min(off+1,len_cep)),p-1,
1683 . numeltg,numsh3n_l)
1684 ENDIF
1685 ENDIF
1686C--------------------------------------
1687C counts CLOAD
1688C--------------------------------------
1689 ncload_l = 0
1690 IF (loads%NLOAD_CLOAD>0)
1691 . CALL c_nloads(cep,p-1,loads%NLOAD_CLOAD,ncload_l)
1692C--------------------------------------
1693C counts PLOAD
1694C--------------------------------------
1695 npload_l = 0
1696 IF (loads%NLOAD_PLOAD>0)
1697 . CALL c_nloads(cep,p-1,loads%NLOAD_PLOAD,npload_l)
1698C--------------------------------------
1699C counts INIVEL
1700C--------------------------------------
1701 ninivelt_l = 0
1702 IF (loads%NINIVELT>0) THEN
1703 CALL c_inivell(
1704 . ngrnod, ngrbric, ngrquad, ngrsh3n,
1705 . igrnod, igrbric, igrquad, igrsh3n,
1706 . p-1 , cep, scep, nodlocal,
1707 . numnod,loads%NINIVELT,loads%INIVELT,ninivelt_l)
1708 ENDIF
1709C--------------------------------------
1710C counts /DAMP/VREL
1711C--------------------------------------
1712 ndamp_vrel_l = 0
1713 idamp_vrel_l(1:ndamp) = 0
1714 IF (ndamp > 0) CALL c_dampvrel(dampr,igrnod,p,idamp_vrel_l,ndamp_vrel_l,
1715 . ngrnod,ndamp,nrdamp)
1716C--------------------------------------------
1717C Open Restart FILE
1718C--------------------------------------------
1719 len_ia = 0
1720 len_am = 0
1721 ir_ = p
1722 WRITE(chrun,'(I4.4)')irun
1723 WRITE(procnam,'(I4.4)')p
1724 filnam = rootnam(1:rootlen)//'_'//chrun//'_'//procnam//'.rst'
1725 tmp_name = outfile_name(1:outfile_name_len)//filnam(1:len_trim(filnam))
1726 len_tmp_name = outfile_name_len+rootlen+14
1727C Restart file in binary format ieee 64 bits
1728 DO i=1,len_tmp_name
1729 ifilnam(i)=ichar(tmp_name(i:i))
1730 ENDDO
1731 DO i=1,rootlen+14
1732 ifilnam2(i)=ichar(filnam(i:i))
1733 ENDDO
1734 CALL cur_fil_c(1)
1735 CALL open_c(ifilnam,len_tmp_name,0)
1736#ifdef debug_rst
1737 IF(flush_rst_to_txt) THEN
1738 OPEN(unit=777+itask,file=trim(filnam)//'.txt'
1739 . ,status='UNKNOWN',form='FORMATTED')
1740 ENDIF
1741#endif
1742 CALL write_c_c(ifilnam2,rootlen+14)
1743 len_ia = len_ia + rootlen+14
1744C--------------------------------------------
1745C Skippon_l for obsolete "modif" option.
1746 skippon_l = numnod_l+1 + lcne_l + lcni2_l +
1747 . 8*numels_l + 6*numels10_l + 8*numels16_l + 12*numels20_l +
1748 . 4*numelq_l + 4*numelc_l + 2*numelt_l + 2*numelp_l +
1749 . 3*numelr_l + 3*numeltg_l + 3*numeltg6_l +
1750 . 4*nnmv_l + 4*nconld_l + 4*nconv_l + nskyrw_l + nskyrbk_l +
1751 . niskyi2_l +
1752 . nnmv_l + nnmvc_l + nskyll_l + nskyrbm_l + nskyi18_l +
1753 . nskyrbmk_l + 4*nradia_l + 4*nfxflux_l + 4*llloadp_l
1754
1755 IF (i2nsnt>0) THEN
1756 skippon_l = skippon_l + numnod_l +1
1757 ENDIF
1758
1759C--------------------------------------------
1760C SPMD: variables preparation
1761C--------------------------------------------
1762
1763 CALL wrcomip(
1764 1 lmxvint ,lvarint ,tabvint ,ngroup_l ,lbufel_l ,
1765 2 lenwa_l ,intbag_l ,numelq_l ,numels_l ,numelc_l ,
1766 3 numelt_l ,numelr_l ,numelp_l ,numelx_l ,isumnx_l ,
1767 4 numels10_l,numels20_l,numels8_l ,numels16_l,lnom_opt ,
1768 5 numeltg_l ,numeltg6_l,nslarb_l ,numnod_l ,
1769 6 numel_l ,nsvois ,nqvois ,ntgvois, lenlas ,
1770 7 nllink_l ,llgrav_l ,llbvel_l ,nslaw_l ,
1771 8 neslaw_l ,nskyll_l ,nstrf_l ,ljoint_l ,
1772 9 lenvolu ,lenthgt ,lbufmat ,lbufgeo ,lbufsf ,
1773 a lenxlas ,lwsav_l ,lsecbuf_l ,numpor_l ,
1774 b npts ,nbddnod ,nfxvel_l ,nbddnrb ,
1775 c lcne_l ,nskyrw_l ,nskyrbk_l ,nbddi2m ,lcni2_l ,
1776 d niskyi2_l ,i2nsnt ,nconld_l ,nnmv_l ,nnmvc_l ,
1777 e nbddncj ,nbddnrbm ,nskyrbm_l ,nnodt_l ,nnodl_l ,
1778 f nmadsh4_l ,nmadsh3_l ,nmadsol_l ,nmadnod_l ,imaximp_l,
1779 g isp0 ,num16shift_l ,numsph_l ,lwasph_l ,
1780 h sphshift_l,nrcvvois ,nsndvois ,nervois ,
1781 i nesvois ,ilaw11 ,nsegfl_l ,
1782 j nbi18_l ,nskyi18_l ,leibuf_l ,
1783 k lenthg ,nfasolfr_l,lennod_l ,lenmod_l ,lenelm_l ,
1784 l lensig_l ,lenglm_l ,lencp_l ,lenlm_l ,lenfls_l ,
1785 m lendls_l ,lenmcd_l ,lengrvi_l ,lengrvr_l ,nlagf_l ,
1786 n lrbagale ,skippon_l ,nconv_l ,nfxtemp_l ,nfxflux_l ,
1787 o nrbe3_l ,llrbe3_l ,nbddrbe3m ,nskyrbe3_l,nslarbm_l ,
1788 n nskyrbmk_l,nbddnrbym ,madcl_nmadnod_l,nradia_l,nrbe2_l,
1789 q llrbe2_l ,nbddrbe2 ,numelcpxfe_l,
1790 r numnodpxfe_l,lcnepxfem_l,llcfield_l,
1791 s llloadp_l,numelcrkxfe_l,numnodcrkxfe_l,lcnecrkxfem_l,
1792 t slonfsph_l,slprtsph_l,ssphveln_l,i2nsn25_l,numelccrkxfe_l,
1793 u numeltgcrkxfe_l,numedges_l,nbddedge_l,sdd_r2r_elem,nod_xfe_l,
1794 v nsphsol_l,first_sphsol_l,ncluster_l,lenthgr,numnor_l,
1795 w nbddnort_l,nbddnor_max_l,nbccnor_l,nbccfr25_l,ns10e_l,
1796 x lcncnd_l,nbddcndm,nebcs,iebcslgth,multi_fvm,nsegquadfr_l,
1797 y nbddedgt_l,nbddedg_max_l,nrtmx25_l,lenigrnod_l,lenigrbric_l,
1798 z lenigrquad_l,lenigrsh4n_l,lenigrtrus_l,lenigrbeam_l,lenigrspri_l,
1799 1 lenigrsh3n_l,lenisurf_l,lenislin_l, ne_nervois, ne_nesvois,
1800 2 ne_nsvois, ne_nqvois, ne_ntgvois,nbcscyc_l,llbcscyc_l,
1801 3 ale_connectivity,n_slipring_l,n_retractor_l,n_anchor_remote_l,
1802 4 n_anchor_remote_send_l,n_seatbelt_l,n_seatbelt_2d_l,dynain_data,
1803 5 numsh4n_l,numsh3n_l,interfaces%PARAMETERS,sensors,loads_per_proc%NLOAD_CYL,
1804 6 ncload_l,npload_l,ndamp_vrel_l, unitab,
1805 7 lwamp_l,lwanmp_l,ninivelt_l,glob_therm,pblast)
1806
1807
1808 CALL wrcomr(lmxvrea,lvarrea,tabvrea,msndp(p),p,interfaces%PARAMETERS,
1809 . unitab ,glob_therm, output)
1810C--------------------------------------
1811C write TEXT
1812C--------------------------------------
1813 DO i=1,ltitle
1814 ititle(i) = ichar( names_and_titles%TITLE(i:i) )
1815 ENDDO
1816 CALL write_i_c(ititle,ltitle)
1817C--------------------------------------
1818C Write HEADER.
1819C--------------------------------------
1820C RADIOSS FILE R/W
1821 tabhead(1) =iradios
1822C RESTART FILE
1823 tabhead(2) =iresfil
1824C ITESTV
1825 tabhead(3) =itestv
1826C THIS RUN NUMBER
1827 tabhead(4) =irun
1828C CODE FOR THIS RUN (-1:UNKNOWN,0:STARTER,1:ENGINE,2:MODIF)
1829 IF(irun==0)THEN
1830 icodrun =0
1831 ELSE
1832 icodrun =2
1833 ENDIF
1834 tabhead(5) =icodrun
1835C CODVERS FOR THIS RUN
1836 tabhead(6) =codvers
1837C MINOR VERSION CODE FOR THIS RUN
1838 tabhead(7) =iminver
1839C SOURCE VERSION CODE FOR THIS RUN
1840 tabhead(8) =isrcver
1841C INPUT VERSION FOR THIS RUN
1842 tabhead(9) =invers
1843C
1844 IF(irun==0)THEN
1845 scodver=codvers
1846 sminver=iminver
1847 ssrcver=isrcver
1848 ENDIF
1849C STARTER CODVERS
1850 tabhead(10)=scodver
1851C STARTER MINOR VERSION CODE.
1852 tabhead(11)=sminver
1853C STARTER SOURCE VERSION CODE.
1854 tabhead(12)=ssrcver
1855C STARTER INPUT VERSION
1856 tabhead(13)=invstr
1857C
1858 tabhead(14)=lvarint
1859 tabhead(15)=lvarrea
1860C
1861 CALL write_i_c(lheader, 1)
1862 CALL write_i_c(tabhead, lheader)
1863 len_ia = len_ia + lheader + 1
1864C--------------------------------------
1865 CALL write_i_c(tabvint,lvarint)
1866 len_ia = len_ia + lvarint
1867C--------------------------------------
1868#ifdef DNC
1869 CALL wrdum_info()
1870#endif
1871 CALL checksum_write_starter_restart(output)
1872C NODGLOB Deplacee
1873C--------------------------------------
1874 CALL write_i_c(nodglob,numnod_l)
1875 len_ia = len_ia + numnod_l
1876 CALL w_main_proc_weight(nodglob,numnod_l,nspmd,p)
1877 len_ia = len_ia + 2*numnod_l
1878C--------------------------------------
1879C Integers
1880C--------------------------------------
1881 len_g = npropgi*numgeo
1882 len_m = npropmi*nummat
1883 CALL w_inloc(icode,nodglob,numnod_l,len_ia)
1884C--------------------------------------
1885
1886 IF(numsph>0.AND.nspcond>0)THEN
1887 CALL w_iskewsp(iskew,nodglob,numnod_l,numsph_l,cepsp,p-1,len_ia)
1888 ELSE
1889 CALL w_inloc(iskew,nodglob,numnod_l,len_ia)
1890 END IF
1891 CALL w_iskn(
1892 1 iskn,numskw,min(iun,nspcond)*numsph_l,iframe,numfram,nodlocal,
1893 2 p ,numnod,cepsp ,len_ia )
1894 CALL write_i_c(ibcslag,5*nbcslag)
1895 len_ia = len_ia + 5*nbcslag
1896 CALL write_i_c(ipart,lipart1*(npart+nthpart))
1897 len_ia = len_ia + (npart+nthpart)
1898 CALL write_i_c(iparth,2*9*(npart+nthpart))
1899 len_ia = len_ia + 2*9*(npart+nthpart)
1900C--------------------------------------------
1901C Parts Elements
1902C--------------------------------------------
1903 off = 0
1904 CALL w_ieloc(iparts,cep(min(off+1,len_cep)),p-1,numels,numels_l,len_ia)
1905 off = off + numels
1906 CALL w_ieloc(ipartq,cep(min(off+1,len_cep)),p-1,numelq,numelq_l,len_ia)
1907 off = off + numelq
1908 CALL w_ieloc(ipartc,cep(min(off+1,len_cep)),p-1,numelc,numelc_l,len_ia)
1909 off = off + numelc
1910 CALL w_ieloc(ipartt,cep(min(off+1,len_cep)),p-1,numelt,numelt_l,len_ia)
1911 off = off + numelt
1912 CALL w_ieloc(ipartp,cep(min(off+1,len_cep)),p-1,numelp,numelp_l,len_ia)
1913 off = off + numelp
1914 CALL w_ieloc(ipartr,cep(min(off+1,len_cep)),p-1,numelr,numelr_l,len_ia)
1915 off = off + numelr
1916 CALL w_ieloc(iparttg,cep(min(off+1,len_cep)),p-1,numeltg,numeltg_l,len_ia)
1917 off = off + numeltg
1918 CALL w_ieloc(ipartx,cep(min(off+1,len_cep)),p-1,numelx,numelx_l,len_ia)
1919 off = off + numelx
1920 CALL w_ieloc(ipartsp,cepsp,p-1,numsph,numsph_l,len_ia)
1921c OFF = OFF + NUMSPH
1922 CALL w_ieloc(ipartig3d,cep(min(off+1,len_cep)),p-1,numelig3d,numelig3d_l,len_ia)
1923C
1924 IF(p==1)THEN
1925 CALL write_i_c(nom_opt,lnom_opt)
1926 len_ia = len_ia + lnom_opt
1927 ENDIF
1928C
1929 CALL python_serialize(python,buffer, buffer_size)
1930 CALL write_i_c(buffer, buffer_size)
1931
1932 CALL write_i_c(npc,3*nfunct+1)
1933 len_ia = len_ia + 3*nfunct+1
1934
1935C--------------------------------------------
1936C Connectivity for Triangles
1937C--------------------------------------------
1938 off = numels+numelq+numelc+numelt+numelp+numelr
1939 CALL w_ixloc(ixtg,nixtg,3,cep(min(off+1,len_cep)),p-1,
1940 + numeltg,numeltg_l,nodlocal,len_ia)
1941C--------------------------------------------
1942C boundary Elts CFD/ALE
1943C--------------------------------------------
1944 ishadow = 0
1945 IF(detonators%IS_SHADOWING_REQUIRED) ishadow = 1
1946 IF (iale+ieuler+glob_therm%ITHERM+ialelag +ishadow > 0) THEN
1947 IF(numels_l+numelq_l+numeltg_l>0) THEN
1948 ALLOCATE(idglob_l(numels_l + nsvois + numelq_l + nqvois + numeltg_l + ntgvois))
1949 ALLOCATE(uidglob_l(numels_l + nsvois + numelq_l + nqvois + numeltg_l + ntgvois))
1950 ALLOCATE( id_global_vois(numels_l*6+numelq_l*4+3*numeltg_l) )
1951 id_global_vois(1:numels_l*6+numelq_l*4+3*numeltg_l) = 0
1952 ALLOCATE( face_vois(numels_l*6+numelq_l*4+3*numeltg_l) )
1953 face_vois(1:numels_l*6+numelq_l*4+3*numeltg_l) = -1
1954 ELSE
1955 ALLOCATE( id_global_vois(0) )
1956 ALLOCATE(idglob_l(0))
1957 ALLOCATE(uidglob_l(0))
1958 ALLOCATE( face_vois(0) )
1959 ENDIF
1960 numel = max(numels,numelq,numeltg)
1961 IF(nsvois>0)
1962 + ALLOCATE(ixsf(nsvois*nixs))
1963 IF(nqvois>0)
1964 + ALLOCATE(ixqf(nqvois*nixq))
1965 IF(ntgvois>0)
1966 + ALLOCATE(ixtgf(ntgvois*nixtg))
1967 CALL c_ixfloc(numel,ixsf,ixqf,ixtgf,nsvois,
1968 + nqvois,ntgvois,p-1,iparg,cep,cel,
1969 + ale_connectivity,ee_connect_l,ixs,ixq,ixtg,nodlocal,numels_l,numelq_l,numeltg_l,multi_fvm,
1970 + id_global_vois,indx_s,indx_q,indx_tg,face_elm_s,face_elm_q,face_elm_tg,face_vois,
1971 + detonators%IS_SHADOWING_REQUIRED)
1972
1973 CALL write_i_c(ixtgf, nixtg * ntgvois)
1974 len_ia = len_ia + nixtg * ntgvois
1975 IF (ntgvois > 0)
1976 + DEALLOCATE(ixtgf)
1977 IF (multi_fvm%NS_DIFF) THEN
1978 CALL c_idglob(numel, numels_l, numelq_l, numeltg_l, numels, numelq, numeltg,
1979 . p - 1, cel, cep, iparg, ale_connectivity, ixs,ixq,ixtg, idglob_l, uidglob_l, n2d, ngroup, nparg)
1980 ENDIF
1981 ENDIF
1982C--------------------------------------------
1983C Triangles
1984C--------------------------------------------
1985 off = off+numeltg3
1986 CALL w_ixbloc(ixtg6,3,4,cep(min(off+1,len_cep)),p-1,
1987 + numeltg6,numeltg6_l,nodlocal,len_ia)
1988C OFF = OFF+NUMELTG6
1989C--------------------------------------------
1990C Solid: elements connectivity
1991C--------------------------------------------
1992 off = 0
1993 CALL w_ixloc(ixs,nixs,8,cep(min(off+1,len_cep)),p-1,
1994 + numels,numels_l,nodlocal,len_ia)
1995C
1996 IF (iale+ieuler+glob_therm%ITHERM+ialelag > 0) THEN
1997 CALL write_i_c(ixsf,nixs*nsvois)
1998 len_ia = len_ia + nixs*nsvois
1999 IF(nsvois>0)
2000 + DEALLOCATE(ixsf)
2001 ENDIF
2002C--------------------------------------------
2003C Solids
2004C--------------------------------------------
2005 off = off+numels8
2006 CALL w_ixaloc(ixs10,6,cep(min(off+1,len_cep)),p-1,
2007 + numels10,numels10_l,nodlocal,len_ia)
2008 off = off+numels10
2009 CALL w_ixaloc(ixs20,12,cep(min(off+1,len_cep)),p-1,
2010 + numels20,numels20_l,nodlocal,len_ia)
2011 off = off+numels20
2012 CALL w_ixaloc(ixs16,8,cep(min(off+1,len_cep)),p-1,
2013 + numels16,numels16_l,nodlocal,len_ia)
2014 off = off+numels16
2015 CALL w_ixloc(ixq,nixq,4,cep(min(off+1,len_cep)),p-1,
2016 + numelq,numelq_l,nodlocal,len_ia)
2017 off = off+numelq
2018C--------------------------------------------
2019C Boundary Elts CFD/ALE
2020C--------------------------------------------
2021 IF (iale+ieuler+glob_therm%ITHERM+ialelag > 0) THEN
2022 CALL write_i_c(ixqf,nixq*nqvois)
2023 len_ia = len_ia + nixq*nqvois
2024 IF(nqvois>0)
2025 + DEALLOCATE(ixqf)
2026 ENDIF
2027C--------------------------------------------
2028 CALL w_ixloc(ixc,nixc,4,cep(min(off+1,len_cep)),p-1,
2029 + numelc,numelc_l,nodlocal,len_ia)
2030 off = off+numelc
2031 CALL w_ixloc(ixt,nixt,2,cep(min(off+1,len_cep)),p-1,
2032 + numelt,numelt_l,nodlocal,len_ia)
2033 off = off+numelt
2034 CALL w_ixloc(ixp,nixp,3,cep(min(off+1,len_cep)),p-1,
2035 + numelp,numelp_l,nodlocal,len_ia)
2036 off = off+numelp
2037 CALL w_ixloc(ixr,nixr,3,cep(min(off+1,len_cep)),p-1,
2038 + numelr,numelr_l,nodlocal,len_ia)
2039C
2040C--------------------------------------
2041C ITAB
2042C--------------------------------------
2043 CALL w_inloc(itab,nodglob,numnod_l,len_ia)
2044 CALL w_itabm1(itabm1,itabm1(numnod+1),nodglob,nodlocal,numnod_l,
2045 . itab,len_ia)
2046C--------------------------------------
2047C GJBUFI
2048C--------------------------------------
2049 IF(ngjoint/=0 .AND. p == 1) THEN
2050 CALL w_gjoint(gjbufi,ngjoint,lkjni,nodlocal,len_ia)
2051 END IF
2052C--------------------------------------
2053C NALE and ALE neighbor
2054C--------------------------------------
2055 IF(iale+ieuler+glob_therm%ITHERM+ialelag > 0) THEN
2056 IF(iale+ieuler+ialelag/=0)
2057 . CALL w_inloc(nale,nodglob,numnod_l,len_ia)
2058
2059 itmp = SIZE(ee_connect_l%iad_connect)
2060 CALL write_i_c(itmp, 1)
2061 len_ia = len_ia + 1
2062 CALL write_i_c(ee_connect_l%iad_connect, itmp)
2063 len_ia = len_ia + itmp
2064
2065 itmp = SIZE(ee_connect_l%connected)
2066 CALL write_i_c(itmp, 1)
2067 len_ia = len_ia + 1
2068 CALL write_i_c(ee_connect_l%connected, itmp)
2069 len_ia = len_ia + itmp
2070
2071 itmp = SIZE(ee_connect_l%type)
2072 CALL write_i_c(itmp, 1)
2073 len_ia = len_ia + 1
2074 CALL write_i_c(ee_connect_l%type, itmp)
2075 len_ia = len_ia + itmp
2076
2077 itmp = SIZE(ee_connect_l%iface2)
2078 CALL write_i_c(itmp, 1)
2079 len_ia = len_ia + 1
2080 CALL write_i_c(ee_connect_l%iface2, itmp)
2081 len_ia = len_ia + itmp
2082
2083 ! write the Global ID of neighbour
2084 CALL write_i_c(id_global_vois,numels_l*6+numelq_l*4+3*numeltg_l)
2085 len_ia = len_ia + numels_l*6+numelq_l*4+3*numeltg_l
2086 ! write the Id of the remote connected element
2087 CALL write_i_c(face_vois,numels_l*6+numelq_l*4+3*numeltg_l)
2088 len_ia = len_ia + numels_l*6+numelq_l*4+3*numeltg_l
2089
2090
2091 DEALLOCATE(id_global_vois)
2092 DEALLOCATE(face_vois)
2093
2094 ALLOCATE(elemid_l(numel))
2095C ---------------------- C
2096C Node node connectivity
2097C ---------------------- C
2098 IF(ale_connectivity%has_ne_connect)THEN
2099 CALL spmd_ne_connect(ale_connectivity, p - 1, cep, cel,
2100 . nodglob, nodlocal,
2101 . numel, numnod, numel_l, numnod_l,
2102 . numels_l, numelq_l, numeltg_l,
2103 . ne_nervois, ne_nesvois,
2104 . ne_nsvois, ne_nqvois, ne_ntgvois, elemid_l, len_ia, ixs)
2105 ENDIF
2106
2107 IF(ale_connectivity%has_nn_connect .OR. ale_connectivity%has_ne_connect)THEN
2108 CALL w_ing2loc(ale_connectivity,
2109 . elemid_l,numnod,nodglob,nodlocal,numnod_l,len_ia,ale%GRID%NWALE)
2110 ENDIF
2111
2112 DEALLOCATE(elemid_l)
2113 ENDIF
2114
2115 ns_diff = 0
2116 IF (multi_fvm%NS_DIFF) ns_diff = 1
2117 CALL write_i_c(ns_diff, 1)
2118 len_ia = len_ia + 1
2119 IF (multi_fvm%NS_DIFF) THEN
2120 CALL write_i_c(idglob_l, numels_l + nsvois + numelq_l + nqvois + numeltg_l + ntgvois)
2121 len_ia = len_ia + numels_l + nsvois + numelq_l + nqvois + numeltg_l + ntgvois
2122 CALL write_i_c(uidglob_l, numels_l + nsvois + numelq_l + nqvois + numeltg_l + ntgvois)
2123 len_ia = len_ia + numels_l + nsvois + numelq_l + nqvois + numeltg_l + ntgvois
2124 ENDIF
2125C
2126C multi mat 2D mono SPMD
2127C
2128 IF(nmult > 0) THEN
2129 CALL write_i_c(ifill,sifill)
2130 CALL write_i_c(ims,sims)
2131 len_ia = len_ia +sifill + sims
2132 END IF
2133C--------------------------------------
2134C SUBSET, GROUPES, SURFACES, LIGNES ET BUFFERS ASSOCIES
2135C--------------------------------------
2136 CALL w_subset_str(subset,len_ia)
2137 CALL w_group_str(len_ia ,igrnod ,igrbric ,igrquad ,igrsh4n ,
2138 . igrsh3n ,igrtruss ,igrbeam ,igrspring ,igrpart ,
2139 . cep ,cel ,nodlocal,p-1 ,frontb_r2r,
2140 . numnod_l )
2141 CALL w_isurf_str(len_ia,p-1,numnod,nsurf,numels,
2142 . numelq,numelc,numelt,numelp,numelr,
2143 . nodlocal,scel,cel,ltitr,lenisurf_l,
2144 . nspmd,igrsurf,igrsurf_proc)
2145
2146 CALL w_islin_str(igrslin ,len_ia , p-1, nodlocal)
2147C--------------------------------------
2148C Multi-wire element
2149C--------------------------------------
2150 IF (numelx>0)
2151 . CALL w_elmx(kxx,numelx_l,isumnx_l,ixx,cep,
2152 + p-1,nodlocal,len_ia)
2153
2154C--------------------------------------
2155C SPH Cells
2156C--------------------------------------
2157 IF (numsph>0) THEN
2158 CALL w_isph(kxsp ,ixsp ,numsph_l,cepsp ,p-1 ,
2159 + nodlocal,numnod_l,ispcond ,iparg ,isphio ,
2160 + len_ia, slonfsph_l,slprtsph_l,ipartsp,
2161 + lonfsph,lprtsph, ibufssg_io,celsph,
2162 + nsphsol_l,first_sphsol_l,sph2sol ,sol2sph,
2163 + irst , numels8_l,cep ,cel ,sol2sph_typ)
2164 ENDIF
2165C--------------------------------------
2166C IBCL
2167C--------------------------------------
2168 IF (nconld>0)THEN
2169 CALL w_ibcl(ibcl,cep,p-1,nodlocal,nconld_l,len_ia)
2170 ENDIF
2171C--------------------------------------------
2172C LOAD/PRESSURE interfaces
2173C--------------------------------------------
2174 IF (nintloadp>0) THEN
2175 CALL write_i_c(kloadpinter, ninter+1)
2176 len_ia = len_ia + ninter + 1
2177 CALL write_i_c(loadpinter,s_loadpinter )
2178 len_ia = len_ia + s_loadpinter
2179 ENDIF
2180C--------------------------------------
2181C IBFV
2182C--------------------------------------
2183 IF (nfxvel>0)
2184 . CALL w_ibfv(ibfv,nfxvel,nodlocal,len_ia,
2185 . nfxvel_l,p-1)
2186C--------------------------------------
2187C LAS (renumerote directement)
2188C--------------------------------------
2189 IF (nlaser>0.AND.p==1)
2190 . CALL w_las(las,nlaser,nodlocal,len_ia)
2191C--------------------------------------
2192C IEBCS
2193C--------------------------------------
2194 nebcs_fvm = 0
2195 CALL write_i_c(nebcs, 1) ! total number of /EBCS
2196 CALL write_i_c(ebcs_tab_loc%nebcs_fvm, 1) ! multifluid ebcs number
2197 CALL write_i_c(nebcs_parallel, 1) ! /NRF or /PROPELLANT ebcs number
2198 CALL write_i_c(other_nebcs, 1) ! other ebcs
2199 ! ---------------
2200 ! common data
2201 IF (nebcs > 0)THEN
2202 CALL ebcs_tab%write_type_data(len_ia, len_am)
2203 ENDIF
2204 ! ---------------
2205
2206 ! ---------------
2207 ! multifluid EBCS
2208 DO ii = 1, nebcs
2209 IF (ebcs_tab%tab(ii)%poly%is_multifluid) THEN
2210 nebcs_fvm = nebcs_fvm + 1
2211 CALL ebcs_tab_loc%tab(nebcs_fvm)%poly%write_common_data(len_ia, len_am)
2212 CALL ebcs_tab_loc%tab(nebcs_fvm)%poly%write_data(len_ia, len_am)
2213 ENDIF
2214 ENDDO
2215 ! ---------------
2216 ! deallocation of local multifluid ebcs structure
2217 CALL ebcs_tab_loc%destroy()
2218 ! ---------------
2219
2220 ! ---------------
2221 ! other ebcs
2222 nebcs_parallel = 0
2223 DO ii = 1, nebcs
2224 ! ---------------
2225 ! NRF ebcs
2226 is_ebcs_parallel = .false.
2227 IF(ebcs_tab%tab(ii)%poly%type==10 .OR. ebcs_tab%tab(ii)%poly%type==11)is_ebcs_parallel=.true.
2228 IF(.NOT.ebcs_tab%tab(ii)%poly%is_multifluid .AND. is_ebcs_parallel) THEN
2229 nebcs_parallel = nebcs_parallel + 1
2230 DO jj = 1, ebcs_tab_loc_2%tab(nebcs_parallel)%poly%nb_node
2231 IF( nodlocal(ebcs_tab_loc_2%tab(nebcs_parallel)%poly%node_list(jj)) > 0 .AND.
2232 . nodlocal(ebcs_tab_loc_2%tab(nebcs_parallel)%poly%node_list(jj)) <= numnod ) THEN
2233 ebcs_tab_loc_2%tab(nebcs_parallel)%poly%node_list(jj) =
2234 . nodlocal(ebcs_tab_loc_2%tab(nebcs_parallel)%poly%node_list(jj))
2235 ENDIF
2236 ENDDO
2237 IF (.NOT. ebcs_tab%tab(ii)%poly%is_multifluid) THEN
2238 CALL ebcs_tab_loc_2%tab(nebcs_parallel)%poly%write_common_data(len_ia, len_am)
2239 CALL ebcs_tab_loc_2%tab(nebcs_parallel)%poly%write_data(len_ia, len_am)
2240 ENDIF
2241 ! ---------------
2242 ! other ebcs
2243 ELSEIF (.NOT.(ebcs_tab%tab(ii)%poly%is_multifluid).AND.p == 1) THEN
2244 DO jj = 1, ebcs_tab%tab(ii)%poly%nb_node
2245 ebcs_tab%tab(ii)%poly%node_list(jj) = nodlocal(ebcs_tab%tab(ii)%poly%node_list(jj))
2246 ENDDO
2247 IF (.NOT. ebcs_tab%tab(ii)%poly%is_multifluid) THEN
2248 CALL ebcs_tab%tab(ii)%poly%write_common_data(len_ia, len_am)
2249 CALL ebcs_tab%tab(ii)%poly%write_data(len_ia, len_am)
2250 ENDIF
2251 ENDIF
2252 ! ---------------
2253 ENDDO
2254 ! ---------------
2255C--------------------------------------
2256C LACCELEM (renumerote directement)
2257C--------------------------------------
2258 IF (naccelm>0)
2259 . CALL w_lacc(laccelm,naccelm,nodlocal,len_ia,cel,cep,p-1)
2260C--------------------------------------
2261C LGAUGE (renumerote directement)
2262C--------------------------------------
2263 IF (nbgauge>0)
2264 . CALL w_lgau(lgauge,nbgauge,nodlocal,len_ia,cel,cep,p-1)
2265C--------------------------------------
2266C LLINK
2267C--------------------------------------
2268 IF (nlink>0)
2269 . CALL w_llink(nnlink,lllink,nodlocal,p-1,nllink_l,len_ia)
2270C--------------
2271C--------------
2272C USER WINDOWS
2273C--------------
2274 CALL spmd_userwi_rest(user_windows,nodlocal,numnod,numnod_l,p,nspmd)
2275C--------------------------------------
2276C IPARG
2277C--------------------------------------
2278 CALL w_iparg(iparg,p-1,ngroup_l,len_ia)
2279C--------------------------------------
2280C DD_IAD
2281C--------------------------------------
2282 CALL write_i_c(dd_iad,(nspmd+1)*nspgroup)
2283 len_ia = len_ia + (nspmd+1)*nspgroup
2284C--------------------------------------
2285C IGRAV
2286C--------------------------------------
2287 IF (ngrav>0)
2288 . CALL w_igrav(igrav,lgrav,nodlocal,p-1,llgrav_l,len_ia,numnod_l)
2289C--------------------------------------
2290C IEXLNK (RAD2RAD)
2291C--------------------------------------
2292 IF (nr2rlnk>0) THEN
2293 CALL write_i_c(iexlnk,nr2r*nr2rlnk)
2294 len_ia = len_ia + nr2r*nr2rlnk
2295 END IF
2296C--------------------------------------
2297C IBVEL
2298C--------------------------------------
2299 IF (nibvel>0)
2300 . CALL w_ibvel(ibvel,lbvel,nodlocal,p-1,llbvel_l,len_ia)
2301C--------------------------------------
2302C IRBE2
2303C--------------------------------------
2304 IF (nrbe2>0) THEN
2305 IF(nbddrbe2>0) THEN
2306 ALLOCATE(itabrbe2m(numnod_l))
2307 ELSE
2308 ALLOCATE(itabrbe2m(1))
2309 ENDIF
2310 CALL w_irbe2(irbe2 ,lrbe2 ,nodlocal ,p-1 ,
2311 . llrbe2_l,itabrbe2m,nbddrbe2,numnod_l,len_ia )
2312 ELSE
2313 ALLOCATE(itabrbe2m(1))
2314 ENDIF
2315C--------------------------------------
2316C IRBE3
2317C--------------------------------------
2318 IF (nrbe3>0) THEN
2319 IF(nbddrbe3m>0) THEN
2320 ALLOCATE(itabrbe3m(numnod_l))
2321 ELSE
2322 ALLOCATE(itabrbe3m(1))
2323 ENDIF
2324 CALL w_irbe3(irbe3 ,lrbe3 ,nodlocal ,p-1 ,
2325 . llrbe3_l,itabrbe3m,nbddrbe3m,numnod_l,len_ia)
2326 ELSE
2327 ALLOCATE(itabrbe3m(1))
2328 ENDIF
2329C--------------------------------------
2330C IACTIV
2331C--------------------------------------
2332 IF (nactiv>0)
2333 . CALL write_i_c(iactiv,lactiv*nactiv)
2334 len_ia = len_ia + lactiv*nactiv
2335C--------------------------------------
2336C MPC (entier)
2337C--------------------------------------
2338 IF (nummpc>0.AND.p==1)THEN
2339 CALL w_ibmpc(ibmpc,nummpc,lmpc,nodlocal,lag_sec,len_ia)
2340 END IF
2341C--------------------------------------
2342C KINET
2343C--------------------------------------
2344 CALL w_inloc(kinet,nodglob,numnod_l,len_ia)
2345C--------------------------------------------
2346C FASOLFR : "external segments for solids"
2347C--------------------------------------------
2348 IF(nfasolfr_l/=0)THEN
2349 CALL w_fasolfr(fasolfr ,cep ,p-1 ,cel, nfasolfr_l,
2350 . len_ia )
2351 ENDIF
2352C--------------------------------------------
2353C SEGQUADFR : "external segments for quads"
2354C--------------------------------------------
2355 IF(nsegquadfr_l/=0)THEN
2356 CALL w_segquadfr(segquadfr ,cep ,p-1 ,cel, nsegquadfr_l,
2357 . len_ia )
2358 ENDIF
2359C--------------------------------------
2360C INTBUF_TAB
2361C--------------------------------------
2362 IF(ninter>0) THEN
2363 IF(nbddi2m>0)THEN
2364 ALLOCATE(itabi2m(numnod_l))
2365 ELSE
2366 ALLOCATE(itabi2m(1))
2367 ENDIF
2368
2369c start CPU timer for INTBUF_INI
2370 CALL startime(6,1)
2371
2372 !allocate local structure INTBUF_TAB_L to stock local sizes for interfaces
2373 ALLOCATE(intbuf_tab_l(ninter))
2374
2375c start CPU timer for INTBUF_INI
2376 CALL startime(6,1)
2377
2378 !need to allocate only once at first passage in lectur
2379 flag_allocate = 0
2380
2381 !initialize local sizes in local structure
2382 CALL intbuf_ini_starter(intbuf_tab_l, ipari_l, numnod_l,
2383 . i11flag, flag_allocate, p-1,intbuf_fric_tab)
2384
2385 !write local IPARI_L
2386 CALL write_i_c(ipari_l,npari*ninter)
2387c stop CPU timer for INTBUF_INI
2388 CALL stoptime(6,1)
2389
2390 IF (i22len_l>0)THEN
2391 !initialize table to 0
2392 CALL w_bufbric_22()
2393 ENDIF
2394
2395c start CPU timer for SPLIT_INTERFACES
2396 CALL startime(7,1)
2397 CALL split_interfaces(intbuf_tab, ipari , p-1 , intbuf_tab_l,
2398 . ipari_l , intercep, nodlocal,
2399 . itab , itabi2m , nbddi2m , numnod_l ,
2400 . len_cep,cep , cel , igrbric , t8, multi_fvm,
2401 . tag_nm ,nindx_nm ,indx_nm ,tag_scratch,nindx_scrt,
2402 . indx_scrt ,flag_24_25,i24maxnsne,intbuf_fric_tab)
2403
2404
2405 DEALLOCATE(intbuf_tab_l)
2406c stop CPU timer for SPLIT_INTERFACES
2407 CALL stoptime(7,1)
2408 ELSE
2409 ALLOCATE(itabi2m(1))
2410 ENDIF
2411
2412C--------------------------------------
2413C RW and RW ALE
2414C--------------------------------------
2415 IF(nrwall > 0)
2416 + CALL w_rwall(nprw ,lprw ,rwl ,
2417 + cep ,cel ,nodlocal,p-1 ,
2418 + nslaw_l,neslaw_l ,numnod_l,len_ia)
2419C--------------------------------------------
2420C Madymo
2421C--------------------------------------------
2422 IF(nconx+nexmad/=0)
2423 + CALL w_mad(iexmad ,nmadsh4_l,nmadsh3_l,nmadsol_l,nmadnod_l,
2424 + madcl_nmadnod_l,cep ,p-1 ,nodlocal ,cel ,
2425 + numels_l,numelc_l ,numeltg_l,len_ia )
2426C--------------------------------------------
2427C RBY
2428C--------------------------------------------
2429 IF(nrbykin+nrbylag>0)
2430 + CALL w_rbyk(npby,lpby,nodlocal,p-1,nslarb_l,len_ia)
2431C--------------------------------------------
2432C Rivets
2433C--------------------------------------------
2434 IF(nrivet>0)
2435 + CALL w_irivet(ixri,nodlocal,p-1,len_ia)
2436C--------------------------------------------
2437C Sections
2438C--------------------------------------------
2439 IF(nsect>0)
2440 + CALL w_sectio(nstrf ,cep ,cel,p-1,
2441 2 nstrf_l,nodlocal,len_ia)
2442 IF(nsect>0) THEN
2443 CALL write_i_c(nom_sect,snom_sect)
2444 len_ia = len_ia + snom_sect
2445 ENDIF
2446C--------------------------------------------
2447C cylindrical joints
2448C--------------------------------------------
2449 IF(njoint>0) THEN
2450 CALL write_joint(ljoint,cep,cel,p-1,
2451 . nodlocal,ljoint_l,len_ia,numnod_l)
2452 IF(joint_sms.AND.p==1) CALL w_joint_sms(ljoint,cep,cel,p-1,
2453 + nodlocal,ljoint_l,len_ia)
2454 ENDIF
2455C--------------------------------------------
2456C Porosite
2457C--------------------------------------------
2458 IF(numpor>0)THEN
2459 CALL w_poro(pornod,p-1,numpor_l,geo,nodlocal,len_ia)
2460 ENDIF
2461C--------------------------------------------
2462C Airbags
2463C--------------------------------------------
2464 IF(nvolu>0)THEN
2465C Lenvolu = NIMV*NVOLU+LICBAG+LIBAGJET+LIBAGHOL+LIBAGALE
2466 CALL w_monvol(monvol,lenvolu,nodlocal,len_ia,monvol_l,itab,t_monvol,p)
2467 ENDIF
2468C--------------------------------------------
2469C LAG MULT
2470C--------------------------------------------
2471 IF(lag_ncf>0.AND.p==1) THEN
2472 CALL write_i_c(lagbuf,lag_nhf+3*lag_ncf+2)
2473 len_ia = len_ia + lag_nhf+3*lag_ncf+2
2474 END IF
2475C--------------------------------------
2476C WRITE ICNDS10 Itet=2 of S10
2477C--------------------------------------
2478 IF (ns10e_l > 0) THEN
2479 IF(nbddcndm > 0) THEN
2480 ALLOCATE(itabcndm(numnod_l))
2481 ELSE
2482 ALLOCATE(itabcndm(1))
2483 ENDIF
2484 CALL w_icnds10(icnds10,itagnd,p-1,nodlocal,ns10e_l,
2485 . itabcndm,nbddcndm,numnod_l,len_ia ,itab)
2486 ELSE
2487 ALLOCATE(itabcndm(1))
2488 ENDIF
2489C--------------------------------------------
2490C TH Groups
2491C--------------------------------------------
2492 CALL write_th_buffer(output%TH,nodlocal ,cel ,p,
2493 2 nthgrp0 ,nthgrp ,nthgrp01 ,nthgrp1 ,
2494 3 scel ,numsph ,numnod ,ncluster ,
2495 4 celsph ,numloccluster ,nbr_th_monvol)
2496
2497 CALL thsurf_write_restart(output%TH%TH_SURF,1)
2498 IF (output%TH%TH_SURF%PLOAD_FLAG > 0) THEN
2499 off = numelc+numeltg+numels+numelq+numelt+numelp+numelr+numelx
2500 CALL w_th_surf_pload(ibcl ,nodlocal ,p-1 ,len_ia ,cep ,
2501 . output%TH%TH_SURF,numnod ,nibcld,nconld ,len_cep,
2502 . off )
2503 ENDIF
2504 IF (output%TH%TH_SURF%LOADP_FLAG > 0) THEN
2505 off = numelc+numeltg+numels+numelq+numelt+numelp+numelr+numelx+nconld
2506 . + glob_therm%NUMCONV+glob_therm%NUMRADIA+glob_therm%NFXFLUX
2507 CALL w_th_surf_loadp(iloadp ,nodlocal ,p-1 ,len_ia ,cep ,
2508 . output%TH%TH_SURF,numnod ,sizloadp,nloadp,len_cep,
2509 . off )
2510 ENDIF
2511
2512C--------------------------------------
2513C SPMD boundarys
2514C--------------------------------------
2515 numel = max(numels,numelq)
2516 numel_l2 = max(numels_l,numelq_l)
2517 IF (multi_fvm%IS_USED .AND. n2d /= 0 .AND. numeltg /= 0) THEN
2518 numel = max(numel, numeltg)
2519 numel_l2 = max(numel_l2, numeltg_l)
2520 ENDIF
2521 nbcfd = max(nrcvvois,nsndvois,nervois,nesvois,nsegfl_l)
2522 IF(numskw>0) CALL split_skew(p,iskwp_l,iskwp,tag_skn,multiple_skew)
2523
2524 CALL w_front(
2525 1 p ,nbddacc ,nbddkin ,nodlocal,
2526 2 nbddproc,nbddboun,nodglob ,numnod_l,nbddnrb ,
2527 3 npby ,lpby ,nprw ,lprw ,len_ia ,
2528 4 dd_rby2 ,itabi2m ,nbddi2m ,cep ,monvol ,
2529 5 nnlink ,lllink ,ljoint ,
2530 6 nbddncj ,ibvel ,lbvel ,nbddnrbm,dd_rbm2 ,
2531 7 nstrf ,nnodt_l ,nnodl_l ,iexmad ,isp0 ,
2532 8 nrcvvois,nsndvois,nervois ,nesvois ,
2533 9 nsegfl_l,iparg ,
2534 a numel ,ale_connectivity ,nbcfd ,ixs ,ixq ,ixtg,
2535 b numels_l,numelq_l,numeltg_l,cel ,geo ,pornod ,
2536 c numpor_l,numel_l2,ipari ,intbuf_tab,nbi18_l ,
2537 d iexlnk ,igrnod ,dd_lagf ,nlagf_l ,iadll ,
2538 e lll ,iskwp ,nskwp ,isensp ,nsensp ,
2539 f iaccp ,naccp ,irbe3 ,lrbe3 ,itabrbe3m,
2540 g nbddrbe3m,irbym ,lcrbym ,front_rm ,dd_rbym2,
2541 h nbddnrbym,irbe2 ,lrbe2 ,nbddrbe2,itabrbe2m,
2542 i iedge_tmp,nodedge,edgelocal,nbddedge_l,
2543 j igaup ,ngaup ,frontb_r2r,sdd_r2r_elem,addcsrect,
2544 k csrect ,nbddnort_l,nbddnor_max_l,nbccfr25_l,nbccnor_l,
2545 l numnor_l ,nbddedgt_l,nbddedg_max_l,intercep ,nbddcndm,
2546 m itabcndm,multi_fvm,igrsurf,iskwp_l,ale_elm,
2547 n size_ale_elm,sensors%NSENSOR,nloc_dmg,constraint_struct,glob_therm%ITHERM)
2548 DEALLOCATE(itabi2m)
2549 DEALLOCATE(itabrbe3m)
2550 DEALLOCATE(itabrbe2m)
2551 DEALLOCATE(itabcndm)
2552 DEALLOCATE(iskwp_l)
2553C--------------------------------------
2554C Parith/ON SPMD
2555C--------------------------------------
2556 IF(ipari0/=0)
2557 + CALL w_pon(
2558 1 addcne ,cne ,lcne ,numnod_l ,nodglob ,
2559 2 lcne_l ,cep ,cel ,ixs ,ixs10 ,
2560 3 ixs20 ,ixs16 ,ixq ,ixc ,ixt ,
2561 4 ixp ,ixr ,ixtg ,monvol ,
2562 5 ibcl ,geo ,igeo ,p ,
2563 6 numels_l ,numels8_l,numels10_l,numels16_l,numels20_l,
2564 7 numelq_l ,numelc_l ,numelt_l ,numelp_l ,numelr_l ,
2565 8 numeltg_l,nskyrw_l ,nprw ,lprw ,
2566 9 nskyrbk_l,npby ,lpby ,dd_rby2 ,
2567 a i2nsnt ,i2nsn_l ,ipari ,nir ,
2568 b lcni2_l ,niskyi2_l,cepi2 ,celi2 ,cni2 ,
2569 c addcni2 ,nbddi2m ,nconld_l ,ixtg6 ,numeltg6_l,
2570 d nnmv_l ,nnmvc_l ,nskyll_l ,nnlink ,lllink ,
2571 e nskyrbm_l,dd_rbm2 ,ibvel ,lbvel ,nbi18_l ,
2572 f nskyi18_l,len_ia ,nconv_l ,ibcv ,nskyrbe3_l,
2573 g irbe3 ,lrbe3 ,nskyrbmk_l,irbym ,lcrbym ,
2574 h front_rm ,dd_rbym2 ,ibcr ,nradia_l ,addcne_pxfem,
2575 i cne_pxfem ,cel_pxfem ,lcnepxfem_l,inod_pxfem,iel_pxfem,
2576 j numelcpxfe_l , numnodpxfe_l ,lloadp ,iloadp ,
2577 k llloadp_l,addcne_crkxfem,cne_crkxfem,cel_crkxfem,
2578 l lcnecrkxfem_l,inod_crkxfem,iel_crkxfem,numelccrkxfe_l,
2579 m numnodcrkxfe_l,numeltgcrkxfe_l,cep_crkxfem,incrkxfem_l,
2580 n crknodiad ,intbuf_tab,numelig3d_l,kxig3d,ixig3d,
2581 o ibfflux ,nfxflux_l ,cepcnd ,celcnd ,addcncnd ,
2582 p cncnd ,ns10e_l ,icnds10 ,lcncnd_l ,itagnd ,igrsurf,
2583 q igrsurf_proc ,nebcs_parallel, ebcs_tab_loc_2,
2584 r number_load_cyl,loads,loads_per_proc,glob_therm)
2585
2586 ! -------------------
2587 CALL ebcs_tab_loc_2%destroy()
2588 ! -------------------
2589 CALL compress_i_nnz(igeo,len_g)
2590 len_ia = len_ia + len_g
2591 CALL compress_i_nnz(ipm,len_m)
2592 len_ia = len_ia + len_m
2593C--------------------------------------
2594C KCONTACT
2595C--------------------------------------
2596 IF(kcontact/=0)THEN
2597 CALL w_inloc(icontact,nodglob,numnod_l,len_ia)
2598 ENDIF
2599C--------------------------------------
2600 len_s=npart
2601 CALL write_i_c(ipart_state ,len_s)
2602 len_ia = len_ia + len_s
2603C--------------------------------------
2604C Adaptive meshing (integers)
2605C--------------------------------------
2606 IF(nadmesh /= 0)THEN
2607 CALL write_i_c(sh4tree,ksh4tree*numelc)
2608 len_ia = len_ia + ksh4tree*numelc
2609 CALL write_i_c(sh3tree,ksh3tree*numeltg)
2610 len_ia = len_ia + ksh3tree*numeltg
2611 CALL write_i_c(ipadmesh,kipadmesh*npart)
2612 len_ia = len_ia + kipadmesh*npart
2613 len_adm=abs(lsh4trim)
2614 CALL write_i_c(sh4trim,len_adm)
2615 len_ia = len_ia + len_adm
2616 len_adm=abs(lsh3trim)
2617 CALL write_i_c(sh3trim,len_adm)
2618 len_ia = len_ia + len_adm
2619 END IF
2620C--------------------------------------
2621C Interfaces
2622C--------------------------------------
2623 CALL startime(8,1)
2624 CALL w_fi(ipari,p-1,len_ia,
2625 1 intercep ,intbuf_tab,itab,multi_fvm,tag_scratch,
2626 2 nindx_scrt,indx_scrt ,nodlocal,numnod_l,len_cep,cep)
2627
2628c stop CPU timer for W_FI
2629 CALL stoptime(8,1)
2630
2631 IF(numsph>0.AND.nspmd>1)THEN
2632 CALL w_fsph()
2633 ENDIF
2634C--------------------------------------
2635C structure int21 (integer part)
2636C--------------------------------------
2637 IF(nintstamp /= 0)THEN
2638 CALL intstamp_wresti(intstamp, lintstamp, nodlocal)
2639 len_ia=len_ia+lintstamp
2640 END IF
2641C--------------------------------------
2642C interface friction (integers)
2643C--------------------------------------
2644 IF(ninterfric > 0) THEN
2645 CALL intfric_wresti(intbuf_fric_tab,ninterfric)
2646 ENDIF
2647C--------------------------------------
2648C Table structure (Integer Part)
2649C--------------------------------------
2650 IF(ntable /= 0)THEN
2651 CALL table_wresti(table, ltable)
2652 len_ia=len_ia+ltable
2653 END IF
2654C-------------------------------------------
2655 ! WRITE(6,*) "SITHVAR= ",SITHVAR
2656 CALL write_i_c(ithvar,sithvar)
2657 len_ia = len_ia + sithvar
2658C--------------------------------------
2659C ICFIELD
2660C--------------------------------------
2661 IF (nloadc>0)CALL w_icfield(icfield,lcfield,nodlocal,p-1,llcfield_l,len_ia,p,numnod_l)
2662 IF (nloadp>0)CALL w_iloadp(iloadp,lloadp,nodlocal,p-1,llloadp_l,len_ia,p,cep,itab,
2663 . glob_therm%NUMCONV,glob_therm%NUMRADIA,glob_therm%NFXFLUX)
2664C--------------------------------------------
2665C LOAD/PBLAST
2666C--------------------------------------------
2667 IF(pblast%NLOADP_B>0)THEN
2668 CALL pblast_write_starter(pblast,glob_therm,p-1,cep,scep,
2669 * numelc,numeltg,numels,
2670 * numelq,numelt,numelp,
2671 * numelr,numelx,nconld)
2672 ENDIF
2673C
2674C--------------------------------------------
2675C LOAD/PCYL
2676C--------------------------------------------
2677 IF (loads_per_proc%NLOAD_CYL > 0) THEN
2678 CALL write_pcyl(loads_per_proc%LOAD_CYL,loads_per_proc%NLOAD_CYL,nodlocal)
2679 ENDIF
2680C
2681C--------------------------------------
2682 IF(icrack3d > 0)THEN
2683C--------------------------------------
2684C Boundary nodes for xfem
2685C--------------------------------------
2686 CALL w_inloc(ibordnode,nodglob,numnod_l,len_ia)
2687C--------------------------------------------
2688C Shell common edges (SHELL 4-N + SHELL 3-N XFEM)
2689C--------------------------------------------
2690 CALL write_i_c(iedgesh4_l,4*numelccrkxfe_l)
2691 len_ia = len_ia + 4*numelccrkxfe_l
2692 CALL write_i_c(iedgesh3_l,3*numeltgcrkxfe_l)
2693 len_ia = len_ia + 3*numeltgcrkxfe_l
2694C
2695 CALL write_i_c(nodedge_l,2*numedges_l)
2696 len_ia = len_ia + 2*numedges_l
2697 CALL write_i_c(iedge_l,numedges_l)
2698 len_ia = len_ia + numedges_l
2699C--------------------------------------
2700C NODGLOB nodxfem
2701C--------------------------------------
2702 CALL write_i_c(nodglobxfe,nod_xfe_l)
2703 len_ia = len_ia + nod_xfe_l
2704 IF(ALLOCATED(nodglobxfe))DEALLOCATE(nodglobxfe)
2705 END IF
2706C--------------------------------------
2707C Isogeo
2708C--------------------------------------
2709 IF (numelig3d>0) CALL w_elig3d(kxig3d,numelig3d,isumnig3d_l,ixig3d,p-1,nodlocal,len_ia)
2710C--------------------------------------
2711C TAG_SKINS6 : used for /H3D/STRESS/TENS/OUTER
2712C--------------------------------------
2713 CALL w_ieloc(tag_skins6,cep,p-1,numels,numels_l,len_ia)
2714C--------------------------------------
2715C /BCS/CYCLIC
2716C--------------------------------------
2717 IF (nbcscyc_l > 0) CALL w_ibcscyc(ibcscyc,lbcscyc,nodlocal ,p-1,llbcscyc_l,nbcscyc_l,len_ia )
2718C--------------------------------------------
2719C BCS/WALL
2720C--------------------------------------------
2721 CALL w_bcs_proc(bcs_per_proc,cel,scel,len_ia,len_am)
2722C--------------------------------------
2723C Write REAL variable
2724C--------------------------------------
2725 len_am = 0
2726 CALL write_db(tabvrea, lvarrea)
2727 len_am = len_am + lvarrea
2728C--------------------------------------------
2729C X, D, V, VR, DR
2730C--------------------------------------------
2731
2732C--------------------------------------------
2733 CALL w_r3nloc(x,nodglob,numnod_l,len_am)
2734 IF(iale+ieuler+glob_therm%ITHERM+ialelag > 0)
2735 . CALL w_bid(3*nrcvvois,len_am)
2736 CALL w_r3nloc(d,nodglob,numnod_l,len_am)
2737 IF(iale+ieuler+glob_therm%ITHERM+ialelag > 0)
2738 . CALL w_bid(3*nrcvvois,len_am)
2739 CALL w_r3nloc(v,nodglob,numnod_l,len_am)
2740 IF(iale+ieuler+glob_therm%ITHERM+ialelag > 0)
2741 . CALL w_bid(3*nrcvvois,len_am)
2742 IF(iroddl>0) THEN
2743 CALL w_r3nloc(vr,nodglob,numnod_l,len_am)
2744 IF(isecut > 0 .OR. iisrot > 0 .OR. impose_dr /= 0 .OR. idrot == 1)CALL w_r3nloc(dr,nodglob,numnod_l,len_am)
2745 ENDIF
2746C--------------------------------------------
2747C THKE SHELL 4-N + SHELL 3-N
2748C--------------------------------------------
2749 off = numels + numelq
2750 CALL w_reloc(thke,cep(min(off+1,len_cep)),p-1,numelc,numelc_l,len_am)
2751 off = off + numelc + numelt + numelp + numelr
2752 CALL w_reloc(
2753 . thke(numelc+1),cep(min(off+1,len_cep)),p-1,numeltg,numeltg_l,len_am)
2754C--------------------------------------------
2755C DAMPING
2756C--------------------------------------------
2757 IF (ndamp>0) THEN
2758 CALL write_db(dampr,nrdamp*ndamp)
2759 len_am = len_am + nrdamp*ndamp
2760 IF (sdamp > 0) THEN
2761 IF(iroddl>0)THEN
2762 CALL w_rnnloc(damp,nodglob,numnod_l,6,len_am)
2763 ELSE
2764 CALL w_r3nloc(damp,nodglob,numnod_l,len_am)
2765 ENDIF
2766 ENDIF
2767 ENDIF
2768C--------------------------------------------
2769C Mass and Inertia
2770C--------------------------------------------
2771 CALL w_rnloc(ms,nodglob,numnod_l,len_am)
2772
2773C------Mass in 2D : MS_2D table is written here (MS_2D = MS in starter)-----
2774 IF(n2d>0)THEN
2775 CALL w_rnloc(ms,nodglob,numnod_l,len_am)
2776 ENDIF
2777
2778 IF(iroddl>0)
2779 . CALL w_rnloc(in,nodglob,numnod_l,len_am)
2780C--------------------------------------------
2781C Functions
2782C--------------------------------------------
2783 IF(nfunct/=0)THEN
2784 CALL write_db(tf,npts)
2785 len_am = len_am + npts
2786 ENDIF
2787C--------------------------------------------
2788C Properties Mat
2789C--------------------------------------------
2790 CALL write_db(pm,npropm*nummat)
2791 len_am = len_am + npropm*nummat
2792c
2793 CALL write_matparam(mat_elem,len)
2794C LEN_AM = LEN_AM + LEN !LEN is corrupted by uninitialized variable
2795C in write_matparam
2796C--------------------------------------------
2797C global thermal parameters
2798C--------------------------------------------
2799! CALL WRITE_GLOB_THERM(MAT_ELEM,LEN)
2800C--------------------------------------
2801C ELGROUP_PARAM
2802C--------------------------------------
2803 CALL write_elgroup_param(group_param_tab,iparg,p-1,ngroup_l,len)
2804 len_am = len_am + len
2805C--------------------------------------------
2806C Skew and Frames
2807C--------------------------------------------
2808 CALL write_db(skew,lskew*(numskw+1))
2809 len_am = len_am + lskew*(numskw+1)
2810 IF(numsph>0.AND.nspcond>0)THEN
2811 CALL w_skwsph(
2812 . skew(lskew*(numskw+1)+1),numsph_l,cepsp,p-1,len_am)
2813 IF(nsubmod>0)
2814 . CALL w_skwsub(
2815 . skew(lskew*(numskw+1+numsph_l)+1),len_am)
2816 ELSEIF(nsubmod>0)THEN
2817 CALL w_skwsub(
2818 . skew(lskew*(numskw+1)+1),len_am)
2819 ENDIF
2820 CALL write_db(xframe,nxframe*(numfram+1))
2821 len_am = len_am + nxframe*(numfram+1)
2822C--------------------------------------------
2823C Properties Geo
2824C--------------------------------------------
2825 IF(numpor==0)THEN
2826 CALL compress_r_nnz(geo,numgeo*npropg)
2827 ELSE
2828 CALL w_geo(geo,nodlocal)
2829 END IF
2830 len_am = len_am + npropg*numgeo
2831C--------------------------------------------
2832C Eani solide+quad+shell+triangle
2833C--------------------------------------------
2834 off = 0
2835 CALL w_reloc(eani(off+1),cep(min(off+1,len_cep)),p-1,numels,numels_l,len_am)
2836 off = off + numels
2837 CALL w_reloc(eani(off+1),cep(min(off+1,len_cep)),p-1,numelq,numelq_l,len_am)
2838 off = off + numelq
2839 CALL w_reloc(eani(off+1),cep(min(off+1,len_cep)),p-1,numelc,numelc_l,len_am)
2840 shf = off + numelc
2841 off = off + numelc + numelt + numelp + numelr
2842 CALL w_reloc(eani(shf+1),cep(min(off+1,len_cep)),p-1,numeltg,numeltg_l,len_am)
2843C--------------------------------------------
2844C BUFMAT BUFGEO BUFSF
2845C--------------------------------------------
2846 CALL write_db(bufmat,lbufmat)
2847 len_am = len_am + lbufmat
2848 IF(iresp == 1)THEN
2849C In BUFGEO is a double precision Buffer, even in Single Precision
2850 ALLOCATE (rbufgeo(lbufgeo))
2851 rbufgeo(1:lbufgeo)=bufgeo(1:lbufgeo)
2852 CALL write_db(rbufgeo,lbufgeo)
2853 ELSE
2854 CALL write_db(bufgeo,lbufgeo)
2855 ENDIF
2856 len_am = len_am + lbufgeo
2857 CALL write_db(bufsf ,lbufsf )
2858 len_am = len_am + lbufsf
2859C Lag Options
2860 IF(nummpc>0.AND.p==1)THEN
2861 CALL write_db(brmpc,lmpc)
2862 len_am = len_am + lmpc
2863 END IF
2864 IF(ngjoint>0.AND.p==1)THEN
2865 CALL write_db(gjbufr,lkjnr*ngjoint)
2866 len_am = len_am + lkjnr*ngjoint
2867 END IF
2868C--------------------------------------------
2869C W, VEUL, WB, ASAV, DSAV,
2870C--------------------------------------------
2871 IF(iale/=0) THEN
2872 CALL w_r3nloc(w,nodglob,numnod_l,len_am)
2873 ENDIF
2874 IF(ieuler * (1 - imulti_fvm)/=0)THEN
2875 IF(n2d==0) THEN
2876 off = 0
2877 CALL w_reloc2(
2878 . veul,lveul,cep(min(off+1,len_cep)),p-1,numels,numels_l,len_am)
2879 ELSE
2880 off = numels
2881 CALL w_reloc2(veul,10,cep(min(off+1,len_cep)),p-1,numelq,numelq_l,len_am)
2882 ENDIF
2883 ENDIF
2884C--------------------------------------------
2885C Multifluid law velocity
2886C--------------------------------------------
2887 IF (multi_fvm%IS_USED) THEN
2888 CALL write_db(multi_fvm%PRES_SHIFT, 1)
2889 IF (n2d == 0) THEN
2890 CALL write_db(multi_fvm_vel_l(1, 1:numels_l),
2891 . numels_l)
2892 CALL write_db(multi_fvm_vel_l(2, 1:numels_l),
2893 . numels_l)
2894 CALL write_db(multi_fvm_vel_l(3, 1:numels_l),
2895 . numels_l)
2896 ELSE
2897 CALL write_db(multi_fvm_vel_l(1, 1:numelq_l + numeltg_l),
2898 . numelq_l + numeltg_l)
2899 CALL write_db(multi_fvm_vel_l(2, 1:numelq_l + numeltg_l),
2900 . numelq_l + numeltg_l)
2901 CALL write_db(multi_fvm_vel_l(3, 1:numelq_l + numeltg_l),
2902 . numelq_l + numeltg_l)
2903 ENDIF
2904 ENDIF
2905C
2906C multi mat 2D: mono SPMD
2907C
2908 IF(nmult > 0) THEN
2909 CALL w_rfilloc(fill,nodglob,numnod,numnod_l,nmult,len_am)
2910 CALL w_rfilloc(dfill,nodglob,numnod,numnod_l,nmult,len_am)
2911 CALL write_db(alph,salph)
2912 len_am = len_am + salph
2913 END IF
2914 IF(ale%GRID%NWALE==2) THEN
2915 CALL w_r3nloc(wb,nodglob,numnod_l,len_am)
2916 ELSEIF(ale%GRID%NWALE==4) THEN
2917 CALL w_r3nloc(wb,nodglob,numnod_l,len_am)
2918 CALL w_rnloc(wma,nodglob,numnod_l,len_am)
2919 ENDIF
2920 IF(ilag==1.AND.(iale+ieuler)/=0)THEN
2921 CALL w_r3nloc(dsav,nodglob,numnod_l,len_am)
2922 CALL w_r3nloc(asav,nodglob,numnod_l,len_am)
2923 ENDIF
2924C--------------------------------------
2925C SPH Cells real part
2926C--------------------------------------
2927 IF (numsph>0)THEN
2928 CALL w_rsph(spbuf ,numsph_l,cepsp,p-1,vsphio,len_am, ssphveln_l )
2929 ENDIF
2930C--------------------------------------
2931C Nodal fluid masses
2932C--------------------------------------
2933 IF(iale == 1 .OR. ieuler == 1 .OR. ialelag == 1) THEN
2934 CALL w_rnloc(msnf,nodglob,numnod_l,len_am)
2935 ENDIF
2936C--------------------------------------------
2937C Pressure & concentrated loads
2938C--------------------------------------------
2939c CALL WRITE_DB(FAC,NCONLD)
2940c LEN_AM = LEN_AM + NCONLD
2941 IF(nconld>0)CALL w_fac(fac,cep,p-1,nconld_l,len_am)
2942C--------------------------------------------
2943C Fixvel real
2944C--------------------------------------------
2945 IF(nfxvel_l>0)CALL w_fixvel(vel,nfxvel,ibfv,nfxvel_l,len_am,p-1)
2946C--------------------------------------------
2947C FSAV
2948C--------------------------------------------
2949 CALL write_db(fsav,nthvki*(ninter+nrwall+nrbody+nsect+njoint+nrbag+nvolu+nfxbody+nintsub))
2950 len_am = len_am + nthvki*(ninter+nrwall+nrbody+nsect+njoint+nrbag+nvolu+ nfxbody+nintsub)
2951C--------------------------------------------
2952C TIMER MAT/PROP and WEIGHT
2953C--------------------------------------------
2954 CALL write_i_c(tab_ump,taille*7)
2955C
2956 CALL write_i_c(poin_ump,nummat)
2957c
2958 CALL w_tabmat_prop(iparg,ixc,ixtg,ixs,p-1,ngroup_l,
2959 . poin_part_shell,poin_part_tri,poin_part_sol,
2960 . mid_pid_shell,mid_pid_tri,mid_pid_sol,
2961 . ipartc,iparttg,iparts)
2962C--------------------------------------------
2963C FZERO Equilibre
2964C--------------------------------------------
2965 IF(isigi==2.OR.isigi==4)
2966 . CALL w_r3nloc(fzero,nodglob,numnod_l,len_am)
2967 IF(iabs(isigi)==5)THEN
2968 off = numels+numelq
2969 CALL w_reloc2(fzero,3*4,cep(min(off+1,len_cep)),p-1,numelc,numelc_l,len_am)
2970 off = off + numelc + numelt + numelp + numelr
2971 shf = numelc*3*4
2972 CALL w_reloc2(fzero(shf+1),3*4,cep(min(off+1,len_cep)),p-1,numeltg,
2973 . numeltg_l,len_am)
2974 ENDIF
2975C--------------------------------------------
2976C XLAS
2977C--------------------------------------------
2978 IF(nlaser>0.AND.p==1)THEN
2979 CALL write_db(xlas,lenxlas)
2980 len_am = len_am + lenxlas
2981 ENDIF
2982C--------------------------------------------
2983C Accelerometres
2984C--------------------------------------------
2985 IF(naccelm>0)THEN
2986 CALL write_db(accelm,naccelm*llaccelm)
2987 len_am = len_am + naccelm*llaccelm
2988 ENDIF
2989C--------------------------------------------
2990C Gauges
2991C--------------------------------------------
2992 IF(nbgauge>0)THEN
2993 CALL write_db(gauge,nbgauge*llgauge)
2994 len_am = len_am + nbgauge*llgauge
2995 ENDIF
2996C--------------------------------------------
2997C Sensors
2998C--------------------------------------------
2999 CALL write_sensors(sensors,numnod,nodlocal)
3000C--------------------------------------------
3001C RBM
3002C--------------------------------------------
3003 IF(nibvel>0)
3004 . CALL write_db(fbvel,3*nibvel)
3005 len_am = len_am + 3*nibvel
3006C--------------------------------------------
3007C RBE3
3008C--------------------------------------------
3009 IF(nrbe3>0)
3010 . CALL w_frbe3(irbe3 ,lrbe3 ,p-1 ,llrbe3_l,
3011 . frbe3 ,frbe3(3*slrbe3+1),len_am,nrbe3pen_l )
3012C--------------------------------------
3013C NACTIV
3014C--------------------------------------
3015 IF (nactiv > 0) THEN
3016 CALL write_db(factiv,lractiv*nactiv)
3017 len_am = len_am + lractiv*nactiv
3018 ENDIF
3019C--------------------------------------------
3020C GRAVFAC
3021C--------------------------------------------
3022 IF(ngrav>0)
3023 . CALL write_db(gravfac,lfacgrv*ngrav)
3024 len_am = len_am + lfacgrv*ngrav
3025C--------------------------------------------
3026C FR_WAV
3027C--------------------------------------------
3028 IF(ifrwv>0)
3029 . CALL w_rnloc(fr_wave,nodglob,numnod_l,len_am)
3030C--------------------------------------------
3031C FAILWAVE
3032C--------------------------------------------
3033 CALL w_failwave(failwave,nodglob,numnod,numnod_l,len_am,itab)
3034c
3035C--------------------------------------------
3036C NONLOCAL DAMAGE
3037C--------------------------------------------
3038 CALL write_nloc_struct(
3039 . nloc_dmg ,numnod_l ,nodglob ,nodlocal ,cel ,
3040 . cep ,p ,ixs ,ixc ,ixtg ,
3041 . numels_l ,numelc_l ,numeltg_l)
3042c
3043C--------------------------------------------
3044C PARTS0
3045C--------------------------------------------
3046 CALL write_db(parts0,npart)
3047 len_am = len_am + npart
3048C--------------------------------------------
3049C Element Buffer
3050C--------------------------------------------
3051 CALL w_bufel(iparg,p-1,lbufel_l,elbuf,len_am) ! old buffer
3052c------------------
3053 flag_xfem = 0
3054 CALL w_elbuf_str(p-1,iparg,elbuf_tab,len_am,flag_xfem)
3055c------------------
3056 IF (icrack3d > 0) THEN ! if XFEM
3057 DO ixel=1,nxel
3058 flag_xfem = 1
3059 CALL w_elbuf_str(p-1,iparg,xfem_tab(1:ngroup,ixel),len_am,flag_xfem)
3060 ENDDO
3061 ENDIF
3062C--------------------------------------------
3063C clusters
3064C--------------------------------------------
3065 IF (ncluster > 0) CALL w_cluster(clusters,
3066 . iparg,nodlocal,
3067 . ncluster_l,cep,p-1,
3068 . numlocgroup,
3069 . len_ia,len_am)
3070C--------------------------------------------
3071C RWALL and RWALL ALE
3072C--------------------------------------------
3073 CALL w_rwar(nprw,lprw ,rwl, rwsav,
3074 + lwsav_l,lrw_pen_l,nrw_pen_l,
3075 + rwstif_pen,sln_pen,cep,p-1,len_am)
3076C--------------------------------------------
3077C RBY
3078C--------------------------------------------
3079 CALL write_db(rby,nrby*nrbykin)
3080 len_am = len_am + nrby*nrbykin
3081 IF(p == 1 .AND. nrbylag > 0) THEN
3082 CALL write_db(rby(nrby*nrbykin+1),nrby*nrbylag)
3083 len_am = len_am + nrby*nrbylag
3084 END IF
3085C--------------------------------------------
3086C RIVET
3087C--------------------------------------------
3088 CALL write_db(rivet,nrivet*nrivf)
3089 len_am = len_am + nrivet*nrivf
3090C--------------------------------------------
3091C SECBUF
3092C--------------------------------------------
3093 IF(nsect>0)
3094 + CALL w_secbuf(secbuf,lsecbuf_l,nstrf,p-1,len_am)
3095C--------------------------------------------
3096C RVOLU
3097C--------------------------------------------
3098 CALL write_db(rvolu,nrvolu*nvolu+lrcbag+lrbagjet+lrbaghol
3099 . +lrbagale)
3100 len_am = len_am + nrvolu*nvolu+lrcbag+lrbagjet+lrbaghol
3101 . + lrbagale
3102C--------------------------------------------
3103C LAMBDA
3104C--------------------------------------------
3105 ncmax = lag_ncf + lag_ncl
3106 IF(ncmax>0.AND.p==1)THEN
3107 CALL write_db(lambda,ncmax)
3108 len_am = len_am + ncmax
3109 END IF
3110C--------------------------------------------
3111C RCONX
3112C--------------------------------------------
3113 IF(nconx>0.AND.p==1)THEN
3114 CALL write_db(rconx,nconx*nrcnx)
3115 len_am = len_am + nconx*nrcnx
3116 END IF
3117C--------------------------------------------
3118C Adaptive meshing CONTACT vectors
3119C--------------------------------------------
3120 IF(nadmesh /= 0)THEN
3121 CALL w_rnloc(rcontact,nodglob,numnod_l,len_am)
3122 CALL w_rnloc(acontact,nodglob,numnod_l,len_am)
3123 CALL w_rnloc(pcontact,nodglob,numnod_l,len_am)
3124 END IF
3125C--------------------------------------
3126C PARTSAV
3127C--------------------------------------
3128 IF (npsav>=25)THEN
3129 IF (p==1) THEN
3130 CALL write_db(partsav,npsav*npart)
3131 len_am = len_am + npsav*npart
3132 ELSE
3133 rdpartsav= 0
3134 CALL write_db(rdpartsav,npsav*npart)
3135 len_am = len_am + npsav*npart
3136 ENDIF
3137 ENDIF
3138C--------------------------------------
3139C Lengths for checkpoint restart
3140C--------------------------------------
3141 my_ilen = 0
3142 my_rlen = 0
3143 CALL write_i_c(my_ilen,1)
3144 CALL write_i_c(my_rlen,1)
3145 len_ia=len_ia+2
3146C--------------------------------------
3147C Elem Masses
3148C--------------------------------------
3149 IF(nadmesh /= 0 .OR. irest_mselt /= 0)THEN
3150 off = numels + numelq
3151 CALL w_reloc2(msc,1,cep(min(off+1,len_cep)),p-1,numelc,numelc_l,
3152 . len_am )
3153 CALL w_reloc2(inc,1,cep(min(off+1,len_cep)),p-1,numelc,numelc_l,
3154 . len_am )
3155 off = off + numelc + numelt + numelp + numelr
3156 CALL w_reloc2(mstg,1,cep(min(off+1,len_cep)),p-1,numeltg,numeltg_l,
3157 . len_am )
3158 CALL w_reloc2(intg,1,cep(min(off+1,len_cep)),p-1,numeltg,numeltg_l,
3159 . len_am )
3160 CALL w_reloc2(ptg,3,cep(min(off+1,len_cep)),p-1,numeltg,numeltg_l,
3161 . len_am )
3162 END IF
3163
3164 IF(irest_mselt /= 0)THEN
3165 off = 0
3166 CALL w_reloc2(mssa,1,cep(min(off+1,len_cep)),p-1,numels,numels_l,
3167 . len_am )
3168 off = numels+numelq+numelc
3169 CALL w_reloc2(mstr,1,cep(min(off+1,len_cep)),p-1,numelt,numelt_l,
3170 . len_am )
3171 off = off+numelt
3172 CALL w_reloc2(msp,1,cep(min(off+1,len_cep)),p-1,numelp,numelp_l,
3173 . len_am )
3174 off = off+numelp
3175 CALL w_reloc2(msrt,1,cep(min(off+1,len_cep)),p-1,numelr,numelr_l,
3176 . len_am )
3177 END IF
3178C--------------------------------------
3179C Adaptive meshing (float)
3180C--------------------------------------
3181 IF(nadmesh /= 0)THEN
3182 CALL write_db(padmesh,kpadmesh*npart)
3183 len_am = len_am + kpadmesh*npart
3184 IF (glob_therm%ITHERM_FE > 0)THEN
3185 CALL write_db(mcpc,numelc)
3186 len_am = len_am + numelc
3187 CALL write_db(mcptg,numeltg)
3188 len_am = len_am + numeltg
3189 END IF
3190 END IF
3191C
3192C--------------------------------------------
3193C CBAPINCHING
3194C--------------------------------------------
3195 IF(npinch > 0 ) THEN
3196 CALL write_db(pinch_data%VPINCH,3*numnod_l)
3197 len_am = len_am + 3*numnod_l
3198 DEALLOCATE(pinch_data%VPINCH)
3199
3200 CALL write_db(pinch_data%DPINCH,3*numnod_l)
3201 len_am = len_am + 3*numnod_l
3202 DEALLOCATE(pinch_data%DPINCH)
3203
3204 CALL write_db(pinch_data%XPINCH,3*numnod_l)
3205 len_am = len_am + 3*numnod_l
3206 DEALLOCATE(pinch_data%XPINCH)
3207
3208 CALL write_db(pinch_data%MSPINCH,numnod_l)
3209 len_am = len_am + numnod_l
3210 DEALLOCATE(pinch_data%MSPINCH)
3211 ENDIF
3212C
3213 IF(istatcnd /= 0)THEN
3214 CALL w_rnloc(mscnd,nodglob,numnod_l,len_am)
3215 CALL w_rnloc(incnd,nodglob,numnod_l,len_am)
3216 END IF
3217C--------------------------------------
3218C structure int21
3219C--------------------------------------
3220 IF(nintstamp /= 0)THEN
3221 CALL intstamp_wrestr(intstamp,lintstamp)
3222 len_am=len_am+lintstamp
3223 END IF
3224C--------------------------------------
3225C FRICTION INTERFACE (REALS)
3226C--------------------------------------
3227 IF(ninterfric > 0) THEN
3228 CALL intfric_wrestr(intbuf_fric_tab,ninterfric)
3229 ENDIF
3230C-----------------------------------------------
3231 CALL w_rnloc(ms0,nodglob,numnod_l,len_am)
3232 IF(sin > 0) CALL w_rnloc(in,nodglob,numnod_l,len_am)
3233C--------------------------------------
3234C Advanced Mass Scaling
3235C--------------------------------------
3236 IF(idtmins==1)THEN
3237 CALL w_rnloc (admsms,nodglob,numnod_l,len_am)
3238 CALL w_r3nloc(res_sms,nodglob,numnod_l,len_am)
3239 ELSEIF(idtmins==2)THEN
3240 CALL w_rnloc (dmelc ,nodglob,numelc_l,len_am)
3241 CALL w_rnloc (dmeltg ,nodglob,numeltg_l,len_am)
3242 CALL w_rnloc (dmels ,nodglob,numels_l,len_am)
3243 CALL w_rnloc (dmeltr ,nodglob,numelt_l,len_am)
3244 CALL w_rnloc (dmelp ,nodglob,numelp_l,len_am)
3245 CALL w_rnloc (dmelrt ,nodglob,numelr_l,len_am)
3246 CALL w_r3nloc(res_sms,nodglob,numnod_l,len_am)
3247 END IF
3248 IF(idtmins==2.OR.idtmins_int/=0) THEN
3249 CALL w_rnloc(diag_sms,nodglob,numnod_l,len_am)
3250 END IF
3251 IF(isms_selec /= 0) THEN
3252 CALL w_inloc(nativ_sms,nodglob,numnod_l,len_ia)
3253 ENDIF
3254C--------------------------------------
3255C TABLE (float)
3256C--------------------------------------
3257 IF(ntable /= 0)THEN
3258 CALL table_wrestr(table, ltable)
3259 len_am=len_am+ltable
3260 END IF
3261#ifdef DNC
3262C--------------------------------------
3263C MDS Restart information
3264C--------------------------------------
3265 CALL mds_restart()
3266#endif
3267C--------------------------------------
3268C ALE LINKS
3269C--------------------------------------
3270 IF(nalelk>0.AND.slinale>0)THEN
3271 CALL write_i_c(linale,slinale)
3272 ENDIF
3273C--------------------------------------
3274C ALE LINKS
3275C--------------------------------------
3276 CALL write_ale_grid()
3277C-----------------------------------------------
3278C FXBODY
3279C-----------------------------------------------
3280 IF (nfxbody>0) THEN
3281 CALL fxbwrestp(
3282 . fxbipm_l, fxbrpm, fxbnod_l, fxbmod_l, fxbglm_l,
3283 . fxbcpm_l, fxbcps_l, fxblm_l, fxbfls_l, fxbdls_l,
3284 . fxbdep, fxbvit, fxbacc, fxbelm_l, fxbsig_l,
3285 . fxbgrvi_l, fxbgrvr_l, lennod_l, lenmod_l, lenglm_l,
3286 . lencp_l, lenlm_l, lenfls_l, lendls_l, lenelm_l,
3287 . lensig_l, lengrvi_l, lengrvr_l, len_am, itask)
3288C
3289 DEALLOCATE(fxbnod_l, fxbmod_l, fxbglm_l, fxbcpm_l, fxbcps_l,
3290 . fxblm_l, fxbfls_l, fxbdls_l, fxbelm_l, fxbsig_l,
3291 . fxbgrvi_l, fxbgrvr_l)
3292 ENDIF
3293C-----------------------------------------------
3294C EIG
3295C-----------------------------------------------
3296 IF (neig>0)THEN
3297 CALL eigwrestp(eigipm_l, eigibuf_l, eigrpm, leibuf_l,len_am)
3298 ENDIF
3299C--------------------------------------------
3300C SEATBELTS - SLIPRING / RETRACTOR
3301C--------------------------------------------
3302 IF (nslipring + nretractor > 0) THEN
3303 CALL w_seatbelts(len_ia,len_am,p,nodlocal,n_anchor_remote_l,
3304 . n_anchor_remote_send_l,anchor_remote_l,anchor_remote_send_l)
3305 ENDIF
3306C--------------------------------------------
3307C /H3D/?/TMAX part noda
3308C--------------------------------------------
3309 IF (lmax_dis>0)CALL w_r3nloc(d,nodglob,numnod_l,len_am)
3310 IF (lmax_vel>0)CALL w_r3nloc(v,nodglob,numnod_l,len_am)
3311 CALL w_outmaxn(numnod_l,len_am)
3312C--------------------------------------------
3313C Pressure & concentrated loads --> DISP & VEL saved
3314C--------------------------------------------
3315 IF (nconld_l > 0) THEN
3316 off = numelc+numeltg+numels+numelq+numelt+numelp+numelr
3317 . + numelx
3318 CALL w_disp0_vel0_cload(dpl0cld,cep ,p-1 ,nconld_l,len_am,
3319 . off ,len_cep,nconld)
3320 CALL w_disp0_vel0_cload(vel0cld,cep ,p-1 ,nconld_l,len_am,
3321 . off ,len_cep,nconld)
3322 ENDIF
3323C--------------------------------------------
3324C /DAMP/VREL
3325C--------------------------------------------
3326 IF (ndamp_vrel_l>0) THEN
3327 CALL w_dampvrel(dampr,igrnod,idamp_vrel_l,ndamp_vrel_l,len_ia,
3328 . ngrnod,ndamp,nrdamp,nspmd)
3329 ENDIF
3330C-----------------------------------------------
3331C FLOW
3332C-----------------------------------------------
3333 IF (nflow>0) CALL nfwrestp(iflow_l,rflow,len_ia,len_am)
3334C-----------------------------------------------
3335C ALEBAG
3336C-----------------------------------------------
3337 CALL fvwrestp(p)
3338C-----------------------------------------------
3339C thermal of shells + solids
3340C-----------------------------------------------
3341 IF(glob_therm%ITHERM_FE > 0 ) THEN
3342 CALL w_rnloc(mcp,nodglob,numnod_l,len_am)
3343 CALL w_rnloc(temp,nodglob,numnod_l,len_am)
3344 ENDIF
3345C-----------------------------------------------
3346C Nitsche Method
3347C-----------------------------------------------
3348 IF(nitsche > 0 ) THEN
3349 ALLOCATE(forneqs(3*numnod_l))
3350 forneqs(1:3*numnod_l) = zero
3351 CALL write_db(forneqs,3*numnod_l)
3352 len_am = len_am + 3*numnod_l
3353 DEALLOCATE(forneqs)
3354 ENDIF
3355C ----------------------------------------------
3356C Units
3357C-----------------------------------------------
3358 CALL write_units(unitab)
3359C--------------------------------------------
3360C rigid body material
3361C--------------------------------------------
3362 IF(nrbym > 0)THEN
3363C float
3364 CALL write_db(rbym,nfrbym*nrbym)
3365 len_am = len_am + nfrbym*nrbym
3366c integer
3367 CALL w_rbymk(irbym,lcrbym,front_rm,nodlocal,p-1,
3368 . nslarbm_l,len_ia)
3369 CALL wrweight_rm(front_rm,nrbym,p)
3370 ENDIF
3371C--------------------------------------
3372C ICONV + fconv
3373C--------------------------------------
3374 IF (glob_therm%NUMCONV > 0 )THEN
3375C float
3376 CALL w_fconv(fconv,cep,p-1,nconv_l,len_am,
3377 . glob_therm%NUMCONV,glob_therm%LFACTHER)
3378C integer
3379 CALL w_iconv(ibcv,cep,p-1,nodlocal,nconv_l,len_ia,
3380 . cel,iparg,numlocgroup,glob_therm%NUMCONV,glob_therm%NICONV)
3381
3382 ENDIF
3383C--------------------------------------
3384C IRADIA + fradia
3385C--------------------------------------
3386 IF (glob_therm%NUMRADIA > 0 )THEN
3387C float
3388 CALL w_fradia(fradia,cep,p-1,nradia_l,len_am,
3389 . glob_therm%NUMCONV,glob_therm%NUMRADIA,glob_therm%LFACTHER)
3390!
3391 CALL w_iradia(ibcr,cep,p-1,nodlocal,nradia_l,len_ia,
3392 . cel,iparg,numlocgroup,
3393 . glob_therm%NUMCONV,glob_therm%NUMRADIA,glob_therm%NIRADIA)
3394 ENDIF
3395C--------------------------------------
3396C Imposed heat flux
3397C--------------------------------------
3398 IF (glob_therm%NFXFLUX > 0 )THEN
3399C float
3400 CALL w_fthflux(fbfflux,cep,p-1,nfxflux_l,len_am,
3401 . glob_therm%NUMCONV,glob_therm%NUMRADIA,glob_therm%NFXFLUX,glob_therm%LFACTHER)
3402!
3403 CALL w_ithflux(ibfflux,cep,p-1,nodlocal,nfxflux_l,len_ia,cel,ixs,
3404 . glob_therm%NUMCONV,glob_therm%NUMRADIA,glob_therm%NFXFLUX,glob_therm%NITFLUX)
3405 ENDIF
3406C ----------------------------------------------
3407C fix temp
3408C-----------------------------------------------
3409 IF(glob_therm%NFXTEMP > 0) THEN
3410C Fixtemp float
3411 CALL w_fbft(fbft,glob_therm%NFXTEMP,ibft,nfxtemp_l,len_am,p-1,
3412 . glob_therm%NIFT,glob_therm%LFACTHER)
3413C fixtemp integer
3414 CALL w_ibft(ibft,glob_therm%NFXTEMP,nodlocal,len_ia,
3415 . nfxtemp_l,p-1,glob_therm%NIFT)
3416 ENDIF
3417C-----------------------------------------------
3418C
3419C ply xfem
3420C
3421 IF(iplyxfem > 0 ) THEN
3422 off = numels + numelq
3423C plyxfem float + integer
3424 CALL w_pxfem(iepxfem_l,inpxfem_l ,index_pxfem,
3425 . ms_ply,zi_ply ,numelc_l, numnod_l ,
3426 . numelcpxfe_l,numnodpxfe_l,len_am,len_ia,msz2)
3427C plyxfem integer
3428 IF(iplybcs > 0) THEN
3429 CALL w_inloc(icodply,nodglob,numnod_l,len_ia)
3430 CALL w_inloc(iskwply,nodglob,numnod_l,len_ia)
3431 ENDIF
3432C PlyXfem Anim
3433 off = numels + numelq
3434 CALL w_anim_ply(ixc, numelc_l, nodlocal,
3435 * numnod_l, cel(off+1), cep(min(off+1,len_cep)), p-1)
3436C plyxfem velocity, displacement
3437 CALL w_avuply(numnodpxfe_l,len_am)
3438 ENDIF
3439C--------------------------------------------
3440C LOAD/C
3441C--------------------------------------------
3442 IF(nloadc>0)
3443 . CALL write_db(cfield,lfacload*nloadc)
3444 len_am = len_am + lfacload*nloadc
3445C--------------------------------------------
3446C LOAD/PFLUID
3447C--------------------------------------------
3448 IF(nloadp>0)
3449 . CALL write_db(loadp,lfacload*nloadp)
3450 len_am = len_am + lfacload*nloadp
3451C--------------------------------------------
3452C LOAD/PRESSURE interfaces : Gaps
3453C--------------------------------------------
3454 IF (nintloadp>0) THEN
3455 CALL write_db(dgaploadint, s_loadpinter )
3456 len_am = len_am + s_loadpinter
3457 ENDIF
3458C--------------------------------------------
3459C /INIVEL w/ T_start or senor_id
3460C--------------------------------------------
3461 IF (loads%NINIVELT>0) THEN
3462 CALL w_inivel_str(
3463 . ngrnod, ngrbric, ngrquad, ngrsh3n,
3464 . igrnod, igrbric, igrquad, igrsh3n,
3465 . p-1 , cep, scep, nodlocal,
3466 . numnod,loads%NINIVELT,loads%INIVELT, len_ia,
3467 . len_am)
3468 ENDIF
3469C--------------------------------------------
3470C crack xfem
3471C--------------------------------------------
3472 IF(icrack3d > 0)THEN
3473C integer
3474 CALL w_crkxfem(ielxfemc_l,ielxfemtg_l,incrkxfem_l,numelc_l,
3475 . numeltg_l,numnod_l,len_ia,numnodcrkxfe_l,
3476 . nodlevxf_l)
3477C Crk_xfem Anim
3478 CALL w_anim_crk(
3479 . ixc ,ixtg ,numelc_l,numeltg_l,nodlocal,
3480 . numnod_l ,incrkxfem_l,cel ,cep_crkxfem ,p-1 ,
3481 . iedgecrk_l,ibordedge_l,numedges_l,index_crkxfem ,
3482 . inod_crkxfem,lcnecrkxfem_l,edgeglobal,cep,crklvset,
3483 . ncrkpart, indx_crk,crkshell,crksky,crkavx,
3484 . crkedge ,xfem_phantom,numnodcrkxfe_l)
3485c
3486 ALLOCATE(elcutc_l(2*numelc_l))
3487 ALLOCATE(elcuttg_l(2*numeltg_l))
3488 ALLOCATE(nodenr_l(numnodcrkxfe_l))
3489 ALLOCATE(kxfenod2elc_l(numnodcrkxfe_l))
3490 ALLOCATE(enrtag_l(numnod_l*ienrnod))
3491 elcutc_l = 0
3492 elcuttg_l = 0
3493 nodenr_l = 0
3494 kxfenod2elc_l = 0
3495 enrtag_l = 0
3496C
3497 CALL c_crkadd(
3498 . elcutc ,nodenr ,kxfenod2elc ,enrtag ,
3499 . elcutc_l ,nodenr_l ,kxfenod2elc_l,enrtag_l,
3500 . numelc_l ,numeltg_l ,numnod_l ,nodglob ,inod_crkxfem ,
3501 . p-1 ,cep ,elcuttg_l ,incrkxfem_l,index_crkxfem)
3502C--------------------------------------
3503C ADDITIONAL XFEM WORKING TABLES
3504C--------------------------------------
3505 CALL write_i_c(elcutc_l,2*numelc_l)
3506 len_ia = len_ia + 2*numelc_l
3507 CALL write_i_c(elcuttg_l,2*numeltg_l)
3508 len_ia = len_ia + 2*numeltg_l
3509 CALL write_i_c(nodenr_l,numnodcrkxfe_l)
3510 len_ia = len_ia + numnodcrkxfe_l
3511 CALL write_i_c(kxfenod2elc_l,numnodcrkxfe_l)
3512 len_ia = len_ia + numnodcrkxfe_l
3513 CALL write_i_c(enrtag_l,numnod_l*ienrnod)
3514 len_ia = len_ia + numnod_l*ienrnod
3515C
3516 DEALLOCATE(elcutc_l,elcuttg_l,nodenr_l,kxfenod2elc_l,enrtag_l)
3517 DEALLOCATE(iedgecrk_l,ibordedge_l,nodedge_l,tagedge,iedge_l)
3518 DEALLOCATE(edgelocal,edgeglobal)
3519 DEALLOCATE(iedgesh4_l,iedgesh3_l)
3520 DEALLOCATE(index_crkxfem,nodlevxf_l)
3521 ELSE
3522 ALLOCATE(elcutc_l(0))
3523 ALLOCATE(elcuttg_l(0))
3524 ALLOCATE(nodenr_l(0))
3525 ALLOCATE(kxfenod2elc_l(0))
3526 ALLOCATE(enrtag_l(0))
3527 ENDIF
3528C--------------------------------------
3529C ALEFVM WORKING ARRAY : MUST BE INIT. FOR CYCLE 0
3530C--------------------------------------
3531 IF(alefvm_param%IEnabled > 0)CALL write_db(alefvm_buffer%FCELL ,6*numels)
3532C--------------------------------------------
3533C for foam+air
3534 IF(ialelag > 0) THEN
3535 CALL w_alelag(dflow,vflow,wflow,nodglob,numnod_l,len_am)
3536 ENDIF
3537C--------------------------------------------
3538C Th groups
3539C--------------------------------------------
3540 IF(lenthgr > 0) THEN
3541 CALL write_db(rthbuf,lenthgr)
3542 len_am = len_am + lenthgr
3543 ENDIF
3544C--------------------------------------------
3545C KNOT (ISO-GEOM ELEMENTS)
3546C--------------------------------------------
3547 IF(sknot > 0) CALL write_db(knot,sknot)
3548 IF(sknotlocpc > 0 .AND. sknotlocel > 0) THEN
3549 CALL w_knotloc(kxig3d,numelig3d_l,isumnig3d_l,ixig3d,cep,
3550 . proc,nodlocal,len_ia,knotlocpc,knotlocel,numnod_l,
3551 . glob_therm%NUMCONV,glob_therm%NUMRADIA)
3552 ENDIF
3553C--------------------------------------------
3554C WIGE (ISO-GEOM ELEMENTS)
3555C--------------------------------------------
3556 IF(numelig3d > 0) CALL w_rnloc(wige,nodglob,numnod,len_am)
3557C--------------------------------------------
3558C STACK properties
3559C--------------------------------------------
3560 IF(ipart_stack > 0 .OR. ipart_pcompp > 0 ) THEN
3561 len_ig = (4*npt_stack + 2)*ns_stack
3562 len_g = (6*npt_stack + 1)*ns_stack
3563 len_pm = 20*ns_stack
3564 CALL w_stack(stack%IGEO,stack%GEO,len_ig,len_g,len_ia,len_am,
3565 . stack%PM, len_pm)
3566 ENDIF
3567C--------------------------------------------
3568C DRAPE option
3569C--------------------------------------------
3570 IF (ndrape > 0) THEN
3571C write drape structure
3572 off = numels + numelq
3573 IF(numelc_drape > 0)
3574 . CALL w_drape(drape,drapeg%INDX,cep(min(off+1,len_cep)),p-1,
3575 . numelc,numelc_l,numsh4n_l,len_ia,len_am)
3576 off = off + numelc + numelt + numelp + numelr
3577 IF(numeltg_drape > 0)
3578 . CALL w_drape(drape,drapeg%INDX(numelc +1),cep(min(off+1,len_cep)),p-1,
3579 . numeltg,numeltg_l,numsh3n_l,len_ia,len_am)
3580 ENDIF
3581C--------------------------------------------
3582C PLY_INFO ( need for animation file )
3583C--------------------------------------------
3584 IF (numply>0)
3585 . CALL w_ply_info(ply_info,numply)
3586C
3587C--------------------------------------------
3588C Pressure & concentrated loads --> DISP & VEL saved
3589C--------------------------------------------
3590! IF (LOADS%NLOAD_CLOAD > 0) THEN
3591! OFF = NUMELC+NUMELTG+NUMELS+NUMELQ+NUMELT+NUMELP+NUMELR
3592! . + NUMELX
3593! CALL W_DISP0_VEL0_CLOAD(DPL0CLD,CEP ,P-1 ,NCLOAD_L,LEN_AM,
3594! . OFF ,LEN_CEP,LOADS%NLOAD_CLOAD)
3595! CALL W_DISP0_VEL0_CLOAD(VEL0CLD,CEP ,P-1 ,NCLOAD_L,LEN_AM,
3596! . OFF ,LEN_CEP,LOADS%NLOAD_CLOAD)
3597! ENDIF
3598! -------------------------------------
3599! write the current elapsed time
3600! -------------------------------------
3601 CALL elapstime_omp(secs)
3602 CALL write_dpdb(secs,1)
3603C--------------------------------------------
3604C Close Restart FILE
3605C--------------------------------------------
3606C FILE_SIZE_C gives the value of the file pointer
3607C which is the file size before close
3608 CALL file_size_c(file_size)
3609 ddstat(25)= file_size
3610 CALL close_c
3611#ifdef DEBUG_RST
3612 IF(flush_rst_to_txt) CLOSE(777+itask)
3613#endif
3614 IF(numnod_l>0) DEALLOCATE(nodglob)
3615C Deallocate
3616 DEALLOCATE(monvol_l)
3617C--------------------------------------------
3618C Array Deallocation
3619 DEALLOCATE(nodlocal)
3620 DEALLOCATE(iepxfem_l)
3621 DEALLOCATE(inpxfem_l)
3622 DEALLOCATE(ielxfemc_l)
3623 DEALLOCATE(ielxfemtg_l)
3624 DEALLOCATE(incrkxfem_l)
3625 DEALLOCATE(numlocgroup)
3626 DEALLOCATE(numloccluster)
3627
3628C--------------------------------------------
3629C Stats Domain Decomp
3630C--------------------------------------------
3631C DDSTAT
3632C 1 : NUMNOD Local
3633C 2 : NELEM Local
3634C 3 : NUMELS_L
3635C 4 : NUMELQ_L
3636C 5 : NUMELC_L
3637C 6 : NUMELP_L
3638C 7 : NUMELT_L
3639C 8 : NUMELR_L
3640C 9 : -
3641C 10: NUMELTG_L
3642C 11: NUMELX_L
3643C 12: NBDDPROC : nb of boundary proc
3644C 13: NBDDBOUN : nb of boundary node
3645C 14: NBDDNOD : size of comm:nb of nodes
3646C 15: NBDDNRB : size of comm: nb of nodes main of rby
3647C 16: NRBYKIN_L : number of local rigid body main
3648C 17: NUMSPH_L : number of particles SPH (local)
3649C 18: MEMI : size memory local int MA
3650C 19: MEMR : size memory local float AM
3651C 20: NSNT_L : number of nodes seconds (contact interface 7,10,11)
3652C 21: NMNT_L : number of nodes main (contact interface 7,10,11)
3653C 22: NSNT2_L : number of nodes seconds (interface type2)
3654C 23: NMNT2_L : number of nodes main (interface type2)
3655C 24: RESTSIZE : restart size in KB
3656C 24: NSLARB_L : number of nodes second rigid body
3657 ddstat(1) = numnod_l
3658 ddstat(2) = numel_l
3659 ddstat(3) = numels_l
3660 ddstat(4) = numelq_l
3661 ddstat(5) = numelc_l
3662 ddstat(6) = numelp_l
3663 ddstat(7) = numelt_l
3664 ddstat(8) = numelr_l
3665 ddstat(9) = 0
3666 ddstat(10)= numeltg_l
3667 ddstat(11)= numelx_l
3668 ddstat(12)= nbddproc
3669 ddstat(13)= nbddboun
3670 ddstat(14)= nbddnod
3671 ddstat(15)= nbddnrb
3672 ddstat(16)= nrbykin_l
3673 ddstat(17)= numsph_l
3674 ddstat(20)= nsnt_l
3675 ddstat(21)= nmnt_l
3676 ddstat(22)= nsnt2_l
3677 ddstat(23)= nmnt2_l
3678 ddstat(24)= nslarb_l
3679C
3680C Estimating memory usage
3681C
3682 IF(ipari0/=0)THEN
3683 nisky0_l=nisky0_l+4*nconv_l+4*nradia_l+4*nfxflux_l
3684 END IF
3685C
3686 i_eval = numnod_l+2*numnod_l*max(iale,ieuler,ialelag)+numnod_l*iroddl
3687 r_eval = lenwa_l+nfunct
3688 IF(ipari0/=0)THEN
3689 lskyi = nint(5*max(4*numnod_l,imaximp_l)*probint)+4*numsph_l+nskyi18_l
3690 r_eval = r_eval+8*numnod_l+npsav*npart
3691 r_eval = r_eval+8*lcne_l
3692 IF (n2d==0.AND.iale+ieuler+glob_therm%ITHERM+ialelag > 0) r_eval = r_eval+ lcne_l
3693C NFSKYI = 5
3694 r_eval = r_eval+5*lskyi
3695 i_eval = i_eval+lskyi+numnod_l+1+lcni2_l
3696 + + nisky0_l+nskyrw_l+nskyrbk_l+niskyi2_l
3697 + + nnmv_l+nnmvc_l+nskyll_l+nskyrbm_l+nskyrbe3_l
3698 + + nnmv_l+nnmvc_l+nskyll_l+nskyrbm_l
3699 IF(ivector==1)i_eval = i_eval+ numnod_l
3700 IF(i2nsnt>0)i_eval = i_eval+ numnod_l+1
3701 IF(i2nsnt>0.AND.ivector==1)i_eval = i_eval+ numnod_l
3702 ELSE
3703 r_eval = r_eval+7*numnod_l+numnod_l*iroddl+npsav*npart
3704 r_eval = r_eval+2*max(iale,glob_therm%ITHERM,ieuler)*(numels_l+numelq_l)
3705 END IF
3706C IF(KDTINT/=0)
3707 r_eval = r_eval+numnod_l
3708 r_eval = r_eval+
3709 + lwasph_l+7*numnod_l*nsect*isecut+5*ninter+21*nibvel
3710 i_eval = i_eval+numnod_l
3711 ddstat(18)= len_ia + i_eval
3712 ddstat(19)= len_am + r_eval
3713
3714C Size of Restart file:
3715C LEN_AM has a size of 2*4 bytes
3716C LEN_IA has a size of 4 bytes
3717C The value is expressed in kb DDSTAT = (LEN_AM*2+LEN_IA)*4/1024
3718c DDSTAT(25)= (LEN_AM*2+LEN_IA)/256
3719C
3720
3721
3722 DEALLOCATE(multi_fvm_vel_l)
3723 DEALLOCATE(iebcs_listelem_l)
3724 DEALLOCATE(iebcs_listfac_l)
3725 DEALLOCATE(ipari_l)
3726 DEALLOCATE(rdpartsav)
3727 DEALLOCATE(dd_rbym2)
3728 DEALLOCATE(dd_rby2)
3729
3730
3731 RETURN
subroutine c_bufel(iparg, proc, lbufel_l)
Definition c_bufel.F:30
subroutine c_crkadd(elcutc, nodenr, kxfenod2elc, enrtag, elcutc_l, nodenr_l, kxfenod2elc_l, enrtag_l, numelc_l, numeltg_l, numnod_l, nodglob, inod_crkxfem, p, cep, elcuttg_l, incrkxfem_l, index_crkxfem)
Definition c_crkadd.F:34
subroutine c_crkedge(ielc_l, ieltg_l, iedgecrk_l, numedges, iedgesh4, iedgesh3, cep, p, ibordedge, ibordedge_l, numedges_l, nodedge, nodedge_l, nodlocal, iedgesh4_l, iedgesh3_l, iel_crk, iedge_l, iedge, ecrkxfec, edgelocal, nbddedge_l, iedge_tmp, edgeglobal)
Definition c_crkedge.F:36
subroutine c_crkxfem(cep, p, iel_crkxfem, iel_l, numel, numel_l, nelcrkxfe_l, numedges_l, iedgesh, idim, tagedge)
Definition c_crkxfem.F:31
subroutine c_dampvrel(dampr, igrnod, proc, idamp_vrel, ndamp_vrel_l, ngrnod, ndamp, nrdamp)
Definition c_dampvrel.F:33
subroutine c_drape(indx, cep, p, numel, neldrp_l)
Definition c_drape.F:29
subroutine c_eig(eigipm, eigibuf, eigrpm, nodlocal, eigipm_l, eigibuf_l, leibuf_l)
Definition c_eig.F:30
subroutine c_elig3d(kxig3d, proc, isumnig3d_l)
Definition c_elig3d.F:29
subroutine c_elmx(kxx, cep, proc, isumnx_l)
Definition c_elmx.F:29
subroutine c_eltloc(cep, p, numel, numel_l)
Definition c_eltloc.F:30
subroutine c_front(proc, nbddacc, nbddkin, nbddnrb, npby, nrbykin_l, ljoint, nbddncj, ibvel, nbddnrbm, iadll, lll, nlagf_l, front_rm, nrbymk_l, nbddnrbym, sdd_r2r_elem, addcsrect, csrect, nbddnort, nbddnor_max, nbccnor, nbccfr25, nbddedgt, nbddedg_max, nrtmx25, ipari, intbuf_tab, intercep, nodglob, nodlocal, numnod_l, nloc_dmg)
Definition c_front.F:42
subroutine c_fvbag(monvol, nodlocal, ixs, proc, nb_node, fvmain)
Definition c_fvbag.F:34
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 c_group_str(igrnod, igrbric, igrquad, igrsh4n, igrsh3n, igrtruss, igrbeam, igrspring, igrpart, cep, cel, nodlocal, proc, lenigrnod_l, lenigrbric_l, lenigrquad_l, lenigrsh4n_l, lenigrtrus_l, lenigrbeam_l, lenigrspri_l, lenigrsh3n_l, frontb_r2r, numnod_l)
Definition c_group_str.F:38
subroutine c_ibcl(ibcl, cep, proc, nconld_l)
Definition c_ibcl.F:30
subroutine c_ibcscyc(ibcscyc, lbcscyc, proc, nbcscyc_l, llcyc_l)
Definition c_ibcscyc.F:31
subroutine c_ibft(ibft, nc, nfxtemp_l, proc, dd_lagf, nift)
Definition c_ibft.F:32
subroutine c_ibfv(ibfv, nc, nfxvel_l, proc, dd_lagf)
Definition c_ibfv.F:31
subroutine c_ibmpc(impcnc, impcnn, impcdl, impcskw, dd_lagf)
Definition c_ibmpc.F:30
subroutine c_ibvel(ibvel, lbvel, llbvel_l, nskyrbm_l, proc)
Definition c_ibvel.F:32
subroutine c_icfield(icfield, lcfield, llcfield_l, proc)
Definition c_icfield.F:31
subroutine c_icnds10(icnds10, itagnd, proc, ns10e_l, nbddcndm, ms, ms_nd)
Definition c_icnds10.F:31
subroutine c_iconv(ibcv, cep, proc, nconv_l, numconv, niconv)
Definition c_iconv.F:29
subroutine c_fasolfr(fasolfr, cep, p, cel, nfasolfr_l)
Definition c_idglob.F:170
subroutine c_idglob(numel, numels_l, numelq_l, numeltg_l, numels_g, numelq_g, numeltg_g, proc, cel, cep, iparg, ale_connectivity, ixs, ixq, ixtg, idglob_l, uidglob_l, n2d, ngroup, nparg)
Definition c_idglob.F:33
subroutine c_iebcs(ixs, ixq, ixtg, numels, numelq, numeltg, nebcs, cep, numel, proc, iebcs_nelem_l, iebcs_type, iebcs_listelem_l, iebcs_listfac_l, iebcs_listdp0_l, length, n2d, multi_fvm_is_used, flag, ebcs_tab)
Definition c_iebcs.F:36
subroutine c_igrav(igrav, lgrav, llgrav_l, proc, nodlocal, numnod_l)
Definition c_igrav.F:29
subroutine c_iloadp(iloadp, lloadp, llloadp_l, proc)
Definition c_iloadp.F:32
subroutine c_iradia(ibcr, cep, proc, nradia_l, numradia, numconv, niradia)
Definition c_iradia.F:30
subroutine c_irbe2(irbe2, lrbe2, proc, nrbe2_l, slmn_l, nbddrbe2)
Definition c_irbe2.F:34
subroutine c_irbe3(irbe3, lrbe3, nskyrbe3_l, proc, nrbe3_l, slmn_l, nbddrbe3m, nrbe3pen_l)
Definition c_irbe3.F:32
subroutine c_islin_str(igrslin, proc, lenislin_l)
Definition c_islin_str.F:30
subroutine c_isph(kxsp, cepsp, proc, numsph_l, slonfsph_l, slprtsph, slprtsph_l, ipartsp, ssphveln_l, nsphsol_l, first_sphsol_l)
Definition c_isph.F:32
subroutine c_isurf_str(proc, lenisurf_l, nspmd, igrsurf_proc)
Definition c_isurf_str.F:30
subroutine c_ithflux(ibfflux, cep, proc, nfxflux_l, numconv, numradia, nfxflux, nitflux)
Definition c_ithflux.F:30
subroutine c_ixfloc(numel, ixsf, ixqf, ixtgf, nsvois, nqvois, ntgvois, proc, iparg, cep, cel, ale_connectivity, ee_connect_l, ixs, ixq, ixtg, nodlocal, numels_l, numelq_l, numeltg_l, multi_fvm, id_global_vois, indx_s, indx_q, indx_tg, face_elm_s, face_elm_q, face_elm_tg, face_vois, ishadow)
Definition c_ixfloc.F:36
subroutine c_lag(ipari, nprw, lag_sec)
Definition c_lag.F:29
subroutine c_mad(iexmad, nmadsh4_l, nmadsh3_l, nmadsol_l, nmadnod_l, madcl_nmadnod_l, cep, proc)
Definition c_mad.F:33
subroutine c_multi_vel(cep, numel, numel_l, proc, multi_fvm_vel_l, multi_fvm)
Definition c_multi_vel.F:32
subroutine c_ncrkxfem(nodglob, inod_crkxfem, inod_l, numnod_l, numnodcrkxfe_l, index, proc, ixc, ixtg, cep_xfe, nodlocal, nodlevxf_l, nodlevxf, nodglobxfe, nod_xfe_l, crkshell)
Definition c_ncrkxfem.F:33
subroutine c_ngroup(iparg, proc, numlocgroup, ngroup_l)
Definition c_ngroup.F:30
subroutine c_nloads(cep, proc, nloads, nload_l)
Definition c_nloads.F:30
subroutine c_pon(addcne, numnod_l, nodglob, lcne_l, i2nsnt, addcni2, lcni2_l, monvol, cep, proc, nnmv_l, nnmvc_l, addcne_pxfem, lcnepxfem_l, inodpxfem, addcne_crkxfem, lcnecrkxfem_l, inodcrkxfem, addcncnd, lcncnd_l, igrsurf)
Definition c_pon.F:35
subroutine c_poro(pornod, proc, numpor_l, geo)
Definition c_poro.F:32
subroutine c_pxfem(cep, p, nodglob, ielpxfem, inodpxfem, iel_l, inod_l, numelc, numnod_l, numelc_l, nelpxfe_l, numnodpxfe_l, index)
Definition c_pxfem.F:31
subroutine c_rbyk(npby, lpby, proc, nslarb_l, nskyrbk_l)
Definition c_rbyk.F:32
subroutine c_rbymk(npby, lpby, proc, nslarb_l, nskyrbk_l)
Definition c_rbymk.F:33
subroutine c_rwall(nprw, lprw, rwl, cep, proc, nslaw_l, neslaw_l, lwsav_l, nskyrw_l, lrw_pen_l, nrw_pen_l)
Definition c_rwall.F:34
subroutine c_seatbelts(n_slipring_l, n_retractor_l, p, nodlocal, elbuf_tab, iparg, n_anchor_remote_l, n_anchor_remote_send_l, anchor_remote_l, anchor_remote_send_l, n_seatbelt_l, n_seatbelt_2d_l, cep, off)
Definition c_seatbelts.F:34
subroutine c_sectio(nstrf, cep, proc, nstrf_l, lsecbuf_l, nnodt_l, nnodl_l)
Definition c_sectio.F:33
subroutine c_segquadfr(segquadfr, cep, p, cel, nsegquadfr_l)
Definition c_segquadfr.F:29
subroutine c_vois(nsvois, nqvois, ntgvois, nrcvvois, nsndvois, ilaw11, nsegfl_l, iparg, cep, ale_connectivity, numel, proc, ixs, ixq, ixtg, nervois, nesvois, nodlocal, numnod_l, numel_l, cel, multi_fvm, ale_elm, size_ale_elm)
Definition c_vois.F:39
subroutine compress_i_nnz(array, len)
subroutine compress_r_nnz(array, len)
#define my_real
Definition cppsort.cpp:32
subroutine f_nodloc2(numnod, p, nodglob, nodlocal, igeo, iparg, ixs, ixq, ixc, ixtg, ixt, ixp, ixr, geo, numnod_l)
Definition f_nodloc2.F:35
subroutine fvwrestp(proc)
Definition fvwrestp.F:33
subroutine intbuf_ini_starter(intbuf_tab, ipari, numn, i11flag, flag_allocate, proc, intbuf_fric_tab)
subroutine ipari_l_ini(ipari, proc, numnod_l, nbddi2m, i2nsn_l, probint, imaximp_l, nbi18_l, nskyi18_l, nsnt_l, nmnt_l, nsnt2_l, nmnt2_l, cep, igrbric, ipari_l, nodlocal, i2nsn25_l, intercep, intbuf_tab, numnor_l, i24maxnsne, multi_fvm, tag, index0, nindex0)
Definition ipari_l_ini.F:39
subroutine m_flow(iflow, iflow_l, nodlocal, p, memflow)
Definition m_flow.F:29
#define min(a, b)
Definition macros.h:20
#define max(a, b)
Definition macros.h:21
integer nebcs
type(ale_) ale
Definition ale_mod.F:253
type(alefvm_buffer_), target alefvm_buffer
Definition alefvm_mod.F:120
type(alefvm_param_), target alefvm_param
Definition alefvm_mod.F:121
integer numeltg_drape
Definition drape_mod.F:92
integer numelc_drape
Definition drape_mod.F:92
integer nfvbag
Definition fvbag_mod.F:127
integer, dimension(:), allocatable ixs_temp
character(len=outfile_char_len) outfile_name
integer outfile_name_len
subroutine intstamp_wrestr(intstamp, leni)
subroutine intstamp_wresti(intstamp, leni, nodlocal)
logical joint_sms
Definition joint_mod.F:62
integer lmax_vel
Definition outmax_mod.F:61
integer lmax_dis
Definition outmax_mod.F:60
integer, dimension(:,:), allocatable ply_info
integer nsubmod
subroutine pornod(geo, ixs, ixq, nodpor, icode, itab, npby, lpby, igeo)
Definition pornod.F:35
subroutine setlenwa(lenwa0, nthwa0, nairwa0, numels0, numelq0, numelc0, numeltg0, numelt0, numelp0, numelr0, numnod0, nmnt0, l_mul_lag1, l_mul_lag, maxnx0, lwasph0, numsph0, lwaspio, nrcvvois0, ngroup_l, lwamp_l, lwanmp_l, itherm)
Definition setlenwa.F:35
subroutine split_ebcs(proc_id, local_nebcs, list_other_ebcs, numel, cep, igrsurf, local_element_id, ebcs_tab, ebcs_tab_loc_2)
Definition split_ebcs.F:38
subroutine split_interfaces(intbuf_tab, ipari, proc, intbuf_tab_l, ipari_l, intercep, nodlocal, itab, itabi2m, nbddi2m, numnod_l, len_cep, cep, cel, igrbric, t8, multi_fvm, tag_nm, nindx_nm, indx_nm, tag_scratch, nindx_scrt, indx_scrt, flag_24_25, i24maxnsne, intbuf_fric_tab)
subroutine split_skew(curr_proc, iskwp_l, iskwp, tag_skn, multiple_skew)
Definition split_skew.F:30
subroutine c_spmd_ne_connect(ale_connectivity, proc, cep, cel, nodglobal, nodlocal, numel, numnod, numel_l, numnod_l, numels_l, numelq_l, numeltg_l, nervois, nesvois, nsvois, nqvois, ntgvois)
subroutine spmd_ne_connect(ale_connectivity, proc, cep, cel, nodglobal, nodlocal, numel, numnod, numel_l, numnod_l, numels_l, numelq_l, numeltg_l, nervois, nesvois, nsvois, nqvois, ntgvois, elemid_l, len_ia, ixs)
subroutine write_joint(ljoint, cep, cel, proc, nodlocal, ljoint_l, len_ia, numnod_l)
Definition write_joint.F:33
subroutine w_bufbric_22()
subroutine write_pcyl(load_cyl, nload_cyl, nodlocal)
Definition write_pcyl.F:32
subroutine write_matparam(mat_elem, len)
subroutine c_cluster(clusters, proc, cep, ncluster_l, clusters_id_l)
Definition w_cluster.F:203
subroutine w_cluster(cluster, iparg, nodlocal, ncluster_l, cep, proc, numlocgroup, len_ia, len_am)
Definition w_cluster.F:34
subroutine w_elbuf_str(proc, iparg, elbuf_tab, len_am, flag_xfem)
Definition w_elbuf_str.F:31
subroutine w_failwave(failwave, nodglob, numnod, numnod_l, len_am, itab)
Definition w_failwave.F:31
subroutine w_group_str(len_ia, igrnod, igrbric, igrquad, igrsh4n, igrsh3n, igrtruss, igrbeam, igrspring, igrpart, cep, cel, nodlocal, proc, frontb_r2r, numnod_l)
Definition w_group_str.F:37
subroutine w_subset_str(subset, len_ia)
subroutine wrcomr(lmxvrea, lvarrea, tabvrea, ms_nd, p, inter_parameters, unitab, glob_therm, output)
Definition wrcomm.F:32
subroutine write_elgroup_param(group_param_tab, iparg, proc, ngroup_l, len)
subroutine write_nloc_struct(nloc_dmg, numnod_l, nodglob, nodloc, cel, cep, proc, ixs, ixc, ixtg, numels_l, numelc_l, numeltg_l)
subroutine nfwrestp(iflow, rflow, len_ia, len_am)
Definition wrrest.F:569
subroutine fxbwrestp(fxbipm_l, fxbrpm, fxbnod_l, fxbmod_l, fxbglm_l, fxbcpm_l, fxbcps_l, fxblm_l, fxbfls_l, fxbdls_l, fxbdep, fxbvit, fxbacc, fxbelm_l, fxbsig_l, fxbgrvi_l, fxbgrvr_l, lennod_l, lenmod_l, lenglm_l, lencp_l, lenlm_l, lenfls_l, lendls_l, lenelm_l, lensig_l, lengrvi_l, lengrvr_l, len_am, itask)
Definition wrrest.F:38
subroutine eigwrestp(eigipm, eigibuf, eigrpm, leibuf_l, len_am)
Definition wrrest.F:272
subroutine startime(event, itask)
Definition timer.F:93
subroutine stoptime(event, itask)
Definition timer.F:135
subroutine elapstime_omp(etime)
Definition timer.F:424
subroutine table_wresti(table, leni)
Definition table_tools.F:67
subroutine table_wrestr(table, lenr)
subroutine write_sensors(sensors, numnod, nodlocal)
subroutine spmd_userwi_rest(user_windows, nodlocal, numnod, numnod_l, p, nspmd)
subroutine w_alelag(dflow, vflow, wflow, nodglob, numnod_l, len_am)
Definition w_alelag.F:30
subroutine w_anim_crk(ixc, ixtg, numelc_l, numeltg_l, nodlocal, numnod_l, inod_l, cel, cep_xfe, proc, iedgecrk_l, ibordedge_l, numedges_l, index_crkxfem, inod_crkxfem, lcnecrkxfem_l, edgeglobal, cep, crklvset, ncrkpart, indx_crk, crkshell, crksky, crkavx, crkedge, xfem_phantom, numnodcrk_l)
Definition w_anim_crk.F:38
subroutine w_anim_ply(ixc, numelc_l, nodlocal, numnod_l, cel, cep, proc)
Definition w_anim_ply.F:35
subroutine w_avuply(nnodpxfe_l, len_am)
Definition w_avuply.F:30
subroutine w_bid(len, len_am)
Definition w_bid.F:31
subroutine w_bufel(iparg, proc, lbufel_l, elbuf, len_am)
Definition w_bufel.F:31
subroutine w_crkxfem(ielc_l, ieltg_l, inod_l, numelc_l, numeltg_l, numnod_l, len_ia, numnodcrk_l, nodlevxf_l)
Definition w_crkxfem.F:32
subroutine w_dampvrel(dampr, igrnod, idamp_vrel_l, ndamp_vrel_l, len_ia, ngrnod, ndamp, nrdamp, nspmd)
Definition w_dampvrel.F:33
subroutine w_disp0_vel0_cload(disp0, cep, proc, ncload_l, len_am, off, len_cep, ncload)
subroutine w_drape(drape, indx, cep, p, numel, numel_l, neldrp_l, len_ia, len_am)
Definition w_drape.F:32
subroutine w_elig3d(kxig3d, numelig3d_l, isumnig3d_l, ixig3d, proc, nodlocal, len_ia)
Definition w_elig3d.F:32
subroutine w_elmx(kxx, numelx_l, isumnx_l, ixx, cep, proc, nodlocal, len_ia)
Definition w_elmx.F:32
subroutine w_fac(fac, cep, proc, nconld_l, len_am)
Definition w_fac.F:31
subroutine w_fasolfr(fasolfr, cep, p, cel, nfasolfr_l, len_ia)
Definition w_fasolfr.F:32
subroutine w_fbft(vel, nc, ibft, nfxtemp_l, len_am, proc, nift, lfacther)
Definition w_fbft.F:32
subroutine w_fconv(fac, cep, proc, nconv_l, len_am, numconv, lfacther)
Definition w_fconv.F:31
subroutine w_fi(ipari, proc, len_ia, intercep, intbuf_tab, itab, multi_fvm, tag, nindx_tag, indx_tag, nodlocal, numnod_l, len_cep, cep)
Definition w_fi.F:38
subroutine w_fixvel(vel, nc, ibfv, nfxvel_l, len_am, proc)
Definition w_fixvel.F:32
subroutine w_fradia(fac, cep, proc, nradia_l, len_am, numconv, numradia, lfacther)
Definition w_fradia.F:31
subroutine w_frbe3(irbe3, lrbe3, proc, llrbe3_l, frbe3, frbe3ad, len_ia, nrbe3pen_l)
Definition w_frbe3.F:33
subroutine w_front(proc, nbddacc, nbddkin, nodlocal, nbddproc, nbddboun, nodglob, numnod_l, nbddnrb, npby, lpby, nprw, lprw, len_ia, dd_rby2, itabi2m, nbddi2m, cep, monvol, nnlink, lllink, ljoint, nbddncj, ibvel, lbvel, nbddnrbm, dd_rbm2, nstrf, nnodt_l, nnodl_l, iexmad, isp0, nrcvvois, nsndvois, nervois, nesvois, nsegfl_l, iparg, numel, ale_connectivity, nbcfd, ixs, ixq, ixtg, numels_l, numelq_l, numeltg_l, cel, geo, pornod, numpor_l, numel_l, ipari, intbuf_tab, nbi18_l, iexlnk, igrnod, dd_lagf, nlagf_l, iadll, lll, iskwp, nskwp, isensp, nsensp, iaccp, naccp, irbe3, lrbe3, itabrbe3m, nbddrbe3m, irbym, lcrbym, front_rm, dd_rbym2, nbddnrbym, irbe2, lrbe2, nbddrbe2, itabrbe2m, iedge_tmp, nodedge, edgelocal, nbddedge_l, igaup, ngaup, frontb_r2r, sdd_r2r_elem, addcsrect, csrect, nbddnort, nbddnor_max, nbccfr25, nbccnor, numnor_l, nbddedgt, nbddedg_max, intercep, nbddcndm, itabcndm, multi_fvm, igrsurf, iskwp_l, ale_elm, size_ale_elm, nsensor, nloc_dmg, constraint_struct, itherm)
Definition w_front.F:61
subroutine w_fsph()
Definition w_fsph.F:31
subroutine w_fthflux(fbfflux, cep, proc, nfxflux_l, len_am, numconv, numradia, nfxflux, lfacther)
Definition w_fthflux.F:31
subroutine w_geo(geo, nodlocal)
Definition w_geo.F:31
subroutine w_gjoint(gjbufi, ngjoint, lkjni, nodlocal, len_ia)
Definition w_gjoint.F:31
subroutine w_ibcl(ibcl, cep, proc, nodlocal, nconld_l, len_ia)
Definition w_ibcl.F:31
subroutine w_ibcscyc(ibcscyc, lbcscyc, nodlocal, proc, llcyc_l, nbcscyc_l, len_ia)
Definition w_ibcscyc.F:33
subroutine w_ibft(ibft, nc, nodlocal, len_ia, nfxtemp_l, proc, nift)
Definition w_ibft.F:32
subroutine w_ibfv(ibfv, nc, nodlocal, len_ia, nfxvel_l, proc)
Definition w_ibfv.F:33
subroutine w_ibmpc(ibmpc, nummpc, lmpc, nodlocal, lag_sec, len_ia)
Definition w_ibmpc.F:31
subroutine w_ibvel(ibvel, lbvel, nodlocal, proc, llbvel_l, len_ia)
Definition w_ibvel.F:33
subroutine w_icfield(icfield, lcfield, nodlocal, proc, llcfield_l, len_ia, p, numnod_l)
Definition w_icfield.F:32
subroutine w_icnds10(icnds10, itagnd, proc, nodlocal, ns10e_l, itabcndm, nbddcndm, numnod_l, len_ia, itab)
Definition w_icnds10.F:32
subroutine w_iconv(ibcv, cep, proc, nodlocal, nconv_l, len_ia, cel, iparg, numlocgroup, numconv, niconv)
Definition w_iconv.F:32
subroutine w_ieloc(itab, cep, p, numel, numel_l, len_ia)
Definition w_ieloc.F:31
subroutine w_igrav(igrav, lgrav, nodlocal, proc, llgrav_l, len_ia, numnod_l)
Definition w_igrav.F:32
subroutine w_iloadp(iloadp, lloadp, nodlocal, proc, llloadp_l, len_ia, p, cep, itab, numconv, numradia, nfxflux)
Definition w_iloadp.F:32
subroutine w_ing2loc(ale_connectivity, elemid_l, numnod, nodglob, nodlocal, numnod_l, len_ia, nwale)
Definition w_ing2loc.F:33
subroutine w_inloc(itab, nodglob, numnod_l, len_ia)
Definition w_inloc.F:31
subroutine w_iparg(iparg, proc, ngroup_l, len_ia)
Definition w_iparg.F:30
subroutine w_iradia(ibcr, cep, proc, nodlocal, nradia_l, len_ia, cel, iparg, numlocgroup, numconv, numradia, niradia)
Definition w_iradia.F:31
subroutine w_irbe2(irbe2, lrbe2, nodlocal, proc, llrbe2_l, itabrbe2m, nbddrbe2, numnod_l, len_ia)
Definition w_irbe2.F:33
subroutine w_irbe3(irbe3, lrbe3, nodlocal, proc, llrbe3_l, itabrbe3m, nbddrbe3m, numnod_l, len_ia)
Definition w_irbe3.F:33
subroutine w_irivet(ixri, nodlocal, proc, len_ia)
Definition w_irivet.F:31
subroutine w_iskewsp(iskew, nodglob, numnod_l, numsph_l, cepsp, proc, len_ia)
Definition w_iskewsp.F:31
subroutine w_iskn(iskn, numskw, nsph, iframe, numfram, nodlocal, p, numnod, cepsp, len_ia)
Definition w_iskn.F:35
subroutine w_islin_str(igrslin, len_ia, proc, nodlocal)
Definition w_islin_str.F:32
subroutine w_isph(kxsp, ixsp, numsph_l, cepsp, proc, nodlocal, numnod_l, ispcond, iparg, isphio, len_ia, slonfsph_l, slprtsph_l, ipartsp, lonfsph, lprtsph, ibufssg_io, celsph, nsphsol_l, first_sphsol_l, sph2sol, sol2sph, irst, numels8_l, cep, cel, sol2sph_typ)
Definition w_isph.F:39
subroutine w_isurf_str(len_ia, proc, numnod, nsurf, numels, numelq, numelc, numelt, numelp, numelr, nodlocal, scel, cel, ltitr, lenisurf_l, nspmd, igrsurf, igrsurf_proc)
Definition w_isurf_str.F:35
subroutine w_itabm1(itabm1, itabm2, nodglob, nodlocal, numnod_l, itab, len_ia)
Definition w_itabm1.F:33
subroutine w_ithflux(ibfflux, cep, proc, nodlocal, nfxflux_l, len_ia, cel, ixs, numconv, numradia, nfxflux, nitflux)
Definition w_ithflux.F:32
subroutine w_ixaloc(ixa, nnod, cep, p, numel, numel_l, nodlocal, len_ia)
Definition w_ixaloc.F:32
subroutine w_ixbloc(ixa, nnod, dim, cep, p, numel, numel_l, nodlocal, len_ia)
Definition w_ixbloc.F:32
subroutine w_ixloc(ixx, nixx, nnod, cep, p, numel, numel_l, nodlocal, len_ia)
Definition w_ixloc.F:32
subroutine w_knotloc(kxig3d, numelig3d_l, isumnig3d_l, ixig3d, cep, proc, nodlocal, len_ia, knotlocpc, knotlocel, numnod_l, numconv, numradia)
Definition w_knotloc.F:34
subroutine w_lacc(laccelm, nc, nodlocal, len_ia, cel, cep, proc)
Definition w_lacc.F:31
subroutine w_las(las, nc, nodlocal, len_ia)
Definition w_las.F:31
subroutine w_lgau(lgauge, nc, nodlocal, len_ia, cel, cep, proc)
Definition w_lgau.F:31
subroutine w_mad(iexmad, nmadsh4_l, nmadsh3_l, nmadsol_l, nmadnod_l, madcl_nmadnod_l, cep, proc, nodlocal, cel, numels_l, numelc_l, numeltg_l, len_ia)
Definition w_mad.F:72
subroutine w_main_proc_weight(nodglob, numnod_l, nspmd, proc)
subroutine w_monvol(monvol, lenvolu, nodlocal, len_ia, monvol_l, itab, t_monvol, proc)
Definition w_monvol.F:33
subroutine w_outmaxn(numnod_l, len_am)
Definition w_outmaxn.F:32
subroutine w_ply_info(ply_info, numply)
Definition w_ply_info.F:30
subroutine w_pon(addcne, cne, lcne, numnod_l, nodglob, lcne_l, cep, cel, ixs, ixs10, ixs20, ixs16, ixq, ixc, ixt, ixp, ixr, ixtg, monvol, ib, geo, igeo, proc, numels_l, numels8_l, numels10_l, numels16_l, numels20_l, numelq_l, numelc_l, numelt_l, numelp_l, numelr_l, numeltg_l, nskyrw_l, nprw, lprw, nskyrbk_l, npby, lpby, dd_rby2, i2nsnt, i2nsn_l, ipari, nir, lcni2_l, niskyi2_l, cepi2, celi2, cni2, addcni2, nbddi2m, nconld_l, ixtg6, numeltg6_l, nnmv_l, nnmvc_l, nskyll_l, nnlink, lllink, nskyrbm_l, dd_rbm2, ibvel, lbvel, nbi18_l, nskyi18_l, len_ia, nconv_l, ibcv, nskyrbe3_l, irbe3, lrbe3, nskyrbmk_l, irbym, lcrbym, front_rm, dd_rbym2, ibcr, nradia_l, addcne_pxfem, cne_pxfem, cel_pxfem, lcnepxfem_l, inod_pxfem, iel_pxfem, numelcpxfem_l, numnodpxfem_l, lloadp, iloadp, llloadp_l, addcne_crkxfem, cne_crkxfem, cel_crkxfem, lcnecrkxfem_l, inod_crkxfem, iel_crkxfem, numelccrkxfe_l, numnodcrkxfe_l, numeltgcrkxfe_l, cep_crkxfem, inod_crk_l, crknodiad, intbuf_tab, numelig3d_l, kxig3d, ixig3d, ibfflux, nfxflux_l, cepcnd, celcnd, addcncnd, cncnd, ns10e_l, icnds10, lcncnd_l, itagnd, igrsurf, igrsurf_proc, local_nebcs, ebcs_tab_loc_2, number_load_cyl, loads, loads_per_proc, glob_therm)
Definition w_pon.F:62
subroutine w_poro(pornod, proc, numpor_l, geo, nodlocal, len_ia)
Definition w_poro.F:32
subroutine w_pxfem(iel_l, inod_l, index, vel1, vel2, numelc_l, numnod_l, nelpxfe_l, nnodpxfe_l, len_am, len_ia, vel3)
Definition w_pxfem.F:32
subroutine w_r3nloc(rtab, nodglob, numnod_l, len_am)
Definition w_r3nloc.F:31
subroutine w_rbyk(npby, lpby, nodlocal, proc, nslarb_l, len_ia)
Definition w_rbyk.F:31
subroutine w_rbymk(npby, lpby, front_rm, nodlocal, proc, nslarb_l, len_ia)
Definition w_rbymk.F:33
subroutine w_reloc2(rtab, ndim, cep, p, numel, numel_l, len_am)
Definition w_reloc2.F:30
subroutine w_reloc(rtab, cep, p, numel, numel_l, len_am)
Definition w_reloc.F:31
subroutine w_rfilloc(fill, nodglob, numnod, numnod_l, nmult, len_am)
Definition w_rfilloc.F:31
subroutine w_rnloc(rtab, nodglob, numnod_l, len_am)
Definition w_rnloc.F:31
subroutine w_rnnloc(rtab, nodglob, numnod_l, dim, len_am)
Definition w_rnnloc.F:31
subroutine w_rsph(spbuf, numsph_l, cepsp, proc, vsphio, len_am, ssphveln_l)
Definition w_rsph.F:35
subroutine w_rwall(nprw, lprw, rwl, cep, cel, nodlocal, proc, nslaw_l, neslaw_l, numnod_l, len_ia)
Definition w_rwall.F:34
subroutine w_rwar(nprw, lprw, rwl, rwsav, lwsav_l, lrw_pen_l, nrw_pen_l, rwstif_pen, sln_pen, cep, proc, len_am)
Definition w_rwar.F:34
subroutine w_seatbelts(len_ia, len_am, p, nodlocal, n_anchor_remote_l, n_anchor_remote_send_l, anchor_remote_l, anchor_remote_send_l)
Definition w_seatbelts.F:35
subroutine w_secbuf(secbuf, lsecbuf_l, nstrf, proc, len_am)
Definition w_secbuf.F:33
subroutine w_sectio(nstrf, cep, cel, proc, nstrf_l, nodlocal, len_ia)
Definition w_sectio.F:33
subroutine w_segquadfr(segquadfr, cep, p, cel, nsegquadfr_l, len_ia)
Definition w_segquadfr.F:31
subroutine w_skwsph(skew, numsph_l, cepsp, proc, len_am)
Definition w_skwsph.F:31
subroutine w_skwsub(skew, len_am)
Definition w_skwsub.F:33
subroutine w_stack(igeo, geo, len_ig, len_g, len_ia, len_am, pm, len_pm)
Definition w_stack.F:30
subroutine w_tabmat_prop(iparg, ixc, ixtg, ixs, proc, ngroup_l, poin_part_shell, poin_part_tri, poin_part_sol, mid_pid_shell, mid_pid_tri, mid_pid_sol, ipartc, ipartg, iparts)
subroutine w_th_surf_loadp(iloadp, nodlocal, proc, len_ia, cep, th_surf, numnod, sizloadp, nloadp, len_cep, off)
Writing TH/SURF tabs in restart file.
subroutine w_th_surf_pload(ibcl, nodlocal, proc, len_ia, cep, th_surf, numnod, nibcld, nconld, len_cep, off)
Writing TH/SURF tabs in restart file.
subroutine wrcomip(lmxvint, lvarint, tabvint, ngroup_l, lbufel_l, lenwa_l, intbag_l, numelq_l, numels_l, numelc_l, numelt_l, numelr_l, numelp_l, numelx_l, isumnx_l, numels10_l, numels20_l, numels8_l, numels16_l, lnom_opt, numeltg_l, numeltg6_l, nslarb_l, numnod_l, numel_l, nsvois_l, nqvois_l, ntgvois_l, lenlas, nllink_l, llgrav_l, llbvel_l, nslaw_l, neslaw_l, nskyll_l, nstrf_l, ljoint_l, lenvolu, lenthg, lbufmat, lbufgeo, lbufsf, lenxlas, lwsav_l, lsecbuf_l, numpor_l, npts, nbddnod_l, nfxvel_l, nbddnrb_l, lcne_l, nskyrw_l, nskyrbk_l, nbddi2m_l, lcni2_l, niskyi2_l, i2nsnt_l, nconld_l, nnmv_l, nnmvc_l, nbddncj_l, nbddnrbm_l, nskyrbm_l, nnodt_l, nnodl_l, nmadsh4_l, nmadsh3_l, nmadsol_l, nmadnod_l, imaximp_l, isp0, num16shift_l, numsph_l, lwasph_l, sphshift_l, nrcvvois_l, nsndvois_l, nervois_l, nesvois_l, ilaw11_l, nsegfl_l, nbi18_l, nskyi18_l, leibuf_l, lenthbuf, nfasolfr_l, lennod_l, lenmod_l, lenelm_l, lensig_l, lenglm_l, lencp_l, lenlm_l, lenfls_l, lendls_l, lenmcd_l, lengrvi_l, lengrvr_l, nlagf_l, lrbagale, skippon_l, nconv_l, nfxtemp_l, nfxflux_l, nrbe3_l, llrbe3_l, nbddnrbe3_l, nskyrbe3_l, nslarbm_l, nskyrbmk_l, nbddnrbym_l, madcl_nmadnod_l, nradia_l, nrbe2_l, llrbe2_l, nbddnrbe2_l, numelcpxfe_l, numnodpxfe_l, lcnepxfem_l, llcfield_l, llloadp_l, numelcrkxfe_l, numnodcrkxfe_l, lcnecrkxfem_l, slonfsph_l, slprtsph_l, ssphveln_l, i2nsn25_l, numelccrkxfe_l, numeltgcrkxfe_l, numedges_l, nbddedge_l, sdd_r2r_elem, numnodxfe_l, nsphsol_l, first_sphsol_l, ncluster_l, lenthbufr, numnor_l, nbddnort_l, nbddnor_max_l, nbccnor_l, nbccfr25_l, ns10e_l, lcncnd_l, nbddcndm_l, nbebcs, iebcs_lgth, multi_fvm, nsegquadfr_l, nbddedgt_l, nbddedg_max_l, nrtmx25_l, lenigrnod_l, lenigrbric_l, lenigrquad_l, lenigrsh4n_l, lenigrtrus_l, lenigrbeam_l, lenigrspri_l, lenigrsh3n_l, lenisurf_l, lenislin_l, ne_nervois_l, ne_nesvois_l, ne_nsvois_l, ne_nqvois_l, ne_ntgvois_l, nbcscyc_l, llbcscyc_l, ale_connectivity, n_slipring_l, n_retractor_l, n_anchor_remote_l, n_anchor_remote_send_l, n_seatbelt_l, n_seatbelt_2d_l, dynain_data, numsh4n_l, numsh3n_l, inter_parameters, sensors, nload_cyl, ncload_l, npload_l, ndamp_vrel_l, unitab, lwamp_l, lwanmp_l, ninivelt_l, glob_therm, pblast)
Definition wrcommp.F:74
subroutine c_joint_sms(ljoint, proc, ljoint_l)
subroutine w_joint_sms(ljoint, cep, cel, proc, nodlocal, ljoint_l, len_ia)
subroutine write_db(a, n)
Definition write_db.F:142
subroutine write_dpdb(a, n)
Definition write_db.F:304
void write_i_c(int *w, int *len)
void close_c()
void cur_fil_c(int *nf)
void file_size(int *filesize)
void write_c_c(int *w, int *len)
void open_c(int *ifil, int *len, int *mod)
subroutine write_th_buffer(th, nodlocal, cel, p, nthgrp0, nthgrp, nthgrp01, nthgrp1, scel, numsph, numnod, ncluster, celsph, numloccluster, nbr_th_monvol)
subroutine write_units(unitab)
Definition write_units.F:35
subroutine wrweight_rm(front_rm, nr, proc)
Definition wrweight_rm.F:31