169
170
171
173 USE nodal_arrays_mod
174 USE connectivity_mod
178 USE mat_elem_mod
180 USE intbufdef_mod
181 USE int8_mod
184 USE multi_fvm_mod
186 USE intbuf_fric_mod
193 USE sensor_mod
194 USE ebcs_mod
196 USE pblast_mod
198 USE loads_mod
202 USE output_mod
203 USE interfaces_mod
204 USE python_funct_mod
209 USE bcs_mod , only : bcs
210 USE skew_mod
216 USE elbufdef_mod
217 use write_inivel_mod , only : write_inivel
218 use glob_therm_mod
219 use write_ale_grid_mod , only : write_ale_grid
220 use write_bcs_wall_mod , only : write_bcs_wall
221 use write_bcs_nrf_mod , only
222 use rbe3_mod
223 use restart_rbe3pen_mod, only : write_rrbe3pen
224 use checksum_output_option_mod, only : checksum_restart_write
225 use rwall_mod
226 use restart_rwallpen_mod, only : write_rrwallpen
227
228
229
230#include "implicit_f.inc"
231
232
233
234 TYPE(nodal_arrays_) :: NODES
235 TYPE(connectivity_) :: ELEMENTS
236 INTEGER, INTENT(IN) :: NDRAPE
237 INTEGER, INTENT(IN) :: IMPL_S
238 INTEGER, INTENT(IN) :: IMPL_S0
239 my_real,
INTENT(INOUT) :: mcp(numnod)
240 my_real,
INTENT(INOUT) :: temp(numnod)
241 INTEGER, INTENT(INOUT) :: NEIPM, LEIBUF, NERPM
242 INTEGER, INTENT(INOUT) :: EIGIPM(NEIPM,NEIG),EIGIBUF(LEIBUF)
243 my_real,
INTENT(INOUT) :: eigrpm(nerpm,neig)
244 INTEGER, INTENT(IN) :: FORNEQS(3,NUMNOD)
245 INTEGER IAF(*),ICH,ADDCNE(*)
247 TYPE(ELBUF_STRUCT_), TARGET, DIMENSION(NGROUP) :: ELBUF_TAB
248 TYPE(ELBUF_STRUCT_), TARGET, DIMENSION(NGROUP,NXEL) :: XFEM_TAB
249 TYPE(INTBUF_STRUCT_) INTBUF_TAB(*)
250 TYPE(MULTI_FVM_STRUCT), INTENT(INOUT) :: MULTI_FVM
251
252 TYPE(H3D_DATABASE), INTENT(IN) :: H3D_DATA
253 TYPE(INTBUF_FRIC_STRUCT_) INTBUF_FRIC_TAB(*)
254 TYPE(SUBSET_), TARGET, DIMENSION(NSUBS) :: SUBSET
255 TYPE(PINCH) :: PINCH_DATA
256 TYPE(t_ale_connectivity), INTENT(IN) :: ALE_CONNECTIVITY
257 TYPE(MONVOL_STRUCT_), DIMENSION(NVOLU), INTENT(IN) :: T_MONVOL
258 TYPE(t_ebcs_tab), INTENT(INOUT) :: EBCS_TAB
259 TYPE(DYNAIN_DATABASE) ,INTENT(IN) :: DYNAIN_DATA
260 TYPE(USER_WINDOWS_) ,INTENT(IN) :: USER_WINDOWS
261 TYPE(OUTPUT_) ,INTENT(INOUT) :: OUTPUT
262 TYPE(INTERFACES_) ,INTENT(IN) :: INTERFACES
263 TYPE(SENSORS_) ,INTENT(IN) :: SENSORS
264 TYPE(LOADS_) ,INTENT(IN) :: LOADS
265 TYPE(MAT_ELEM_) ,INTENT(IN) :: MAT_ELEM
266 TYPE(PYTHON_) ,INTENT(INOUT) :: PYTHON
267 TYPE(NAMES_AND_TITLES_),INTENT(IN) :: NAMES_AND_TITLES
268 TYPE(SKEW_),INTENT(IN) :: SKEWS
269 TYPE(IMPBUF_STRUCT_), TARGET :: IMPBUF_TAB
270 TYPE(UNIT_TYPE_) :: UNITAB
271 TYPE (STACK_PLY) :: STACK
272 TYPE(DRAPE_) :: DRAPE_SH3N(NUMELTG_DRAPE),DRAPE_SH4N(NUMELC_DRAPE)
273 TYPE(DRAPEG_) :: DRAPEG
274 type (glob_therm_) ,intent(inout) :: GLOB_THERM
275 TYPE(PBLAST_) ,INTENT(INOUT) :: PBLAST
276 TYPE(RBE3_) ,INTENT(INOUT) :: RBE3
277 TYPE(RWALL_) ,INTENT(INOUT) :: RWALL
278
279
280
281#include "chara_c.inc"
282#include "couple_c.inc"
283#include "com01_c.inc"
284#include "com04_c.inc"
285#include "com06_c.inc"
286#include "com_xfem1.inc"
287# "intstamp_c.inc"
288#include "param_c.inc"
289#include "parit_c.inc"
290#include "scr03_c.inc"
291#include "scr05_c.inc"
292#include "scr07_c.inc"
293#include "scr14_c.inc"
294#include "scr16_c.inc"
295#include "scr19_c.inc"
296#include "scrcut_c.inc"
297#include "scrfs_c.inc"
298#include "scrnoi_c.inc"
299#include "scr_fac_c.inc"
300#include "sms_c.inc"
301#include "spmd_c.inc"
302#include "tabsiz_c.inc"
303#include "task_c.inc"
304#include "units_c.inc"
305#include "remesh_c.inc"
306#include "sphcom.inc"
307#include "inter18.inc"
308
309
310
311 INTEGER I,J,LEN,IFILNAM(2148), IFIL,LEN_G,LEN_M,LENG,LEN_S,IXEL,
312 . FLAG_XFEM
313 CHARACTER FILNAM*100, FILNAMR*100, FILNAMG*128,
314 . PROCNAM*4, CHRUNR*4,PLAST*4
315 CHARACTER*1 IJK(26)
316 INTEGER LHEADER,LVARINT,LVARREA,LMXVINT,LMXVREA,M
317 parameter(lheader=15)
318 parameter(lmxvint=4000)
319 parameter(lmxvrea=1000+30*maxlaw+30)
320 INTEGER TABHEAD(LHEADER),TABVINT(LMXVINT)
322 . tabvrea(lmxvrea), entmp(100)
323 INTEGER MY_ILEN,MY_RLEN,LTABLE, LENI, LENR
324
325 INTEGER :: LEN_TMP_NAME
326 CHARACTER(len=2048) :: TMP_NAME
327 INTEGER, DIMENSION(NVOLU) :: NTRI
328 INTEGER :: II, NS_DIFF, ITMP
329 INTEGER :: MY_SIZE
330 INTEGER,DIMENSION(LTITLE) :: ITITLE
331 INTEGER :: SKEW_LEN
332 INTEGER, INTENT(IN) :: LIFLOW
333 INTEGER, INTENT(IN) :: LRFLOW
334 INTEGER, INTENT(IN), DIMENSION(LIFLOW) :: IFLOW
335 INTEGER, INTENT(IN), DIMENSION(LRFLOW) :: RFLOW
336 INTEGER :: NPT
337
338
339
340 INTEGER, DIMENSION(:), ALLOCATABLE :: BUFFER
341 INTEGER :: BUFFER_SIZE
342
343
344 INTEGER,INTENT(INOUT) :: RESTSIZE
345
346 DATA ijk/'I','J','K','L','M','N','O','P','Q','R',
347 . 'S','T','U','V','W','X','Y','Z','A','B',
348 . 'C','D','E','F','G','H'/
349
350
351
352 ipari0 = iparit
353 sfr_elem = SIZE(nodes%BOUNDARY,1)
354 siad_elem = SIZE(nodes%BOUNDARY_ADD,1) * SIZE(nodes%BOUNDARY_ADD,2)
355 CALL wrcomi(output,lmxvint,lvarint,tabvint,1,multi_fvm,h3d_data,dynain_data,
356 . interfaces%PARAMETERS,sensors,loads,glob_therm,pblast)
357
358 entmp(1) = output%TH%WFEXT
359 entmp(2) = ehour
360 entmp(3) = econtv
361 entmp(4) = epor
362 entmp(5) = glob_therm%HEAT_STORED
363 entmp(6) = glob_therm%HEAT_MECA
364 entmp(7) = glob_therm%HEAT_CONV
365 entmp(8) = glob_therm%HEAT_RADIA
366 entmp(9) = glob_therm%HEAT_FFLUX
367 entmp(10)= econtd
368 entmp(11)= econt_cumu
370 IF(ispmd/=0) THEN
371 output%TH%WFEXT = zero
372 ehour = zero
373 econtv = zero
374 epor = zero
375 glob_therm%HEAT_STORED = zero
376 glob_therm%HEAT_MECA = zero
377 glob_therm%HEAT_CONV = zero
378 glob_therm%HEAT_RADIA = zero
379 glob_therm%HEAT_FFLUX = zero
380 econtd = zero
381 econt_cumu = zero
382 ELSE
383 output%TH%WFEXT = entmp(1)
384 ehour = entmp(2)
385 econtv= entmp(3)
386 epor = entmp(4)
387 glob_therm%HEAT_STORED = entmp(5)
388 glob_therm%HEAT_MECA = entmp(6)
389 glob_therm%HEAT_CONV = entmp(7)
390 glob_therm%HEAT_RADIA = entmp(8)
391 glob_therm%HEAT_FFLUX = entmp(9)
392 econtd = entmp(10)
393 econt_cumu = entmp(11)
394 ENDIF
395
396 IF(
ale%GRID%NWALE == 2)
THEN
397 entmp(1) =
ale%GRID%VGZ
399 IF(ispmd==0)
ale%GRID%VGZ = entmp(1)
400 ENDIF
401
402 entmp(1) = output%DATA%INOUT%DM_IN
403 entmp(2) = output%DATA%INOUT%DM_OUT
404 entmp(3) = output%DATA%INOUT%DE_IN
405 entmp(4) = output%DATA%INOUT%DE_OUT
407 IF(ispmd /= 0) THEN
408 output%DATA%INOUT%DM_IN = zero
409 output%DATA%INOUT%DM_OUT = zero
410 output%DATA%INOUT%DE_IN = zero
411 output%DATA%INOUT%DE_OUT = zero
412 ELSE
413 output%DATA%INOUT%DM_IN = entmp(1)
414 output%DATA%INOUT%DM_OUT = entmp(2)
415 output%DATA%INOUT%DE_IN = entmp(3)
416 output%DATA%INOUT%DE_OUT = entmp(4)
417 ENDIF
418
419 CALL wrcomr(lmxvrea,lvarrea,tabvrea,dynain_data,interfaces%PARAMETERS,
420 . output,glob_therm)
421
422
423
424 WRITE(chrunr,'(I4.4)')irun
425 WRITE(procnam,'(I4.4)')ispmd+1
426 filnam=rootnam(1:rootlen)//'_'//chrunr//'_'//procnam
427 WRITE(plast'(I4.4)')nspmd
428 filnamg=rootnam(1:rootlen)//'_'//chrunr//'_[0001-'//plast//']'
429 leng = rootlen+17
430 len = rootlen + 10
431 filnamr = filnam
432 ifil = 2
433 IF(ich/=0)ifil = 41
434 IF(multirest/=0.AND.mcheck==0)THEN
435 irprev = 1 + mod(irprev,multirest)
436 filnam=filnam(1:len)//'_'//ijk(irprev)
437 len = len+2
438 filnamg=filnamg(1:leng)//'_'//ijk(irprev)
439 leng = leng+2
440 ENDIF
441 filnam=filnam(1:len)//'.rst'
442 len = len +4
443 filnamg=filnamg(1:leng)//'.rst'
444 leng = leng+4
445
448
449 DO i = 1, len_tmp_name
450 ifilnam(i) = ichar(tmp_name(i:i))
451 END DO
453 IF (irform/5==2) THEN
454 CALL open_c(ifilnam,len_tmp_name,0)
455 ELSEIF (irform/5==3) THEN
456 CALL open_c(ifilnam,len_tmp_name,3)
457 ELSEIF (irform/5==4) THEN
458 CALL open_c(ifilnam,len_tmp_name,6)
459 ENDIF
460 DO i = 1, len
461 ifilnam(i) = ichar(filnam(i:i))
462 END DO
464
465
466
468 ititle(i) = ichar( names_and_titles%TITLE(i:i) )
469 ENDDO
471
472
473
474
475 tabhead(1) =iradios
476
477 tabhead(2) =iresfil
478
479 tabhead(3) =itestv
480
481 tabhead(4) =irun
482
483 icodrun =1
484 tabhead(5) =icodrun
485
486 tabhead(6) =codvers
487
488 tabhead(7) =iminver
489
490 tabhead(8) =isrcver
491
492 tabhead(9) =invers
493
494 tabhead(10)=scodver
495
496 tabhead(11)=sminver
497
498 tabhead(12)=ssrcver
499
500 tabhead(13)=invstr
501
502 tabhead(14) =lvarint
503 tabhead(15)=lvarrea
506
507
508
510
511
512
513 CALL checksum_restart_write(output%CHECKSUM)
514
515
516
517 len_g = npropgi*numgeo
518 len_m = npropmi*nummat
519 len_s = npart
520 CALL write_i_c(nodes%NODGLOB,nodes%NUMNOD)
521
523
525
527
529
531
533
535
537
539
541
542 CALL python_serialize(python,buffer, buffer_size)
544
546
548
550
552
554
556
558
560
562
564
566
568
570
571 IF (iale + ieuler + ialelag + glob_therm%ITHERM /= 0) THEN
572 itmp = SIZE(ale_connectivity%ee_connect%iad_connect)
574 CALL write_i_c(ale_connectivity%ee_connect%iad_connect, itmp)
575
576 itmp = SIZE(ale_connectivity%ee_connect%connected)
578 CALL write_i_c(ale_connectivity%ee_connect%connected, itmp)
579
580 itmp = SIZE(ale_connectivity%ee_connect%type)
582 CALL write_i_c(ale_connectivity%ee_connect%type, itmp)
583
584 itmp = SIZE(ale_connectivity%ee_connect%iface2)
586 CALL write_i_c(ale_connectivity%ee_connect%iface2, itmp)
587 ENDIF
588
590
592
593 IF(iale > 0 .AND.
ale%GRID%NWALE == 6 .OR. inter18_autoparam == 1 .OR. inter18_is_variable_gap_defined)
THEN
598 ENDIF
599 IF (iale > 0 .AND. (
ale%GRID%NWALE < 2 .OR.
ale%GRID%NWALE == 5.OR.
ale%GRID%NWALE == 7))
THEN
600 CALL write_i_c(ale_connectivity%NN_CONNECT%IAD_CONNECT, numnod + 1)
601 CALL write_i_c(ale_connectivity%NN_CONNECT%CONNECTED, ale_connectivity%NN_CONNECT%IAD_CONNECT(numnod + 1))
602 ENDIF
603 IF (iale > 0 .AND.
ale%GRID%NWALE == 6 .OR. inter18_autoparam == 1 .OR. inter18_is_variable_gap_defined)
THEN
604 CALL write_i_c(ale_connectivity%NE_CONNECT%IAD_CONNECT, numnod + 1)
605 CALL write_i_c(ale_connectivity%NE_CONNECT%CONNECTED,
606 . ale_connectivity%NE_CONNECT%IAD_CONNECT(numnod + 1))
607 ENDIF
608
609 ns_diff = 0
610 IF (multi_fvm%NS_DIFF) THEN
611 ns_diff = 1
612 ENDIF
614 IF (ns_diff == 1) THEN
615 CALL write_i_c(ale_connectivity%IDGLOB%ID,
616 . numels + nsvois + numelq + nqvois + numeltg + ntgvois)
617 ENDIF
618
620
622
624
626
628
630
632
634
636
638
640
642
644
646
648
650
652
653 IF(nsphsol/=0)THEN
654
656
658
660
662 END IF
663
665
666 IF (nintloadp>0) THEN
669 ENDIF
670
672
674
676
677
678
681 CALL write_i_c(ebcs_tab%nebcs_parallel, 1)
682 CALL write_i_c(ebcs_tab%nebcs_loc, 1) ! number of other ebcs
683 leni = 0
684 lenr = 0
685 IF (ebcs_tab%nebcs > 0) THEN
686
687 CALL write_i_c(ebcs_tab%my_typ,ebcs_tab%nebcs)
688 ENDIF
689
690
691 IF (ebcs_tab%nebcs_loc +ebcs_tab%nebcs_parallelTHEN
692 DO ii = 1, ebcs_tab%nebcs_fvm + ebcs_tab%nebcs_loc + ebcs_tab%nebcs_parallel
693 CALL ebcs_tab%tab(ii)%poly%write_common_data(leni, lenr)
694 CALL ebcs_tab%tab(ii)%poly%write_data(leni, lenr)
695 ENDDO
696 ENDIF
697
698
700
702
704
706
708
710
712
714
716
718
720
722
724
726
727 CALL write_i_c(rbe3%IRBE3,rbe3%NRBE3*irbe3_variables)
728
730
732
734
736
738
740
742
743
744
746
747
749
750 CALL write_i_c(rwall%NPRW,rwall%NNPRW*rwall%NRWALL)
751
753
755
757
759
761
763
765
767
769
771
773
775
777
779
781
783
785
787
789
791
792 DO ii = 1, nvolu
793 ntri(ii) = t_monvol(ii)%NB_FILL_TRI
794 ENDDO
795
797 DO ii = 1, nvolu
798 IF (ntri(ii) > 0) THEN
799 CALL write_i_c(t_monvol(ii)%FILL_TRI(1:3* ntri(ii)), 3* ntri(ii))
800 ENDIF
801 ENDDO
802
804
805 IF(ns10e > 0)THEN
807 ENDIF
808
810
811 CALL thsurf_write_restart(output%TH%TH_SURF,2)
812
814
815 CALL write_i_c(nodes%BOUNDARY_ADD,siad_elem)
816
818
820
822
824
826
828
830
831 CALL write_i_c(rbe3%mpi%IAD_RBE3,nspmd+1)
832
834
836
838
840
842
844
846
848
850
852
854
856
858
860
861 CALL write_i_c(rbe3%mpi%FR_RBE3,rbe3%mpi%fr_rbe3_sz)
862
863 CALL write_i_c(rbe3%mpi%FR_RBE3MP,rbe3%mpi%fr_rbe3_sz)
864
866
868
870
872
874
876
878
880
882
884
886
888
890
891 CALL write_i_c(interfaces%SPMD_ARRAYS%FR_EDG,2*nbddedgt)
892
893 CALL write_i_c(interfaces%SPMD_ARRAYS%IAD_FREDG,(nspmd+1)*ninter25)
894
896
898
900
902
904
906
908
910
912
914
916
918
920
922
924
926
928
930
932
934
936
938
940
942
943 IF(icrack3d > 0)THEN
947 ENDIF
948
949
952
953
954 IF(iparit==1)THEN
955 CALL write_i_c(elements%PON%ADSKY,numnod+1)
956 CALL write_i_c(elements%PON%PROCNE,
SIZE(elements%PON%PROCNE))
957 IF(i2nsnt>0)THEN
959 ENDIF
961 IF(ns10e>0) THEN
963 ENDIF
965 CALL write_i_c(elements%PON%IADS ,
SIZE(elements%PON%IADS))
966 CALL write_i_c(elements%PON%IADS10 ,
SIZE(elements%PON%IADS10 ))
967 CALL write_i_c(elements%PON%IADS20 ,
SIZE(elements%PON%IADS20 ))
968 CALL write_i_c(elements%PON%IADS16 ,
SIZE(elements%PON%IADS16 ))
969 CALL write_i_c(elements%PON%IADQ ,
SIZE(elements%PON%IADQ ))
970 CALL write_i_c(elements%PON%IADC ,
SIZE(elements%PON%IADC ))
971 CALL write_i_c(elements%PON%IAD_TRUSS ,
SIZE(elements%PON%IAD_TRUSS))
972 CALL write_i_c(elements%PON%IAD_BEAM ,
SIZE(elements%PON%IAD_BEAM ))
973 CALL write_i_c(elements%PON%IAD_SPRING ,
SIZE(elements%PON%IAD_SPRING ))
974 CALL write_i_c(elements%PON%IAD_TG ,
SIZE(elements%PON%IAD_TG ))
975 CALL write_i_c(elements%PON%IAD_TG6 ,
SIZE(elements%PON%IAD_TG6 ))
976 CALL write_i_c(elements%PON%IAD_MV ,
SIZE(elements%PON%IAD_MV ))
977 CALL write_i_c(elements%PON%IAD_CONLD ,
SIZE(elements%PON%IAD_CONLD))
978 CALL write_i_c(elements%PON%IAD_CONV ,
SIZE(elements%PON%IAD_CONV))
979 CALL write_i_c(elements%PON%IAD_RADIA ,
SIZE(elements%PON%IAD_RADIA
980 CALL write_i_c(elements%PON%IAD_LOADP ,
SIZE(elements%PON%IAD_LOADP))
981 CALL write_i_c(elements%PON%IAD_FXFLUX ,
SIZE(elements%PON%IAD_FXFLUX))
982
983
984
995
996
997
998 IF(iplyxfem > 0) THEN
1000
1003 ENDIF
1004
1005
1006
1007 IF(icrack3d > 0) THEN
1013 ENDIF
1014 ENDIF
1015
1016
1017 IF(ebcs_tab%nebcs_parallel>0) THEN
1018 DO i=1,ebcs_tab%nebcs
1019 IF(ebcs_tab%my_typ(i)==10 .or. ebcs_tab%my_typ(i)==11) THEN
1020 my_size = ebcs_tab%tab(i)%poly%nb_elem
1021 CALL write_i_c(ebcs_parithon(i)%ELEM_ADRESS,4*my_size)
1022 ENDIF
1023 ENDDO
1024 ENDIF
1025
1026
1029
1032
1033 IF(nadmesh /= 0)THEN
1037 len=abs(lsh4trim)
1039 len=abs(lsh3trim)
1041 END IF
1042
1043
1044
1046 . interfaces%PARAMETERS)
1047
1048
1049
1051
1052
1053
1054 IF(nintstamp /= 0)THEN
1056 END IF
1057
1058
1059
1060 IF(ninterfric /= 0)THEN
1061 CALL intfric_wresti(intbuf_fric_tab,ninterfric)
1062 END IF
1063
1064
1065
1066 IF(ntable /= 0)THEN
1068 END IF
1069
1071
1072 IF (nloadc>0)THEN
1075 ENDIF
1076 IF (nloadp>0)THEN
1079 ENDIF
1080 IF (pblast%NLOADP_B>0)THEN
1081 CALL pblast_write_engine(pblast)
1082 ENDIF
1083
1084 IF (loads%NLOAD_CYL > 0) THEN
1086 ENDIF
1087
1088 IF(icrack3d > 0)THEN
1094 END IF
1095
1096 IF(numelig3d > 0)THEN
1098
1100 ENDIF
1101
1103
1104
1105
1106 IF(nbcscyc > 0)THEN
1109 ENDIF
1110
1111
1112
1113 itmp = bcs%NUM_WALL
1115 IF(bcs%NUM_WALL > 0)THEN
1116 DO i=1, bcs%NUM_WALL
1117 CALL write_bcs_wall(bcs%WALL(i))
1118 ENDDO
1119 ENDIF
1120
1121
1122
1123 itmp = bcs%NUM_NRF
1125 IF(bcs%NUM_NRF > 0)THEN
1126 DO i=1, bcs%NUM_NRF
1127 CALL write_bcs_nrf(bcs%NRF(i))
1128 ENDDO
1129 ENDIF
1130
1131
1132
1134
1135
1136
1138
1140
1142
1144
1146
1148
1150
1152
1154
1155 IF (n2d >0) THEN
1157 ENDIF
1158
1160
1162
1164
1166
1168
1169 skew_len = skews%N_SKEW_VAR * skews%TOTAL_SKEW_NUMBER
1171
1173
1175
1177
1179
1181
1183
1185
1187
1189
1191
1192 IF (multi_fvm%IS_USED) THEN
1193 CALL write_db(multi_fvm%PRES_SHIFT, 1)
1194 IF (n2d == 0) THEN
1195 CALL write_db(multi_fvm%VEL(1, :), numels)
1196 CALL write_db(multi_fvm%VEL(2, :), numels)
1197 CALL write_db(multi_fvm%VEL(3, :), numels)
1198 ELSE
1199 CALL write_db(multi_fvm%VEL(1, :), numelq + numeltg)
1200 CALL write_db(multi_fvm%VEL(2, :), numelq
1201 CALL write_db(multi_fvm%VEL(3, :), numelq + numeltg)
1202 ENDIF
1203 ENDIF
1204
1206
1208
1210
1212
1214
1216
1218
1220
1222
1224
1226
1228
1230
1232
1234
1236
1238
1240
1242
1243 CALL write_db(gauge,llgauge*nbgauge)
1244
1246
1248
1249 CALL write_db(rbe3%FRBE3,rbe3%frbe3_sz)
1250
1251 CALL write_rrbe3pen(rbe3%PEN)
1252
1253 CALL write_db(factiv,lractiv*nactiv)
1254
1256
1258
1260
1262
1264
1266
1267 flag_xfem = 0
1269
1270
1271 IF (icrack3d > 0) THEN
1272 flag_xfem = 1
1273 DO ixel=1,nxel
1275 ENDDO
1276 ENDIF
1277
1279
1280 CALL write_db(rwall%RWBUF,rwall%nrwlp*rwall%nrwall)
1281
1282 CALL write_db(rwall%RWSAV,rwall%sz_rwsav)
1283
1284 CALL write_rrwallpen(rwall%nrwall_pen,rwall%PEN,rwall%PEN%lnspen)
1285
1287
1289
1291
1293
1295
1297
1299
1303
1304
1305
1307 . interfaces%PARAMETERS)
1308
1309
1310
1312
1313
1314
1315 IF (iresmd==0.AND.npsav>=25) THEN
1316
1317 IF(nspmd > 1)
1319 IF (ispmd/=0)THEN
1320 DO m=1,npsav*npart
1321 partsav(m) = zero
1322 ENDDO
1323 ENDIF
1325 ENDIF
1326 IF(nnoise>0)THEN
1328 CALL write_db(af(mf01),6*ncnois*nnoise+1)
1329 ENDIF
1330
1331
1332 IF (iresmd==1) THEN
1335
1337 ENDIF
1338
1339 IF (iresp == 1) THEN
1342 ENDIF
1343
1344
1345 my_ilen = 4*nrlink+nrlink*(nspmd+2)
1346 . +lllink+lllink*
min(1,iparit)
1347 . +nsflsw+8*ntflsw+44*ncuts
1349 my_rlen = 9*nsflsw+7*ncuts
1355
1356
1362
1363 IF(nadmesh /= 0 .OR. irest_mselt /= 0)THEN
1369 END IF
1370
1371 IF(irest_mselt /= 0)THEN
1376 END IF
1377
1378 IF(nadmesh /= 0)THEN
1379 CALL write_db(padmesh,kpadmesh*npart)
1380 IF(glob_therm%ITHERM_FE > 0)THEN
1383 END IF
1384 END IF
1385
1391 ENDIF
1392
1393 IF(istatcnd /= 0)THEN
1396 ENDIF
1397
1398
1399
1400 IF(nintstamp /= 0)THEN
1402 END IF
1403
1404 IF(h3d_data%N_SCAL_SKID > 0) THEN
1405 IF(nintstamp/=0) THEN
1406 CALL write_db(pskids, h3d_data%N_SCAL_SKID*numnodg)
1407 ELSE
1408 CALL write_db(pskids, h3d_data%N_SCAL_SKID*numnod)
1409 ENDIF
1410 ENDIF
1411
1413 IF(nintstamp/=0.AND.nspmd > 1 ) THEN
1414 IF(ispmd == 0)
CALL write_db(fcont_max, 3*numnodg
1415 ELSE
1417 ENDIF
1418 ENDIF
1419
1423 ENDIF
1424
1427 ENDIF
1429 CALL write_db(fncont2_max, 3*numnod)
1430 CALL write_db(ftcont2_max, 3*numnod)
1431 CALL write_db(npcont2_max, 3*numnod)
1432 ENDIF
1433
1436 ENDIF
1439 CALL write_db(ftcont2_min, 3*numnod)
1440 CALL write_db(npcont2_min, 3*numnod)
1441 ENDIF
1442
1443 IF(output%DATA%S_EFRICINT >0)THEN
1444 IF(output%DATA%NINEFRIC > 0)
CALL write_db(output%DATA%EFRIC, output%DATA%NINEFRIC*numnod)
1445 IF(output%DATA%NINEFRIC_STAMP > 0)
CALL write_db(output%DATA%EFRIC_STAMP, output%DATA%NINEFRIC_STAMP*numnodg)
1446 ENDIF
1447 IF(output%DATA%S_EFRIC >0)THEN
1448 CALL write_db(output%DATA%EFRICG, numnod)
1449 IF(nintstamp/=0)
CALL write_db(output%DATA%EFRICG_STAMP, numnodg)
1450 ENDIF
1451
1452
1453
1454 IF(ninterfric /= 0)THEN
1455 CALL intfric_wrestr(intbuf_fric_tab,ninterfric)
1456 END IF
1457
1460 IF(idtmins==1)THEN
1462 ELSEIF(idtmins==2)THEN
1469 END IF
1470 IF(idtmins/=0.OR.idtmins_int/=0)THEN
1472 END IF
1473
1474 IF(idtmins==2.OR.idtmins_int/=0) THEN
1475
1477
1479 END IF
1480
1481 IF (isms_selec /= 0) THEN
1483 ENDIF
1484
1485
1486
1487 IF(ntable /= 0)THEN
1489 END IF
1490
1491
1492
1493#ifdef DNC
1494 CALL eng_wrt_mds()
1495#endif
1496
1497
1498
1499 IF(slinale > 0)THEN
1501 END IF
1502
1503
1504
1505 CALL write_ale_grid()
1506
1507
1508
1510
1511
1512
1513 IF (neig>0) THEN
1514 CALL eigwrest(eigipm, eigibuf, eigrpm)
1515 ENDIF
1516
1517
1518
1519 DO i = 1, nslipring
1527
1534
1536
1546
1560
1561 ENDDO
1562
1563 ENDDO
1564
1565 DO i = 1, nretractor
1601 DO j=1,2
1606 ENDIF
1607 ENDDO
1608 ENDDO
1609
1610 IF (n_anchor_remote > 0) THEN
1613 ENDIF
1614
1615 IF (n_anchor_remote_send > 0) THEN
1618 ENDIF
1619
1620 IF ((nslipring_g + nretractor_g >0).AND.(ispmd == 0)) THEN
1628 ENDDO
1629 ENDIF
1630 ENDIF
1631
1632
1633
1634
1641
1642 IF (nconld > 0) THEN
1645 ENDIF
1646
1647
1648
1652 ENDIF
1653
1654 IF (nflow>0)
CALL nfwrest(iflow, rflow)
1655
1657
1658 IF (impl_s>0) THEN
1661 ENDIF
1662
1663 IF(glob_therm%ITHERM_FE > 0 )
CALL thcwrest(mcp, temp)
1664
1666
1668
1670
1671
1672 IF (glob_therm%NUMCONV > 0) THEN
1674 END IF
1675 IF (glob_therm%NUMRADIA > 0) THEN
1677 END IF
1678 IF (glob_therm%NFXFLUX > 0) THEN
1680 END IF
1681 IF (glob_therm%NFXTEMP > 0) THEN
1683 END IF
1684
1685
1686 IF (iplyxfem > 0)THEN
1691 ENDIF
1692
1693 IF (nloadc > 0)
CALL write_db(cfield,lfacload*nloadc)
1694 IF (nloadp > 0)
CALL write_db(loadp,lfacload*nloadp)
1695 IF (nintloadp > 0)
CALL write_db(dgaploadint,ninter*nloadp_hyd)
1696
1697
1698 IF (loads%NINIVELT>0) CALL write_inivel(loads%NINIVELT,loads%INIVELT)
1699
1700
1701 IF (icrack3d > 0) THEN
1704 ENDIF
1705
1707
1709
1711
1712 IF (sknot > 0)
CALL write_db(knot,sknot)
1713 IF (sknotlocpc > 0)
CALL write_db(knotlocpc,sknotlocpc)
1714 IF (sknotlocel > 0)
CALL write_db(knotlocel,sknotlocel)
1715 IF (numelig3d > 0)
CALL write_db(wige,numnod)
1716
1717 IF(ipart_stack >0)
CALL stack_wrest(stack%IGEO,stack%GEO,stack%PM )
1718
1719 IF (ndrape > 0)
CALL drape_wrest(drape_sh4n , drape_sh3n,drapeg)
1720
1722
1723
1724
1727
1728
1729
1731
1732
1734
1735 IF(ispmd==0)THEN
1736 WRITE (iout,1000) filnamg(1:leng)
1737 WRITE (istdo,1050) filnamg(1:leng)
1738 ENDIF
1739
1740 1000 FORMAT (/4x,' RESTART FILES:',1x,a,' WRITTEN'/
1741 . 4x,' -------------'/)
1742 1050 FORMAT (4x,' RESTART FILES:',1x,a,' WRITTEN')
1743
1744 RETURN
subroutine compress_i_nnz(array, len)
subroutine compress_r_nnz(array, len)
subroutine wrcomi(output, lmxvint, lvarint, tabvint, isp, multi_fvm, h3d_data, dynain_data, inter_parameters, sensors, loads, glob_therm, pblast)
subroutine drape_wrest(drape_sh4n, drape_sh3n, drapeg)
subroutine plyxfem_wrestanim()
subroutine ply_info_wrest(ply_info)
subroutine crkxfem_wrestanim(crkedge, crksky, indx_crk, xedge4n, xedge3n)
subroutine crkxfem_wrest(inod, iel, nodlevxf)
subroutine nitschewrest(forneqs)
subroutine fxtempwrest(ibft, fbft, glob_therm)
subroutine radiawrest(ibcr, fradia, glob_therm)
subroutine stack_wrest(igeo, geo, pm)
subroutine plyxfem_wravuply()
subroutine impwrest(nimpr)
subroutine alelag_wrest()
subroutine imp_trans(r_imp)
subroutine fxfluxwrest(ibfflux, fbfflux, glob_therm)
type(alefvm_buffer_), target alefvm_buffer
type(alefvm_param_), target alefvm_param
integer, dimension(:), allocatable id_damp_vrel
integer, dimension(:), allocatable fr_damp_vrel
integer, dimension(:), pointer iadcnd
integer, dimension(:), pointer fr_cndm
integer, dimension(:), pointer procncnd
integer, dimension(:), pointer icnds10
integer, dimension(:), pointer addcncnd
integer, dimension(:), pointer iad_cndm
type(surf_), dimension(:), allocatable, target igrsurf
type(surf_), dimension(:), allocatable, target igrslin
character(len=outfile_char_len) outfile_name
type(intstamp_data), dimension(:), allocatable intstamp
integer, parameter ltitle
integer, dimension(:), allocatable poin_ump
integer, dimension(:), allocatable iconx
integer, dimension(:), allocatable, target igrv
integer, dimension(:), allocatable fr_sec
integer, dimension(:), allocatable iad_rby
integer, dimension(:), allocatable id_global_vois
integer, dimension(:), allocatable fr_nbedge
integer, dimension(:), allocatable iadrbmk
integer, dimension(:), allocatable fr_mad
integer, dimension(:), allocatable ibcv
integer, dimension(:), allocatable lagbuf
integer, dimension(:), allocatable ixx
integer, dimension(:), allocatable, target lpby
integer, dimension(:), allocatable fr_rl
integer, dimension(:), allocatable, target ixs
integer, dimension(:), allocatable iad_rbym2
integer, dimension(:), allocatable iad_i2m
integer, dimension(:), allocatable iad_cut
integer, dimension(:), allocatable lgrav
integer, dimension(:), allocatable, target npby
integer, dimension(:), allocatable kxig3d
integer, dimension(:), allocatable iadmv3
integer, dimension(:), allocatable face_vois
integer, dimension(:), pointer iframe
integer, dimension(:), pointer madfail
integer, dimension(:), allocatable lesdvois
integer, dimension(:), allocatable lnrcvois
integer, dimension(:), allocatable nativ0_sms
integer, dimension(:), allocatable newfront
integer, dimension(:), allocatable iadc_crkxfem
integer, dimension(:), allocatable nodpor
integer, dimension(:), allocatable ilink
integer, dimension(:), allocatable llink
integer, dimension(:), allocatable madclnod
integer, dimension(:,:), allocatable ipadmesh
integer, dimension(:), allocatable lbvel
integer, dimension(:), allocatable lprtsph
integer, dimension(:), allocatable nbsdvois
integer, dimension(:), allocatable lnodpor
integer, dimension(:), allocatable ibcr
integer, dimension(:), allocatable ne_nercvois
integer, dimension(:), allocatable iadmv2
integer, dimension(:), allocatable neflsw
integer, dimension(:), allocatable ixig3d
integer, dimension(:), allocatable linale
type(cluster_), dimension(:), allocatable cluster
integer, dimension(:), allocatable iactiv
integer, dimension(:), allocatable crknodiad
integer, dimension(:), allocatable ne_lercvois
integer, dimension(:), allocatable ibcslag
integer, dimension(:), allocatable ibufssg_io
integer, dimension(:,:), allocatable sh4tree
integer, dimension(:), allocatable fr_lagf
integer, dimension(:), allocatable ispsym
integer, dimension(:), allocatable sh4trim
integer, dimension(:), allocatable addcsrect
integer, dimension(:), allocatable ipm
integer, dimension(:), allocatable, target ipart
integer, dimension(:), allocatable iadwal
integer, dimension(:), allocatable fr_nor
integer, dimension(:), allocatable isphio
integer, dimension(:), allocatable fr_i18
integer, dimension(:), allocatable, target ipari
integer, dimension(:), allocatable fr_rbym2
integer, dimension(:), allocatable igaup
integer, dimension(:), allocatable iad_rbm
integer, dimension(:), allocatable iskew_ply
integer, dimension(:), allocatable nnflsw
integer, dimension(:), allocatable nercvois
type(failwave_str_) failwave
integer, dimension(:), allocatable ispcond
integer, dimension(:), allocatable ibordnode
integer, dimension(:), allocatable sh3trim
integer, dimension(:), allocatable iadrbk
integer, dimension(:), allocatable iecran
integer, dimension(:), allocatable, target iedgesh
integer, dimension(:), allocatable fr_i2m
integer, dimension(:), allocatable ixt
integer, dimension(:), allocatable lnlink
integer, dimension(:), allocatable ibftemp
integer, dimension(:), allocatable ibfv
integer, dimension(:), allocatable iaccp
integer, dimension(:), allocatable, target iel_crkxfem
integer, dimension(:), allocatable iadi18
integer, dimension(:), allocatable lsegcom
integer, dimension(:), allocatable iskwp_l
integer, dimension(:), allocatable inod_pxfem
integer, dimension(:), allocatable dd_r2r_elem
integer, dimension(:), allocatable kloadpinter
integer, dimension(:), allocatable ixr
integer, dimension(:,:), allocatable sh3tree
integer, dimension(:), allocatable lonfsph
integer, dimension(:), pointer madnod
integer, dimension(:), allocatable madidx
integer, dimension(:), allocatable iexlnk
integer, dimension(:), allocatable, target ixtg
integer, dimension(:), pointer lpbyl
integer, dimension(:), allocatable nnlink
integer, dimension(:), allocatable, target ibcl
integer, dimension(:), allocatable adsky_crkxfem
integer, dimension(:), pointer madprt
integer, dimension(:), allocatable fr_rbym
integer, dimension(:), allocatable monvol
integer, dimension(:), allocatable ifill
integer, dimension(:), allocatable iskwp
integer, dimension(:), allocatable isensp
integer, dimension(:), allocatable fr_rbe2
integer, dimension(:), allocatable irbe2
integer, dimension(:), allocatable inod_crkxfem
integer, dimension(:), allocatable nporgeo
integer, dimension(:), allocatable procne_crkxfem
integer, dimension(:), allocatable fr_rbm2
integer, dimension(:), allocatable kxsp
integer, dimension(:), allocatable neth
integer, dimension(:), allocatable nodlevxf
integer, dimension(:), allocatable loadpinter
integer, dimension(:), allocatable fr_ll
integer, dimension(:), allocatable iad_sec
integer, dimension(:), allocatable nsensp
integer, dimension(:), allocatable dd_iad
integer, dimension(:), allocatable gjbufi
integer, dimension(:), pointer madsh3
integer, dimension(:), allocatable icut
integer, dimension(:), allocatable fr_cj
integer, dimension(:), allocatable, target iskwn
integer, dimension(:), allocatable nesdvois
integer, dimension(:), allocatable cne_crkxfem
integer, dimension(:), allocatable, target iloadp
integer, dimension(:), allocatable iadcj
integer, dimension(:), allocatable ngaup
integer, dimension(:), allocatable lnrbym
integer, dimension(:), allocatable nod2sp
integer, dimension(:), allocatable adsky_pxfem
integer, dimension(:), allocatable nodglobxfe
integer, dimension(:), allocatable weight_rm
integer, dimension(:), allocatable ixp
integer, dimension(:), allocatable laccelm
integer, dimension(:), allocatable, target nom_opt
integer, dimension(:), allocatable iad_rbe2
double precision, dimension(:), allocatable bufgeo
integer, dimension(:), pointer madsol
integer, dimension(:), allocatable fasolfr
integer, dimension(:), allocatable iadi2
integer, dimension(:), allocatable, target npc
integer, dimension(:), allocatable igeo
integer, dimension(:), allocatable, target ibmpc
integer, dimension(:), allocatable ixtg1
integer, dimension(:), allocatable fr_mv
integer, dimension(:), allocatable ims
integer, dimension(:), allocatable fr_edge
integer, dimension(:), allocatable lercvois
integer, dimension(:), allocatable iadrl
integer, dimension(:), allocatable addcni2
integer, dimension(:), allocatable lbcscyc
integer, dimension(:), allocatable fr_rby2
integer, dimension(:), allocatable iad_frnor
integer, dimension(:), allocatable iadc_pxfem
integer, dimension(:), allocatable ne_lesdvois
integer, dimension(:), allocatable ibvel
integer, dimension(:), allocatable iadrbm
integer, dimension(:), allocatable lrivet
integer, dimension(:), pointer npbyl
integer, dimension(:), allocatable iad_edge
integer, dimension(:), allocatable, target icfield
integer, dimension(:), allocatable lgauge
integer, dimension(:), allocatable nstrf
integer, dimension(:), allocatable ibcscyc
integer, dimension(:), allocatable procnor
integer, dimension(:), allocatable tag_skins6
integer, dimension(:), allocatable fr_rby
integer, dimension(:), allocatable iad_rbm2
integer, dimension(:), allocatable irbym
integer, dimension(:,:), allocatable ixsp
integer, dimension(:), pointer madsh4
integer, dimension(:), allocatable iparg
integer, dimension(:), allocatable ixq
integer, dimension(:), allocatable iedge
integer, dimension(:), allocatable ibfflux
integer, dimension(:), allocatable nodedge
integer, dimension(:), allocatable ilas
integer, dimension(:), allocatable iad_rby2
integer, dimension(:), allocatable icode_ply
integer, dimension(:), allocatable lloadp
integer, dimension(:), allocatable fr_cut
integer, dimension(:), allocatable segquadfr
integer, dimension(:), allocatable procni2
integer, dimension(:), allocatable lcfield
integer, dimension(:), allocatable kxx
integer, dimension(:), allocatable nskwp
integer, dimension(:), allocatable ne_nesdvois
integer, dimension(:), allocatable iad_rbym
integer, dimension(:), allocatable nom_sect
integer, dimension(:), allocatable npsegcom
type(nlocal_str_) nloc_dmg
integer, dimension(:), allocatable rg_cut
integer, dimension(:), allocatable iel_pxfem
integer, dimension(:), allocatable lrbe2
integer, dimension(:), allocatable fr_rbm
integer, dimension(:), allocatable llagf
integer, dimension(:), allocatable nbrcvois
integer, dimension(:), allocatable lnsdvois
integer, dimension(:,:), allocatable tab_ump
integer, dimension(:), allocatable naccp
integer, dimension(:), allocatable procne_pxfem
integer, dimension(:), allocatable ithvar
integer, dimension(:), allocatable dd_r2r
integer, dimension(:), allocatable iadll
integer, dimension(:), allocatable icontact
integer, dimension(:), allocatable ipart_state
integer nseatbelt_th_proc
type(retractor_struct), dimension(:), allocatable retractor
type(seatbelt_remote_nodes_struct) anchor_remote_send
type(seatbelt_remote_nodes_struct) anchor_remote
type(seatbelt_th_exch_struct), dimension(:), allocatable seatbelt_th_exch
type(slipring_struct), dimension(:), allocatable slipring
integer, dimension(:), allocatable sph2sol
integer, dimension(:), allocatable irst
integer, dimension(:), allocatable sol2sph_typ
integer, dimension(:), allocatable sol2sph
integer, dimension(:,:), allocatable ply_info
type(ttable), dimension(:), allocatable table
type(time_type) global_comp_time
type(xfem_sky_), dimension(:), allocatable crksky
integer, dimension(:,:), allocatable xedge4n
integer, dimension(:), allocatable indx_crk
type(xfem_edge_), dimension(:), allocatable crkedge
integer, dimension(:,:), allocatable xedge3n
subroutine spmd_glob_dmin9(v, len)
subroutine spmd_glob_dsum9(v, len)
subroutine write_joint(ljoint, cep, cel, proc, nodlocal, ljoint_l, len_ia, numnod_l)
subroutine w_bufbric_22()
subroutine write_pcyl(load_cyl, nload_cyl, nodlocal)
subroutine write_matparam(mat_elem, len)
subroutine w_cluster(cluster, iparg, nodlocal, ncluster_l, cep, proc, numlocgroup, len_ia, len_am)
subroutine w_elbuf_str(proc, iparg, elbuf_tab, len_am, flag_xfem)
subroutine w_failwave(failwave, nodglob, numnod, numnod_l, len_am, itab)
subroutine w_group_str(len_ia, igrnod, igrbric, igrquad, igrsh4n, igrsh3n, igrtruss, igrbeam, igrspring, igrpart, cep, cel, nodlocal, proc, frontb_r2r, numnod_l)
subroutine w_subset_str(subset, len_ia)
subroutine wrcomr(lmxvrea, lvarrea, tabvrea, ms_nd, p, inter_parameters, unitab, glob_therm, output)
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 nfwrest(iflow, rflow)
subroutine plyxfem_wrest(ms_ply, zi_ply, iel, inod, icode, iskew)
subroutine thcwrest(mcp, temp)
subroutine convwrest(ibcv, fconv, numconv, niconv, lfacther)
subroutine eigwrest(eigipm, eigibuf, eigrpm)
subroutine rigmatwrest(rbym, irbym, lcrbym, weight)
subroutine userwi_write(user_windows, ispmd, nspmd, numnod)
subroutine w_line_str(igrslin)
subroutine w_surf_str(igrsurf)
subroutine write_db(a, n)
subroutine write_dpdb(a, n)
subroutine write_intbuf(intbuf_tab)
void write_i_c(int *w, int *len)
void file_size(int *filesize)
void write_c_c(int *w, int *len)
void open_c(int *ifil, int *len, int *mod)
subroutine write_th_restart(th)
subroutine write_units(unitab)