OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
ddsplit.F
Go to the documentation of this file.
1Copyright> OpenRadioss
2Copyright> Copyright (C) 1986-2025 Altair Engineering Inc.
3Copyright>
4Copyright> This program is free software: you can redistribute it and/or modify
5Copyright> it under the terms of the GNU Affero General Public License as published by
6Copyright> the Free Software Foundation, either version 3 of the License, or
7Copyright> (at your option) any later version.
8Copyright>
9Copyright> This program is distributed in the hope that it will be useful,
10Copyright> but WITHOUT ANY WARRANTY; without even the implied warranty of
11Copyright> MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12Copyright> GNU Affero General Public License for more details.
13Copyright>
14Copyright> You should have received a copy of the GNU Affero General Public License
15Copyright> along with this program. If not, see <https://www.gnu.org/licenses/>.
16Copyright>
17Copyright>
18Copyright> Commercial Alternative: Altair Radioss Software
19Copyright>
20Copyright> As an alternative to this open-source version, Altair also offers Altair Radioss
21Copyright> software under a commercial license. Contact Altair to discuss further if the
22Copyright> commercial version may interest you: https://www.altair.com/radioss/.
23!||====================================================================
24!|| ddsplit ../starter/source/restart/ddsplit/ddsplit.F
25!||--- called by ------------------------------------------------------
26!|| lectur ../starter/source/starter/lectur.F
27!||--- calls -----------------------------------------------------
28!|| c_bufel ../starter/source/restart/ddsplit/c_bufel.F
29!|| c_cluster ../starter/source/restart/ddsplit/w_cluster.F
30!|| c_crkadd ../starter/source/restart/ddsplit/c_crkadd.f
31!|| c_crkedge ../starter/source/restart/ddsplit/c_crkedge.F
32!|| c_crkxfem ../starter/source/restart/ddsplit/c_crkxfem.F
33!|| c_dampvrel ../starter/source/restart/ddsplit/c_dampvrel.F
34!|| c_drape ../starter/source/restart/ddsplit/c_drape.F
35!|| c_eig ../starter/source/restart/ddsplit/c_eig.F
36!|| c_elig3d ../starter/source/restart/ddsplit/c_elig3d.F
37!|| c_elmx ../starter/source/restart/ddsplit/c_elmx.F
38!|| c_eltloc ../starter/source/restart/ddsplit/c_eltloc.f
39!|| c_fasolfr ../starter/source/restart/ddsplit/c_idglob.F
40!|| c_front ../starter/source/restart/ddsplit/c_front.F
41!|| c_fvbag ../starter/source/airbag/c_fvbag.F
42!|| c_fxbody1 ../starter/source/restart/ddsplit/c_fxbody.F
43!|| c_fxbody2 ../starter/source/restart/ddsplit/c_fxbody.F
44!|| c_fxbody3 ../starter/source/restart/ddsplit/c_fxbody.F
45!|| c_fxbody4 ../starter/source/restart/ddsplit/c_fxbody.f
46!|| c_group_str ../starter/source/restart/ddsplit/c_group_str.F
47!|| c_ibcl ../starter/source/restart/ddsplit/c_ibcl.F
48!|| c_ibcscyc ../starter/source/restart/ddsplit/c_ibcscyc.F
49!|| c_ibft ../starter/source/restart/ddsplit/c_ibft.F
50!|| c_ibfv ../starter/source/restart/ddsplit/c_ibfv.F
51!|| c_ibmpc ../starter/source/restart/ddsplit/c_ibmpc.F
52!|| c_ibvel ../starter/source/restart/ddsplit/c_ibvel.F
53!|| c_icfield ../starter/source/restart/ddsplit/c_icfield.F
54!|| c_icnds10 ../starter/source/restart/ddsplit/c_icnds10.F
55!|| c_iconv ../starter/source/restart/ddsplit/c_iconv.F
56!|| c_idglob ../starter/source/restart/ddsplit/c_idglob.F
57!|| c_iebcs ../starter/source/restart/ddsplit/c_iebcs.F
58!|| c_igrav ../starter/source/restart/ddsplit/c_igrav.f
59!|| c_iloadp ../starter/source/restart/ddsplit/c_iloadp.F
60!|| c_inivell ../starter/source/restart/ddsplit/c_inivell.F90
61!|| c_iradia ../starter/source/restart/ddsplit/c_iradia.F
62!|| c_irbe2 ../starter/source/restart/ddsplit/c_irbe2.f
63!|| c_irbe3 ../starter/source/restart/ddsplit/c_irbe3.F
64!|| c_islin_str ../starter/source/restart/ddsplit/c_islin_str.F
65!|| c_isph ../starter/source/restart/ddsplit/c_isph.F
66!|| c_isurf_str ../starter/source/restart/ddsplit/c_isurf_str.F
67!|| c_ithflux ../starter/source/restart/ddsplit/c_ithflux.F
68!|| c_ixfloc ../starter/source/restart/ddsplit/c_ixfloc.f
69!|| c_joint_sms ../starter/source/constraints/general/cyl_joint/write_count_joint_sms.F
70!|| c_lag ../starter/source/restart/ddsplit/c_lag.F
71!|| c_llink ../starter/source/restart/ddsplit/c_llink.F
72!|| c_mad ../starter/source/restart/ddsplit/c_mad.F
73!|| c_multi_vel ../starter/source/restart/ddsplit/c_multi_vel.F
74!|| c_ncrkxfem ../starter/source/restart/ddsplit/c_ncrkxfem.F
75!|| c_ngroup ../starter/source/restart/ddsplit/c_ngroup.F
76!|| c_nloads ../starter/source/restart/ddsplit/c_nloads.F
77!|| c_pon ../starter/source/restart/ddsplit/c_pon.f
78!|| c_poro ../starter/source/restart/ddsplit/c_poro.F
79!|| c_pxfem ../starter/source/restart/ddsplit/c_pxfem.F
80!|| c_rbyk ../starter/source/restart/ddsplit/c_rbyk.F
81!|| c_rbymk ../starter/source/restart/ddsplit/c_rbymk.F
82!|| c_rwall ../starter/source/restart/ddsplit/c_rwall.F
83!|| c_seatbelts ../starter/source/restart/ddsplit/c_seatbelts.F
84!|| c_sectio ../starter/source/restart/ddsplit/c_sectio.F
85!|| c_segquadfr ../starter/source/restart/ddsplit/c_segquadfr.F
86!|| c_spmd_ne_connect ../starter/source/ale/spmd_ne_connect.F
87!|| c_vois ../starter/source/restart/ddsplit/c_vois.F
88!|| checksum_write_starter_restart ../starter/source/output/checksum/checksum_option.F90
89!|| eigwrestp ../starter/source/restart/ddsplit/wrrest.F
90!|| elapstime_omp ../starter/source/system/timer.F
91!|| f_nodloc2 ../starter/source/restart/ddsplit/f_nodloc2.F
92!|| fvwrestp ../starter/source/restart/ddsplit/fvwrestp.F
93!|| fxbwrestp ../starter/source/restart/ddsplit/wrrest.F
94!|| iface ../starter/source/ale/ale3d/iface.F
95!|| iface2 ../starter/source/ale/ale3d/iface.F
96!|| intbuf_ini_starter ../starter/source/interfaces/intbuf/intbuf_ini_starter.F
97!|| intstamp_wresti ../starter/share/modules1/intstamp_mod.F
98!|| intstamp_wrestr ../starter/share/modules1/intstamp_mod.F
99!|| ipari_l_ini ../starter/source/restart/ddsplit/ipari_l_ini.F
100!|| m_flow ../starter/source/restart/ddsplit/m_flow.F
101!|| nfwrestp ../starter/source/restart/ddsplit/wrrest.F
102!|| setlenwa ../starter/source/restart/ddsplit/setlenwa.F
103!|| split_ebcs ../starter/source/boundary_conditions/ebcs/split_ebcs.F
104!|| split_interfaces ../starter/source/restart/ddsplit/split_interfaces.F
105!|| split_skew ../starter/source/restart/ddsplit/split_skew.F
106!|| spmd_ne_connect ../starter/source/ale/spmd_ne_connect.F
107!|| spmd_userwi_rest ../starter/source/user_interface/user_windows_tools.F
108!|| startime ../starter/source/system/timer.F
109!|| stoptime ../starter/source/system/timer.F
110!|| table_wresti ../starter/source/tools/curve/table_tools.F
111!|| table_wrestr ../starter/source/tools/curve/table_tools.f
112!|| w_alelag ../starter/source/restart/ddsplit/w_alelag.F
113!|| w_anim_crk ../starter/source/restart/ddsplit/w_anim_crk.F
114!|| w_anim_ply ../starter/source/restart/ddsplit/w_anim_ply.F
115!|| w_avuply ../starter/source/restart/ddsplit/w_avuply.F
116!|| w_bcs_proc ../starter/source/restart/ddsplit/w_bcs_proc.F90
117!|| w_bid ../starter/source/restart/ddsplit/w_bid.F
118!|| w_bufbric_22 ../starter/source/interfaces/inter3d1/w_bufbric_22.F
119!|| w_bufel ../starter/source/restart/ddsplit/w_bufel.F
120!|| w_cluster ../starter/source/restart/ddsplit/w_cluster.F
121!|| w_crkxfem ../starter/source/restart/ddsplit/w_crkxfem.F
122!|| w_dampvrel ../starter/source/restart/ddsplit/w_dampvrel.F
123!|| w_disp0_vel0_cload ../starter/source/restart/ddsplit/w_disp0_vel0_cload.F
124!|| w_drape ../starter/source/restart/ddsplit/w_drape.F
125!|| w_elbuf_str ../starter/source/restart/ddsplit/w_elbuf_str.F
126!|| w_elig3d ../starter/source/restart/ddsplit/w_elig3d.F
127!|| w_elmx ../starter/source/restart/ddsplit/w_elmx.F
128!|| w_fac ../starter/source/restart/ddsplit/w_fac.f
129!|| w_failwave ../starter/source/restart/ddsplit/w_failwave.F
130!|| w_fasolfr ../starter/source/restart/ddsplit/w_fasolfr.F
131!|| w_fbft ../starter/source/restart/ddsplit/w_fbft.F
132!|| w_fconv ../starter/source/restart/ddsplit/w_fconv.F
133!|| w_fi ../starter/source/restart/ddsplit/w_fi.F
134!|| w_fixvel ../starter/source/restart/ddsplit/w_fixvel.F
135!|| w_fradia ../starter/source/restart/ddsplit/w_fradia.F
136!|| w_frbe3 ../starter/source/restart/ddsplit/w_frbe3.F
137!|| w_front ../starter/source/restart/ddsplit/w_front.F
138!|| w_fsph ../starter/source/restart/ddsplit/w_fsph.F
139!|| w_fthflux ../starter/source/restart/ddsplit/w_fthflux.F
140!|| w_geo ../starter/source/restart/ddsplit/w_geo.F
141!|| w_gjoint ../starter/source/restart/ddsplit/w_gjoint.F
142!|| w_group_str ../starter/source/restart/ddsplit/w_group_str.F
143!|| w_ibcl ../starter/source/restart/ddsplit/w_ibcl.F
144!|| w_ibcscyc ../starter/source/restart/ddsplit/w_ibcscyc.F
145!|| w_ibft ../starter/source/restart/ddsplit/w_ibft.F
146!|| w_ibfv ../starter/source/restart/ddsplit/w_ibfv.F
147!|| w_ibmpc ../starter/source/restart/ddsplit/w_ibmpc.F
148!|| w_ibvel ../starter/source/restart/ddsplit/w_ibvel.F
149!|| w_icfield ../starter/source/restart/ddsplit/w_icfield.F
150!|| w_icnds10 ../starter/source/restart/ddsplit/w_icnds10.F
151!|| w_iconv ../starter/source/restart/ddsplit/w_iconv.F
152!|| w_ieloc ../starter/source/restart/ddsplit/w_ieloc.f
153!|| w_igrav ../starter/source/restart/ddsplit/w_igrav.f
154!|| w_iloadp ../starter/source/restart/ddsplit/w_iloadp.F
155!|| w_ing2loc ../starter/source/restart/ddsplit/w_ing2loc.F
156!|| w_inivel_str ../starter/source/restart/ddsplit/w_inivel_str.F90
157!|| w_inloc ../starter/source/restart/ddsplit/w_inloc.F
158!|| w_iparg ../starter/source/restart/ddsplit/w_iparg.f
159!|| w_iradia ../starter/source/restart/ddsplit/w_iradia.F
160!|| w_irbe2 ../starter/source/restart/ddsplit/w_irbe2.F
161!|| w_irbe3 ../starter/source/restart/ddsplit/w_irbe3.F
162!|| w_irivet ../starter/source/restart/ddsplit/w_irivet.F
163!|| w_iskewsp ../starter/source/restart/ddsplit/w_iskewsp.F
164!|| w_iskn ../starter/source/restart/ddsplit/w_iskn.F
165!|| w_islin_str ../starter/source/restart/ddsplit/w_islin_str.F
166!|| w_isph ../starter/source/restart/ddsplit/w_isph.F
167!|| w_isurf_str ../starter/source/restart/ddsplit/w_isurf_str.F
168!|| w_itabm1 ../starter/source/restart/ddsplit/w_itabm1.F
169!|| w_ithflux ../starter/source/restart/ddsplit/w_ithflux.F
170!|| w_ixaloc ../starter/source/restart/ddsplit/w_ixaloc.F
171!|| w_ixbloc ../starter/source/restart/ddsplit/w_ixbloc.F
172!|| w_ixloc ../starter/source/restart/ddsplit/w_ixloc.F
173!|| w_joint_sms ../starter/source/constraints/general/cyl_joint/write_count_joint_sms.F
174!|| w_knotloc ../starter/source/restart/ddsplit/w_knotloc.f
175!|| w_lacc ../starter/source/restart/ddsplit/w_lacc.F
176!|| w_las ../starter/source/restart/ddsplit/w_las.F
177!|| w_lgau ../starter/source/restart/ddsplit/w_lgau.F
178!|| w_llink ../starter/source/restart/ddsplit/w_llink.f
179!|| w_mad ../starter/source/restart/ddsplit/w_mad.F
180!|| w_main_proc_weight ../starter/source/restart/ddsplit/w_master_proc_weight.F
181!|| w_monvol ../starter/source/restart/ddsplit/w_monvol.F
182!|| w_outmaxn ../starter/source/restart/ddsplit/w_outmaxn.F
183!|| w_ply_info ../starter/source/restart/ddsplit/w_ply_info.F
184!|| w_pon ../starter/source/restart/ddsplit/w_pon.f
185!|| w_poro ../starter/source/restart/ddsplit/w_poro.F
186!|| w_pxfem ../starter/source/restart/ddsplit/w_pxfem.f
187!|| w_r3nloc ../starter/source/restart/ddsplit/w_r3nloc.F
188!|| w_rbyk ../starter/source/restart/ddsplit/w_rbyk.F
189!|| w_rbymk ../starter/source/restart/ddsplit/w_rbymk.F
190!|| w_reloc ../starter/source/restart/ddsplit/w_reloc.f
191!|| w_reloc2 ../starter/source/restart/ddsplit/w_reloc2.F
192!|| w_rfilloc ../starter/source/restart/ddsplit/w_rfilloc.F
193!|| w_rnloc ../starter/source/restart/ddsplit/w_rnloc.F
194!|| w_rnnloc ../starter/source/restart/ddsplit/w_rnnloc.F
195!|| w_rsph ../starter/source/restart/ddsplit/w_rsph.F
196!|| w_rwall ../starter/source/restart/ddsplit/w_rwall.F
197!|| w_rwar ../starter/source/restart/ddsplit/w_rwar.F
198!|| w_seatbelts ../starter/source/restart/ddsplit/w_seatbelts.f
199!|| w_secbuf ../starter/source/restart/ddsplit/w_secbuf.f
200!|| w_sectio ../starter/source/restart/ddsplit/w_sectio.F
201!|| w_segquadfr ../starter/source/restart/ddsplit/w_segquadfr.F
202!|| w_skwsph ../starter/source/restart/ddsplit/w_skwsph.F
203!|| w_skwsub ../starter/source/restart/ddsplit/w_skwsub.F
204!|| w_stack ../starter/source/restart/ddsplit/w_stack.F
205!|| w_subset_str ../starter/source/restart/ddsplit/w_subset_str.F
206!|| w_tabmat_prop ../starter/source/restart/ddsplit/w_tabmat_prop.F
207!|| w_th_surf_loadp ../starter/source/restart/ddsplit/w_th_surf_loadp.F
208!|| w_th_surf_pload ../starter/source/restart/ddsplit/w_th_surf_pload.F
209!|| wrcomip ../starter/source/restart/ddsplit/wrcommp.F
210!|| wrcomr ../starter/source/restart/ddsplit/wrcomm.F
211!|| write_elgroup_param ../starter/source/restart/ddsplit/write_elgroup_param.F
212!|| write_joint ../starter/source/constraints/general/cyl_joint/write_joint.F
213!|| write_matparam ../starter/source/materials/mat/write_matparam.F
214!|| write_nloc_struct ../starter/source/restart/ddsplit/write_nloc_struct.F
215!|| write_pcyl ../starter/source/loads/general/load_pcyl/write_pcyl.F
216!|| write_sensors ../starter/source/tools/sensor/write_sensors.F
217!|| write_th_buffer ../starter/source/restart/ddsplit/write_th_buffer.F
218!|| wrweight_rm ../starter/source/restart/ddsplit/wrweight_rm.F
219!||--- uses -----------------------------------------------------
220!|| c_inivell_mod ../starter/source/restart/ddsplit/c_inivell.f90
221!|| checksum_starter_option_mod ../starter/source/output/checksum/checksum_option.F90
222!|| cluster_mod ../starter/share/modules1/cluster_mod.F
223!|| constraint_mod ../starter/source/modules/constaint_mod.f90
224!|| detonators_mod ../starter/share/modules1/detonators_mod.F
225!|| drape_mod ../starter/share/modules1/drape_mod.F
226!|| dsgraph_mod ../starter/share/modules1/dsgraph_mod.f
227!|| front_mod ../starter/share/modules1/front_mod.F
228!|| fvbag_mod ../starter/share/modules1/fvbag_mod.F
229!|| intstamp_mod ../starter/share/modules1/intstamp_mod.F
230!|| joint_mod ../starter/share/modules1/joint_mod.F
231!|| message_mod ../starter/share/message_module/message_mod.F
232!|| mid_pid_mod ../starter/share/modules1/mid_pid_mod.F
233!|| monvol_struct_mod ../starter/share/modules1/monvol_struct_mod.F
234!|| split_cfd_mod ../starter/share/modules1/split_cfd_mod.F
235!|| stack_mod ../starter/share/modules1/stack_mod.F
236!|| stack_var_mod ../starter/share/modules1/stack_var_mod.F
237!|| submodel_mod ../starter/share/modules1/submodel_mod.F
238!|| table_mod ../starter/share/modules1/table_mod.F
239!|| w_bcs_proc_mod ../starter/source/restart/ddsplit/w_bcs_proc.F90
240!|| w_inivel_str_mod ../starter/source/restart/ddsplit/w_inivel_str.F90
241!||====================================================================
242 SUBROUTINE ddsplit(
243 1 P ,CEP ,CEL ,IGEO ,MAT_ELEM ,
244 2 IPM ,ICODE ,ISKEW ,ISKN ,INSEL ,
245 3 IBCSLAG ,IPART ,IPARTS ,IPARTQ ,IPARTC ,
246 4 IPARTT ,IPARTP ,IPARTR ,IPARTTG ,DETONATORS ,
247 5 IPARTX ,NPC ,IXTG ,GROUP_PARAM_TAB,
248 6 IXTG6 ,IXS ,IXS10 ,IXS20 ,IXS16 ,
249 7 IXQ ,IXC ,IXT ,IXP ,IXR ,
250 8 ITAB ,ITABM1 ,GJBUFI ,NALE ,
251 9 ALE_CONNECTIVITY,
252 A KXX ,IXX ,IBCL ,IBFV ,
253 B LAS ,LACCELM ,NNLINK ,LLLINK ,
254 C IPARG ,IGRAV ,LGRAV ,IBVEL ,LBVEL ,
255 D IACTIV ,FACTIV ,KINET ,IPARI ,NPRW ,
256 E LPRW ,IEXMAD ,NPBY ,
257 F LPBY ,IXRI ,NSTRF ,LJOINT ,PORNOD ,
258 G MONVOL ,ICONTACT ,LAGBUF ,
259 H FR_IAD ,X ,D ,V ,VR ,
260 I DR ,THKE ,DAMPR ,DAMP ,MS ,
261 J IN ,TF ,PM ,SKEW ,XFRAME ,
262 K GEO ,EANI ,BUFMAT ,BUFGEO ,BUFSF ,
263 L BRMPC ,GJBUFR ,W ,VEUL ,FILL ,
264 M DFILL ,WB ,DSAV ,ASAV ,MSNF ,
265 N SPBUF ,FAC ,VEL ,FSAV ,FZERO ,
266 O XLAS ,ACCELM ,FBVEL ,GRAVFAC ,
267 P FR_WAVE ,FAILWAVE ,PARTS0 ,ELBUF ,
268 Q RWL ,RWSAV ,RBY ,RIVET ,
269 R SECBUF ,RVOLU ,RCONX ,NLOC_DMG ,
270 S FVMAIN ,LIBAGALE ,LENTHG ,LBUFMAT ,LBUFGEO ,
271 T LBUFSF ,LENXLAS ,LNOM_OPT ,LENLAS ,
272 U LENVOLU ,NPTS ,CNE ,LCNE ,
273 V ADDCNE ,CNI2 ,LCNI2G ,ADDCNI2 ,CEPI2 ,
274 W CELI2 ,I2NSNT ,PROBINT ,DDSTAT ,PM1SHF ,
275 X DD_IAD ,
276 Z KXSP ,IXSP ,NOD2SP ,CEPSP ,
277 a NTHWA ,NAIRWA ,NMNT ,L_MUL_LAG1 ,L_MUL_LAG ,
278 b LWASPIO ,IPARTSP ,ISPCOND ,PM1SPH ,
279 c WMA ,
280 d EIGIPM ,EIGIBUF ,EIGRPM ,
281 e IFLOW ,RFLOW ,MEMFLOW ,IEXLNK ,FASOLFR ,
282 f IPARTH ,
283 j FXBIPM ,FXBRPM ,FXBNOD ,FXBMOD ,FXBGLM ,
284 k FXBCPM ,FXBCPS ,FXBLM ,FXBFLS ,FXBDLS ,
285 l FXBDEP ,FXBVIT ,FXBACC ,FXBELM ,FXBSIG ,
286 m FXBGRVI ,FXBGRVR ,IADLL ,LLL ,IBMPC ,
287 n LAMBDA ,LRBAGALE ,ISKWP ,NSKWP ,ISENSP ,
288 o NSENSP ,IACCP ,NACCP ,IPART_STATE ,MCP ,
289 p TEMP ,UNITAB ,INTSTAMP ,IFRAME ,CLUSTERS ,
290 q PARTSAV ,IBFT ,FBFT ,IBCV ,
291 r FCONV ,IRBE3 ,LRBE3 ,FRBE3 ,FRONT_RM ,
292 s RBYM ,IRBYM ,LCRBYM ,INOISE ,FNOISE ,
293 t MS0 ,ADMSMS ,NOM_SECT ,ISPSYM ,
294 u SH4TREE ,SH3TREE ,IPADMESH ,IBFFLUX ,FBFFLUX ,
295 v SH4TRIM ,SH3TRIM ,PADMESH ,MSC ,MSTG ,
296 w INC ,INTG ,PTG ,MCPC ,MCPTG ,
297 x RCONTACT ,ACONTACT ,PCONTACT ,MSCND ,INCND ,
298 y MSSA ,MSTR ,MSP ,MSRT ,IBCR ,
299 z FRADIA ,DMELC ,DMELTG ,DMELS ,DMELTR ,
300 1 DMELP ,DMELRT ,RES_SMS , ISPHIO ,
301 2 LPRTSPH ,LONFSPH ,VSPHIO ,SPHVELN ,ALPH ,
302 3 IFILL ,IMS ,IRBE2 ,LRBE2 ,
303 8 MS_PLY ,
304 9 ZI_PLY ,INOD_PXFEM ,IEL_PXFEM ,ICODPLY ,ISKWPLY ,
305 A ADDCNE_PXFEM ,CNE_PXFEM ,CEL_PXFEM ,ITHVAR ,XDP,TABLE ,
306 B CELSPH ,ICFIELD ,LCFIELD ,CFIELD ,
307 C MSZ2 ,ITASK ,DIAG_SMS ,
308 D ILOADP ,LLOADP ,LOADP,
309 E INOD_CRKXFEM ,IEL_CRKXFEM ,ADDCNE_CRKXFEM ,CNE_CRKXFEM ,CEL_CRKXFEM ,
310 F IBUFSSG_IO ,INTERCEP ,IBORDNODE ,IEDGESH ,IBORDEDGE ,
311 G LINALE ,NODEDGE ,IEDGE ,CEP_CRKXFEM ,IEDGE_TMP ,
312 H CRKNODIAD ,ELBUF_TAB ,NOM_OPT ,LGAUGE ,GAUGE ,
313 I IGAUP ,NGAUP ,NODLEVXF ,FRONTB_R2R ,DFLOW ,
314 J VFLOW ,WFLOW ,SPH2SOL ,SOL2SPH ,IRST ,
315 K ELCUTC ,NODENR ,KXFENOD2ELC ,ENRTAG ,INTBUF_TAB,
316 M I11FLAG ,XFEM_TAB ,LENTHGR ,RTHBUF ,
317 N IXIG3D ,KXIG3D ,KNOT ,IPARTIG3D ,WIGE ,
318 O NCRKPART ,INDX_CRK ,CRKLVSET ,CRKSHELL ,CRKSKY ,
319 P CRKAVX ,CRKEDGE ,SENSORS ,
320 Q STACK ,XFEM_PHANTOM ,T8 ,TAB_UMP ,POIN_UMP ,
321 R SOL2SPH_TYP ,ADDCSRECT ,CSRECT ,DRAPE ,LOADS ,
322 S ITAGND ,ICNDS10 ,ADDCNCND ,
323 T CEPCND ,CELCND ,CNCND ,NATIV_SMS ,I24MAXNSNE ,
324 U MULTI_FVM ,SEGQUADFR ,INTBUF_FRIC_TAB,SUBSET ,IGRNOD ,
325 V IGRBRIC ,IGRQUAD ,IGRSH4N ,IGRSH3N ,IGRTRUSS ,
326 W IGRBEAM ,IGRSPRING ,IGRPART ,IGRSURF ,IGRSLIN ,
327 X POIN_PART_SHELL,POIN_PART_TRI,POIN_PART_SOL,MID_PID_SHELL,MID_PID_TRI ,
328 Y MID_PID_SOL , TAG_NM ,NINDX_NM ,INDX_NM ,TAG_SCRATCH ,
329 Z NINDX_SCRT , INDX_SCRT ,FLAG_24_25 ,NUMNOD_L ,TAG_SKN ,
330 A MULTIPLE_SKEW, IGRSURF_PROC,KNOTLOCPC ,KNOTLOCEL ,ALE_ELM,
331 B SIZE_ALE_ELM ,PINCH_DATA ,TAG_SKINS6 ,IBCSCYC ,LBCSCYC ,T_MONVOL,
332 C INDX_S,INDX_Q,INDX_TG,FACE_ELM_S,FACE_ELM_Q,FACE_ELM_TG,NBR_TH_MONVOL, EBCS_TAB,
333 D KLOADPINTER , LOADPINTER ,DGAPLOADINT ,S_LOADPINTER, LEN_CEP ,DYNAIN_DATA,
334 E DRAPEG ,USER_WINDOWS,OUTPUT ,INTERFACES ,NUMBER_LOAD_CYL,
335 F LOADS_PER_PROC, PYTHON ,DPL0CLD ,VEL0CLD ,NAMES_AND_TITLES,
336 G BCS_PER_PROC,constraint_struct,glob_therm ,PBLAST ,RWSTIF_PEN,SLN_PEN )
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.AND. IF(NUMSPH>0NSPCOND>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.AND. IF(NGJOINT/=0 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.OR. IF(ALE_CONNECTIVITY%has_nn_connect 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.AND. IF (NLASER>0P==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.OR. IF(EBCS_TAB%tab(ii)%poly%type==10 EBCS_TAB%tab(ii)%poly%type==11)IS_EBCS_PARALLEL=.TRUE.
2228.NOT..AND. IF(EBCS_TAB%tab(ii)%poly%is_multifluid 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.AND. IF( NODLOCAL(EBCS_TAB_LOC_2%tab(NEBCS_PARALLEL)%poly%node_list(jj)) > 0
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.NOT. IF ( 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.NOT..AND. ELSEIF ((EBCS_TAB%tab(ii)%poly%is_multifluid)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.NOT. IF ( 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.AND. IF (NUMMPC>0P==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.AND. IF(JOINT_SMSP==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.AND. IF(LAG_NCF>0P==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.AND..AND. IF (MULTI_FVM%IS_USED N2D /= 0 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.AND. IF(NUMSPH>0NSPMD>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.OR..OR..OR. IF(ISECUT > 0 IISROT > 0 IMPOSE_DR /= 0 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.AND. IF(NUMSPH>0NSPCOND>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.AND. IF(NUMMPC>0P==1)THEN
2861 CALL WRITE_DB(BRMPC,LMPC)
2862 LEN_AM = LEN_AM + LMPC
2863 END IF
2864.AND. IF(NGJOINT>0P==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.AND. IF(ILAG==1(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.OR..OR. IF(IALE == 1 IEULER == 1 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.OR. IF(ISIGI==2ISIGI==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.AND. IF(NLASER>0P==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.AND. IF(P == 1 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.AND. IF(NCMAX>0P==1)THEN
3107 CALL WRITE_DB(LAMBDA,NCMAX)
3108 LEN_AM = LEN_AM + NCMAX
3109 END IF
3110C--------------------------------------------
3111C RCONX
3112C--------------------------------------------
3113.AND. IF(NCONX>0P==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.OR. IF(NADMESH /= 0 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.OR. IF(IDTMINS==2IDTMINS_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.AND. IF(NALELK>0SLINALE>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.AND. IF(SKNOTLOCPC > 0 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.OR. IF(IPART_STACK > 0 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.AND. IF (N2D==0IALE+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.AND. IF(I2NSNT>0IVECTOR==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
3732 END SUBROUTINE DDSPLIT
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_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 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)
Definition ddsplit.F:337
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 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 nfvbag
Definition fvbag_mod.F:127
integer, dimension(:), allocatable ixs_temp
logical joint_sms
Definition joint_mod.F:62
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 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 c_cluster(clusters, proc, cep, ncluster_l, clusters_id_l)
Definition w_cluster.F:203
subroutine startime(event, itask)
Definition timer.F:93
subroutine stoptime(event, itask)
Definition timer.F:135
subroutine table_wrestr(table, lenr)
program starter
Definition starter.F:39
subroutine w_fac(fac, cep, proc, nconld_l, len_am)
Definition w_fac.F:31
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_iparg(iparg, proc, ngroup_l, len_ia)
Definition w_iparg.F:30
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_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_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_reloc(rtab, cep, p, numel, numel_l, len_am)
Definition w_reloc.F:31
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 c_joint_sms(ljoint, proc, ljoint_l)