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