OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
starter0.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!|| starter0 ../starter/source/starter/starter0.F
25!||--- called by ------------------------------------------------------
26!|| starter ../starter/source/starter/starter.F
27!||--- calls -----------------------------------------------------
28!|| ancmsg ../starter/source/output/message/message.F
29!|| anend ../starter/source/output/analyse/analyse_arret.F
30!|| aninit ../starter/source/output/analyse/analyse.c
31!|| build_msg ../starter/source/output/message/build_msg.F
32!|| checksum_check ../starter/source/output/checksum/checksum_check.F90
33!|| contrl ../starter/source/starter/contrl.F
34!|| execargcheck ../starter/source/starter/execargcheck.F
35!|| f_anend ../starter/source/output/analyse/analyse_arret.F
36!|| get_file_name_info ../starter/source/system/get_file_name_info.F
37!|| glob_therm_init ../starter/source/constraints/thermic/glob_therm_init.F90
38!|| hm_convert_2d_elements_seatbelt ../starter/source/devtools/hm_reader/hm_convert_2d_elements_seatbelt.F
39!|| hm_convert_fail_tab ../starter/source/devtools/hm_reader/hm_convert_fail_tab.F
40!|| hm_convert_inter_type19 ../starter/source/devtools/hm_reader/hm_convert_inter_type19.f
41!|| hm_count_2d_element_seatbelt ../starter/source/devtools/hm_reader/hm_count_2d_element_seatbelt.F
42!|| hm_get_max_id ../starter/source/devtools/hm_reader/hm_get_max_id.F
43!|| hm_messages ../starter/source/devtools/hm_reader/hm_messages.F
44!|| hm_read_checksum ../starter/source/output/checksum/checksum_option.F90
45!|| hm_read_submodel ../starter/source/model/assembling/hm_read_submodel.F
46!|| ini_msg ../starter/source/output/message/inimsg.F
47!|| inicod ../starter/source/tools/univ/inicod.F
48!|| iniconstant ../starter/source/system/iniconstant.F
49!|| initime ../starter/source/system/timer.F
50!|| lectur ../starter/source/starter/lectur.F
51!|| my_exit ../starter/source/output/analyse/analyse.c
52!|| prhelpinfo ../starter/source/starter/execargcheck.F
53!|| printcenter ../starter/source/starter/radioss_title.F
54!|| printcpu ../starter/source/system/printcpu.F
55!|| printime ../starter/source/system/timer.F
56!|| r2r_fork ../starter/source/coupling/rad2rad/r2r_fork.F
57!|| radioss_title ../starter/source/starter/radioss_title.F
58!|| setignorecore ../starter/source/system/traceback_handler.c
59!|| st_uaccess_dum ../starter/source/user_interface/uaccess.F
60!|| st_utable_dum ../starter/source/user_interface/utable.F
61!|| startime ../starter/source/system/timer.F
62!|| stoptime ../starter/source/system/timer.F
63!|| titre1 ../starter/source/output/outfile/titre1.F
64!|| trace_in1 ../starter/source/system/trace_back.F
65!|| trace_out1 ../starter/source/system/trace_back.F
66!||--- uses -----------------------------------------------------
67!|| checksum_check_mod ../starter/source/output/checksum/checksum_check.F90
68!|| checksum_starter_option_mod ../starter/source/output/checksum/checksum_option.F90
69!|| defaults_mod ../starter/source/modules/defaults_mod.F90
70!|| detonators_mod ../starter/share/modules1/detonators_mod.F
71!|| glob_therm_init_mod ../starter/source/constraints/thermic/glob_therm_init.F90
72!|| message_mod ../starter/share/message_module/message_mod.F
73!|| submodel_mod ../starter/share/modules1/submodel_mod.F
74!|| th_mod ../starter/share/modules1/th_mod.F90
75!|| user_interface_mod ../starter/source/modules/user_interface_mod.F90
76!|| user_sensor_mod ../starter/source/modules/user_interface_mod.F90
77!||====================================================================
78 SUBROUTINE starter0
79C-----------------------------------------------
80C M o d u l e s
81C-----------------------------------------------
82 USE message_mod
83 USE multi_fvm_mod
84 USE submodel_mod
85 USE check_mod
88 USE ebcs_mod
90 USE alefvm_mod , only:alefvm_param
92 USE user_sensor_mod
93 USE user_interface_mod
94 USE ale_mod
95 USE output_mod
96 USE mat_elem_mod
98 USE defaults_mod, only: defaults_
99 use glob_therm_mod
100 use glob_therm_init_mod
101 USE pblast_mod
102 use checksum_starter_option_mod
103 use checksum_check_mod
104 use th_mod , only : th_has_noda_pext
105C-----------------------------------------------
106C I m p l i c i t T y p e s
107C-----------------------------------------------
108#include "implicit_f.inc"
109C-----------------------------------------------
110C A n a l y s e M o d u l e
111C-----------------------------------------------
112#include "analyse_name.inc"
113C-----------------------------------------------
114C G l o b a l P a r a m e t e r s
115C-----------------------------------------------
116#include "r4r8_p.inc"
117C-----------------------------------------------
118C C o m m o n B l o c k s
119C-----------------------------------------------
120#include "com01_c.inc"
121#include "com04_c.inc"
122#include "com06_c.inc"
123#include "com08_c.inc"
124#include "com09_c.inc"
125#include "com10_c.inc"
126#include "sphcom.inc"
127#include "titr_c.inc"
128#include "units_c.inc"
129#include "units_fxbody_c.inc"
130#include "warn_c.inc"
131#include "scr03_c.inc"
132#include "scr05_c.inc"
133#include "scr06_c.inc"
134#include "scr12_c.inc"
135#include "scr15_c.inc"
136#include "scr17_c.inc"
137#include "scr23_c.inc"
138#include "param_c.inc"
139#include "lagmult.inc"
140#include "flowcom.inc"
141#include "xtimscr_c.inc"
142#include "sysunit.inc"
143#include "build_info.inc"
144#include "altdoctag.inc"
145#include "execinp.inc"
146#include "r2r_c.inc"
147#include "commandline.inc"
148#include "userlib.inc"
149#include "ngr2usr_c.inc"
150#include "inter22.inc"
151#include "ige3d_c.inc"
152C-----------------------------------------------
153C L o c a l V a r i a b l e s
154C-----------------------------------------------
155 INTEGER I,J,K, STAT,INP,OUT
156 INTEGER IFILNAM(2148),LEN,IDMAX_INTER,
157 . IDMAX_GRNOD,IDMAX_LINE,IDMAX_TABLE,IDMAX_FAIL,IDMAX_FUNCT,
158 . IDMAX_PART,IDMAX_PROP,IDMAX_MAT,IDMAX_ELEM,IDMAX_TH,
159 . NB_SEATBELT_SHELLS,RADIOSSV,IFL
160 INTEGER LENR,RUNN,FVERS,IO_ERR,TAGLEN,CHECKSUMLEN,IS_DYNA
161 INTEGER LFNAME,LEN_ENV,STATUS,ISUB_HIERARCHY,TRALL_MAXVAL(7),EDI_RES,
162 . LOAD_ERROR,IBID
163 INTEGER :: LEN_TMP_NAME
164 INTEGER :: ANERROR
165 INTEGER :: RADFLEX_PROCESS_PID
166C
167 INTEGER, DIMENSION(:,:), ALLOCATABLE :: SEATBELT_CONVERTED_ELEMENTS
168C
169 CHARACTER(LEN=2148) :: FILNAM ! Maximum is SIZE(OUTFILE_CHAR_LEN) + 100
170 CHARACTER CHRUN*4,CPUNAM*20,ROOTN*80,CHRUNR*4,ARCHTITLE*66
171 CHARACTER ALTDOCTAG*256,CHECKSUM*256
172 CHARACTER*2048 FNAME,VAL
173C
174 CHARACTER(LEN=NCHARLINE) :: ERR_MSG
175 CHARACTER(len=8) :: STARTDATE
176 CHARACTER(len=10) :: STARTTIME
177 CHARACTER(len=8) :: ENDDATE
178 CHARACTER(len=10) :: ENDTIME
179 CHARACTER(len=2048) :: TMP_NAME
180 CHARACTER(len=2048) :: OUT_FILE_NAME
181 INTEGER :: NB_DYNA_INCLUDE
182C
183 my_real unite, rtitr
184C
185 TYPE(multi_fvm_struct) :: MULTI_FVM
186 TYPE(submodel_data) , DIMENSION(:), ALLOCATABLE :: LSUBMODEL
187 TYPE(detonators_struct_),TARGET :: DETONATORS
188 TYPE(t_ebcs_tab) :: EBCS_TAB
189 TYPE(output_),TARGET :: OUTPUT
190c TYPE(SENSORS_) :: SENSORS ! declared as global in USER_SENSOR_MOD
191 TYPE(MAT_ELEM_) :: MAT_ELEM
192 CHARACTER(LEN=NCHARLINE) :: CWD
193 CHARACTER GLOBAL_PATH*(ncharline+2048)
194 INTEGER :: LEN_CWD
195 INTEGER*4 GETCWD, STATUS_CWD
196 TYPE(names_and_titles_) :: NAMES_AND_TITLES !< NAMES_AND_TITLES host the input deck names and titles for outputs
197 TYPE(defaults_) :: DEFAULTS !< Hosts the variables from /DEF/ option
198 TYPE(glob_therm_) :: glob_therm
199 TYPE(pblast_) :: PBLAST
200C-----------------------------------------------
201C E x t e r n a l F u n c t i o n s
202C-----------------------------------------------
203 INTEGER,EXTERNAL :: ANEND
204C--------------------------------------------------------
205C LAM MAX LENGTH REAL ARRAY
206C LMA MAX LENGTH INTEGER ARRAY
207C------------------------------------------------
208C MACHINE.INC CONTAINS MACHINE SPECIFICATIONS
209C (MALLOC,TYPE MACHINE...)
210C------------------------------------------------
211#include "machine.inc"
212C=======================================================================
213#include "archloops.inc"
214C -------------------------------------------------
215C First task check the exec arguments (fill common)
216 CALL execargcheck(output)
217
218 ! Options not requiering Starter deck read
219 ! ----------------------------------------
220
221 ! -checksum_read [rootname]
222 IF ( output%CHECKSUM%ST_CHECKSUM_READ == 1 ) THEN
223 CALL checksum_check(output%CHECKSUM%ROOTNAME,path,cpunam,archtitle,iresp)
224 stop
225 ENDIF
226C -------------------------------------------------
227C Constants
228 CALL iniconstant
229
230C timers initialization
231 CALL initime()
232c
233 CALL names_and_title_init(names_and_titles)
234C=======================================================================
235C while waiting IOUT to be initialized set to stdout
236C Needs to be done in the early beginning
237C ===================================================
238 iout=6
239 istdo=6
240C=======================================================================
241 CALL radioss_title(istdo,cpunam,archtitle,filnam,rootlen,chrun,iresp,1)
242C=======================================================================
243c
244
245C-------------------------------------------------------------------
246C Version number
247C To be modified when structure of rst file is modified
248C-------------------------------------------------------------------
249C
250C CODVERS : VERSION CODE = 2019 IF RELEASE 2019
251C IMINVER : MINOR VERSION CODE = 1 IF MINOR RELEASE A(A~1) OF 4.4 RELEASE
252C ISRCVER : SOURCE VERSION CODE = 41*100+9
253C-------------------------------------------------------------------
254 codvers = 2026
255 iminver = 1
256 isrcver = 1
257C-------------------------------------------------------------------
258 dyna_message = 0 ! Variable for message
259 load_error = 0
260 CALL hm_reader_variables(load_error,codvers)
261 IF(load_error /= 0) THEN
262 WRITE(istdo,'(A)') ' '
263 WRITE(istdo,'(A)') '------------------------------------------------------------------------'
264 WRITE(istdo,'(A)') ' ERROR : '
265 WRITE(istdo,'(A)') ' Reader configuration files are not available'
266 WRITE(istdo,'(A)') ' Check and set RAD_CFG_PATH variable.'
267 WRITE(istdo,'(A)') ' '
268 WRITE(istdo,'(A)') ' Standard configuration file installation is '
269#ifdef _WIN64
270 WRITE(istdo,'(A)') ' %ALTAIR_HOME%\hwsolvers\radioss\cfg'
271#else
272 WRITE(istdo,'(A)') ' $ALTAIR_HOME/hwsolvers/radioss/cfg'
273#endif
274 WRITE(istdo,'(A)') '------------------------------------------------------------------------'
275 WRITE(ISTDO,'(a)') ' '
276 CALL MY_EXIT(2)
277 ENDIF
278
279! ----------------------------
280! if -infile or outfile cdl are used, then one needs to change $TMPDIR
281! in order to write all scratch files in the user folder
282 IF(INOUT_BOOL) CALL RADIOSS_SET_ENV_VARIABLE(OUTFILE_NAME , OUTFILE_NAME_LEN)
283! ----------------------------
284 CALL DATE_AND_TIME(STARTDATE,STARTTIME)
285c
286 RES_MES = 123456
287 RES_TMP = 123457
288 RES_CHECK = 123499
289 OPEN (UNIT=RES_MES,STATUS='scratch',FORM='formatted')
290 OPEN (UNIT=RES_CHECK,STATUS='scratch',FORM='formatted')
291C
292 ISKIP_NGR2USR_ERROR = 0 !set to 1 before calling NGR2USR enables to skip error message (otherwise they are often duplicated).
293C
294 CALL INI_MSG()
295 CALL BUILD_MSG()
296 CALL CHECK_MESSAGE_DEFINITION()
297C-------------------------------------------------------------------
298C initialization for Analyse Module
299C-------------------------------------------------------------------
300 IERR = 0
301 CALL ANINIT(AN_STARTER, AN_LIVE)
302 CALL SETIGNORECORE (ITRACE)
303
304 IOUTP = 0
305 IOUTPUT = 0
306C-------------------------------------------------------------------
307C Multidomains -> environment variable reading(windows)
308C-------------------------------------------------------------------
309 IPID = 1
310 IDDOM = 0
311 FLG_SWALE = 0
312#if CPP_mach == CPP_w95 || CPP_mach == CPP_win64_spmd || CPP_mach == CPP_p4win64_spmd || CPP_mach == CPP_wnt || CPP_mach == CPP_wmr || CPP_mach == CPP_p4win64 || CPP_mach == CPP_p4win32
313 CALL GET_ENVIRONMENT_VARIABLE("R2R_ENV_IPID",VAL,LEN_ENV,STATUS,.TRUE.)
314C---------> IPID = 0 --> Multidomains starter fils--------------
315 IF (LEN_ENV==1) IPID = 0
316 CALL GET_ENVIRONMENT_VARIABLE("R2R_ENV_SWALE",VAL,LEN_ENV,STATUS,.TRUE.)
317C---------> IPID = 0 --> Multidomains switch ALE----------------
318 IF (LEN_ENV==1) FLG_SWALE = 1
319#endif
320
321C-------------------------------------------------------------------
322C Date
323C To be modified when structure of rst file is modified
324C-------------------------------------------------------------------
325C ITESTV Format [Version][YY][MM][DD]
326 ITESTV = 210290720
327
328 CALL ALE%init()
329
330 ALEFVM_Param%IEnabled = 0
331 ALEFVM_Param%ISOLVER = 0
332 ALEFVM_Param%IPRINT_1 = 0
333 ALEFVM_Param%IPRINT_2 = 0
334C MUSCL Activation
335 ALEMUSCL_Param%IALEMUSCL = 1
336C MUSCL compression coefficient, default value set to 1.
337 ALEMUSCL_Param%BETA = TWO
338 RATIO22 = ONE + TEN/HUNDRED
339 RADIOSSV = 100090402
340 IFLEXPIPE = 1
341 LEN = ncharfield*2
342C
343 TH_HAS_NODA_PEXT = 0
344C
345C No Decay for Starter
346 TAGLEN = 0
347 CHECKSUMLEN = 0
348 ALTDOCTAG = '0'
349 CHECKSUM = '0'
350 UNITMAX = 0
351C---
352C init to 0 variable position writing double precision (XDP)
353 IRXDP = 0
354C
355 IF(IR4R8==2) ITESTV=-ITESTV
356C------------------------------------------------
357C Dynamic Libraries initialization
358C------------------------------------------------
359 CALL USER_WINDOWS_INIT(USER_WINDOWS)
360 USERLIB_LIST(1:100)=0
361 IF(GOT_USERL_ALTNAME==1)THEN
362 DLIBFILE(1:LEN_USERL_ALTNAME)=USERL_ALTNAME(1:LEN_USERL_ALTNAME)
363 DLIBFILE_SIZE=LEN_USERL_ALTNAME
364 ELSE
365 DLIBFILE='libraduser_'
366 DLIBFILE_SIZE=LEN_TRIM(DLIBFILE)
367 ENDIF
368 USERL_AVAIL=0
369 CALL DYN_USERLIB_INIT(DLIBFILE,DLIBFILE_SIZE,USERL_AVAIL,DLIBTKVERS,IRESP,GOT_USERL_ALTNAME)
370C------------------------------------------------
371C Mds lib initialization
372C------------------------------------------------
373#ifdef DNC
374 CALL MDS_USERLIB_INIT (IRESP, MDS_AVAIL, MDS_VER, MDS_PATH, MDS_PATH_LEN)
375#else
376 MDS_AVAIL=0
377#endif
378C-----------------------------------------------------
379C Avoid linking issue with dynamical libraries
380C-----------------------------------------------------
381 IERR=0
382 CALL ST_UACCESS_DUM(IERR)
383 CALL ST_UTABLE_DUM(IERR)
384C-----------------------------------------------------
385C initializations
386C-----------------------------------------------------
387 IS_DYNA = 0
388 IF (GOT_INPUT == 1)THEN
389C SEARCH RUN NUMBER
390 CALL GET_FILE_NAME_INFO(INPUT, LENI, ROOTN, LENR, RUNN, FVERS, IS_DYNA)
391 IF (GOT_PATH==1) THEN
392 FNAME=PATH(1:LENP)//INPUT(1:LENI)
393 ELSE
394 FNAME=INPUT(1:LENI)
395 ENDIF
396 LFNAME=LENI+LENP
397 ISTDI = 81
398
399#if CPP_mach == CPP_w95 || CPP_mach == CPP_win64_spmd || CPP_mach == CPP_p4win64_spmd || CPP_mach == CPP_wnt || CPP_mach == CPP_wmr || CPP_mach == CPP_p4win64 || CPP_mach == CPP_p4win32
400
401 TMP_NAME(1:2048) =''
402 LEN_TMP_NAME = INFILE_NAME_LEN+LFNAME
403 TMP_NAME=INFILE_NAME(1:INFILE_NAME_LEN)//FNAME(1:LFNAME)
404 OPEN(UNIT=ISTDI,FORM='formatted',FILE=TMP_NAME(1:LEN_TMP_NAME),
405 . ACTION='read',STATUS='old',IOSTAT=IO_ERR)
406 IF (IO_ERR/=0) THEN
407 WRITE(6,*)' '
408 WRITE(6,*)'*** error input file "',FNAME(1:LFNAME),
409 * '" not found'
410 WRITE(6,*)' '
411 CALL PRHELPINFO()
412 CALL MY_EXIT(2)
413 ENDIF
414 CLOSE(UNIT=ISTDI)
415#endif
416 ELSE
417 FNAME = " "
418 ROOTN = "RADIOSS_STARTER_INPUT"
419 LENR = 21
420 LFNAME = 1
421 ISTDI = 5
422 ENDIF
423C------------------------------------------------
424C Read DYNA model & convert DYNA -> Radioss objects
425C------------------------------------------------
426 CALL STARTIME(15,1)
427
428 NB_DYNA_INCLUDE = 0
429 IF(IS_DYNA == 1) THEN
430 CALL CPP_READ_DYNA_AND_CONVERT(FNAME, LFNAME,EDI_RES,FILNAM,ROOTLEN+9+OUTFILE_NAME_LEN)
431 ENDIF
432 CALL STOPTIME(15,1)
433C----------------------------------------------------------------------
434C Open starter output file as soon as possible
435C----------------------------------------------------------------------
436 ERR_MSG='OPEN output file'
437 ERR_CATEGORY='OPEN output file'
438 CALL TRACE_IN1(ERR_MSG,LEN_TRIM(ERR_MSG))
439C----------------------------------------------------------------------
440 IF (GOT_INPUT == 1)THEN
441C Rootname is not taken from /INPUT
442 IF (LENR <=80)THEN
443 ROOTNAM(1:LENR)=ROOTN(1:LENR)
444 ENDIF
445 ROOTLEN = LENR
446C Runnumber is taken from input name
447 IRUN = RUNN
448 ENDIF
449
450 IF(IRUN > 0)THEN
451 WRITE(ISTDO,'(a)') ' '
452 WRITE(ISTDO,'(a,i4)') '** error : input file run number set to ',IRUN
453 WRITE(ISTDO,'(a)') ' modif files option is deprecated'
454 WRITE(ISTDO,'(a)') ' '
455 CALL MY_EXIT(2)
456 ENDIF
457
458C-------------------------------------------------------------------
459 IOUT=7
460C message file id
461C-------------------------------------------------------------------
462 WRITE(CHRUN,'(i4.4)')IRUN
463 OUT_FILE_NAME=''
464C
465 IF (IPID==1) THEN
466 FILNAM =OUTFILE_NAME(1:OUTFILE_NAME_LEN)//
467 . ROOTNAM(1:ROOTLEN)//'_'//CHRUN//'.out'
468 OPEN(UNIT=IOUT,FILE=FILNAM(1:OUTFILE_NAME_LEN+ROOTLEN+9),
469 . ACCESS='sequential',
470 . FORM='formatted',STATUS='unknown')
471
472 OUT_FILE_NAME(1:LEN_TRIM(FILNAM))=FILNAM(1:LEN_TRIM(FILNAM))
473
474 WRITE(IOUT, '(1x,a)')TRIM(FILNAM)
475C
476 CALL TRACE_OUT1()
477C
478 CALL RADIOSS_TITLE(IOUT,CPUNAM,ARCHTITLE,
479 * FILNAM,ROOTLEN,CHRUN,IRESP,1)
480
481 CALL PRINTCPU()
482 CALL PRINTCENTER(" ",0,IOUT,1)
483 ELSEIF (FLG_SWALE==1) THEN
484 FILNAM =OUTFILE_NAME(1:OUTFILE_NAME_LEN)//ROOTNAM(1:ROOTLEN)//'_'//CHRUN//'.out'
485 OPEN(UNIT=IOUT,FILE=FILNAM(1:ROOTLEN+9+OUTFILE_NAME_LEN),
486 . ACCESS='sequential',
487 . form='FORMATTED',status='UNKNOWN')
488
489 out_file_name(1:rootlen+9+outfile_name_len)=filnam(1:rootlen+9+outfile_name_len)
490
491 ENDIF
492 CALL titre1
493C------------------------------------------------
494 err_msg='OPEN OUTPUT FILE'
495 err_category='OPEN OUTPUT FILE'
496C------------------------------------------------
497 iugeo=4
498 iin=8
499 iin2=11
500 iin3=12
501 iin4=13
502 iin5=14
503 iin6=15
504 iin7=17
505 iou2=16
506 iin8 =18
507 iin9 =19
508 iuinimap=21
509 iuree=22
510 ificm=23
511 ifxm=24
512 ifxs=25
513 ieigm=26
514c use in ddsplit, will be re-set in ddsplit for multi threading purpose
515 ifxm_l=27
516 ifxs_l=28
517c
518 iusbm =29
519 iusc1=30
520 tsub =31
521 tsub_tmp =32
522C IUSC2=9 ou 10
523 iusc3=50
524
525C new composite shell pid max nbs 200
526 npropg =1000
527 npropm =250
528 nparg = 100
529 npari = 100
530 nparir=48
531 lfxvelr = 9
532 nibcld = 9
533 lfaccld = 2
534 nigrv = 6
535 lfacgrv = 2
536 lfacload = 13
537 nrvolu =73
538 nicbag=5
539 nrcbag=9
540 nibjet=14
541 nrbjet=420
542 nrbhol=22
543 nibhol=19+15
544 nixig3d= 15
545 nixx = 5
546 nixfr1 = 0
547 nixfr2 = 0
548 nisx = 6
549 npebc =14
550 npebcr =10
551 nimv = 75 ! array size for Monitored Volumes
552 nrby = 30
553 nrbylag= 0
554 nnpby = 19
555 nmgrby = 7
556 nrwlp = 26
557 nibvel = 0
558 nbvelp = 6
559 nrcnx = 12
560 nthvki = 40
561 nrbe2l = 12
562 nrbe3l = 10
563C Parameters
564C LTITR = 40
565 rtitr = nchartitle/3.
566 ltitr = ceiling(rtitr)
567 lnopt1 = 20 + ltitr
568 ligrn1 = 20 + ltitr
569 lisurf1 = 20 + ltitr
570 lislin1 = 20 + ltitr
571 nithgr = 20 + ltitr
572 lilset1 = 20 + ltitr
573 lisub1 = 20 + ltitr
574 libox1 = 20 + ltitr
575 lipart1 = 20 + ltitr
576 npropgi = 750 + ltitr
577 npropmi = 300 + ltitr
578C npsav not used by starter
579 npsav = 0
580 nr2r = 2
581 nisp = 8
582 nspbuf = 14
583 nispcond= 6
584 kvoisph = 0
585c 2 new values for ISPHIO, NSEG and IAS for inlet outlet in spmd
586 nisphio = 16
587 nrivf = 13
588 nxframe = 36
589 lskew = 12
590 liskn = 6
591 nbcslag = 0
592 lactiv = 10
593 lractiv = 2
594 lkjni = 6
595 lkjnr = 19
596 nfrbym = 28
597 nirbym = 2
598 nnprw = 8
599 segindx=0
600 nhin2 =0
601 nifv = 16
602 ale%GLOBAL%NALENOVS = 6
603 nledge = 15
604 nrtrans = 22
605C
606 nexmad=0
607 nmadprt=0
608 nmadsh4=0
609 nmadsh3=0
610 nmadsol=0
611 nmadnod=0
612 i7stifs=0
613 nrdamp=37
614 niflow=28
615 nrflow=24
616 niioflow=4
617 nrioflow=3
618 multi_fvm%IS_USED = .false.
619 multi_fvm%NS_DIFF = .false.
620C
621 ksh4tree =4
622 ksh3tree =4
623 kpadmesh =2
624 kcontact =0
625 kipadmesh=1
626C
627 sizfield = 13
628 sizloadp = 13
629c constant for access in tab IBUFSSG_IO, use in engine
630 nibsph = 4
631C
632 llaccelm = 25
633 llgauge = 37
634C
635 ale%GLOBAL%I_DT_NODA_ALE_ON = 0 ! by default DT NODA * options are no longer available for ALE grid points.
636C
637 inp = istdi
638 flag_key_m = 0
639 flag_key_l = 0
640 flag_key_t = 0
641C------------------------------------------------------------------
642 IF( got_inspire_alm == 1)THEN
643 err_msg='SOLVER'
644 ELSE
645 err_msg='RADIOSS STARTER'
646 ENDIF
647 CALL trace_in1(err_msg,len_trim(err_msg))
648 err_msg='GLOBAL UNITS'
649 err_category='GLOBAL UNITS'
650 CALL trace_in1(err_msg,len_trim(err_msg))
651C-------------------------------------------------
652 CALL trace_out1()
653C-------------------------------------------------
654 CALL inicod
655C-------------------------------------------------------------------
656C Runnumber is taken from input name or previous treatments
657C-------------------------------------------------------------------
658 irun = runn
659 CALL trace_in1(err_msg,len_trim(err_msg))
660 ALLOCATE(lsubmodel(1))
661 IF(ALLOCATED(lsubmodel)) DEALLOCATE(lsubmodel)
662
663C------------------------------------------------
664C Build model in memory (Radioss format)
665C------------------------------------------------
666 IF (got_input == 1 .AND. is_dyna == 0)THEN
667C
668 CALL startime(16,1)
669 status_cwd = getcwd(cwd)
670 len_cwd = len_trim(cwd)
671 global_path = trim(path)
672c
673 CALL cpp_build_model_inc(fname,lfname,edi_res,nb_dyna_include,global_path,len_trim(global_path) )
674c
675 IF(nb_dyna_include .NE. 0) THEN
676 dyna_message=1
677 CLOSE(iout)
678 CALL cpp_print_dyna(filnam,rootlen+9+outfile_name_len)
679 OPEN(unit=iout,file=filnam(1:rootlen+9+outfile_name_len),
680 . access='SEQUENTIAL',form='FORMATTED',status='UNKNOWN',position="APPEND")
681 WRITE(iout,'(A)')''
682 WRITE(iout,'(A)')''
683 WRITE(iout,'(A)')'************************************************************************'
684 WRITE(iout,'(A)')'* RADIOSS STARTER PROCESS'
685 WRITE(iout,'(A)')'************************************************************************'
686 ENDIF
687 CALL stoptime(16,1)
688 ENDIF
689C-------------------------------------------------------------------
690C Keyword mapping header output ( DYNA to RADIOSS)
691C-------------------------------------------------------------------
692 IF (is_dyna == 1) THEN
693 dyna_message=1
694 CLOSE(iout)
695 CALL cpp_print_dyna(filnam,rootlen+9+outfile_name_len)
696 OPEN(unit=iout,file=filnam(1:rootlen+9+outfile_name_len),
697 . access='SEQUENTIAL',form='FORMATTED',status='UNKNOWN',position="APPEND")
698 WRITE(iout,'(A)')''
699 WRITE(iout,'(A)')''
700 WRITE(iout,'(A)')'************************************************************************'
701 WRITE(iout,'(A)')'* RADIOSS STARTER PROCESS'
702 WRITE(iout,'(A)')'************************************************************************'
703 ENDIF
704C------------------------------------------------
705C Output errors/warning message (input reading phase)
706C------------------------------------------------
707 IF (got_input == 1) CALL hm_messages(is_dyna)
708C------------------------------------------------
709C Write list of replaced parameters
710C------------------------------------------------
711 IF(ipid /= 0 .AND. got_hstp_read == 0) THEN
712 CLOSE(iout)
713 CALL cpp_print_parameters(filnam,rootlen+9+outfile_name_len)
714 OPEN(unit=iout,file=filnam(1:rootlen+9+outfile_name_len),
715 . access='SEQUENTIAL',form='FORMATTED',status='UNKNOWN',position="APPEND")
716 ENDIF
717C------------------------------------------------
718C count submodels & dimension LSUBMODEL structure
719C------------------------------------------------
720 IF(ALLOCATED(lsubmodel)) DEALLOCATE(lsubmodel)
721 nsubmod = 0
722 ibid = 0
723 CALL cpp_submodel_count(nsubmod,ibid)
724 IF(nsubmod > 0)THEN
725 ALLOCATE (lsubmodel(nsubmod),stat=stat)
726 IF (stat /= 0) CALL ancmsg(msgid=268,anmode=aninfo,
727 . msgtype=msgerror,
728 . c1='LSUBMODEL')
729C------------------------------------------------
730C Build submodel hierarchy
731C------------------------------------------------
732 lsubmodel(1:nsubmod)%SKEW = 0
733 CALL hm_read_submodel(lsubmodel)
734 ELSE
735 ALLOCATE (lsubmodel(0),stat=stat)
736 IF (stat /= 0) CALL ancmsg(msgid=268,anmode=aninfo,
737 . msgtype=msgerror,
738 . c1='LSUBMODEL')
739 ENDIF
740C-------------------------------------------------------------------
741C Convert /INTER/TYPE19 in memory to /INTER/TYPE7 & /INTER/TYPE11
742C-------------------------------------------------------------------
743 CALL hm_get_max_id('/INTER',idmax_inter,lsubmodel)
744 CALL hm_get_max_id('/GRNOD',idmax_grnod,lsubmodel)
745 CALL hm_get_max_id('/LINE',idmax_line,lsubmodel)
746 CALL hm_convert_inter_type19(idmax_inter,idmax_grnod,idmax_line,lsubmodel)
747C-------------------------------------------------------------------
748C Convert /FAIL/TAB in memory to /FAIL/TAB1 & /TABLE
749C-------------------------------------------------------------------
750 CALL hm_get_max_id('/TABLE',idmax_table,lsubmodel)
751 CALL hm_get_max_id('/FUNCT',idmax_funct,lsubmodel)
752 CALL hm_get_max_id('/FAIL',idmax_fail,lsubmodel)
753 IF (is_dyna == 0) CALL hm_convert_fail_tab(max(idmax_funct,idmax_table),idmax_fail,lsubmodel)
754C-------------------------------------------------------------------
755C Convert /SHELL & /MAT/LAW119 to /SPRING /PART /PROP/TYPE23 & /MAT/LAW114
756C Convert /TH & /SECT making reference to springs translated from shells
757C-------------------------------------------------------------------
758c Count number of translated shell elements
759 nb_seatbelt_shells = 0
760 CALL hm_count_2d_element_seatbelt(nb_seatbelt_shells,lsubmodel)
761 ALLOCATE (seatbelt_converted_elements(3,nb_seatbelt_shells),stat=stat)
762 seatbelt_converted_elements(1:3,1:nb_seatbelt_shells) = 0
763 IF (stat /= 0) CALL ancmsg(msgid=268,anmode=aninfo,
764 . msgtype=msgerror,
765 . c1='SEATBELT_CONVERTED_ELEMENTS')
766c Get max ids in the input deck
767 idmax_part = 0
768 idmax_prop = 0
769 idmax_mat = 0
770 idmax_elem = 0
771 idmax_th = 0
772 CALL hm_get_max_id('/PART',idmax_part,lsubmodel)
773 CALL hm_get_max_id('/PROP',idmax_prop,lsubmodel)
774 CALL hm_get_max_id('/MAT',idmax_mat,lsubmodel)
775 CALL hm_get_max_id('/SPRING',idmax_elem,lsubmodel)
776 CALL hm_get_max_id('/TH',idmax_th,lsubmodel)
777c 2d seatbelt translation
778 IF (nb_seatbelt_shells > 0)
779 . CALL hm_convert_2d_elements_seatbelt(idmax_part,idmax_prop,idmax_mat,idmax_elem,idmax_th,
780 . seatbelt_converted_elements,nb_seatbelt_shells,lsubmodel)
781C------------------------------------------------------------------
782 ! Initialisation of glob_therm module
783C------------------------------------------------------------------
784 call glob_therm_init(glob_therm)
785C-------------------------------------------------------------------
786C Control variables (count options)
787C-------------------------------------------------------------------
788 CALL contrl(multi_fvm,lsubmodel,is_dyna,detonators,user_windows,mat_elem,
789 . names_and_titles,lipart1,defaults,glob_therm,pblast,output)
790C-------------------------------------------------------------------
791C Parameters modification and parameters write (-HSTP_READ -HSTP_WRITE ARGUMENTS)
792C-------------------------------------------------------------------
793#ifdef DNC
794 IF (got_hstp_read == 1 .OR. got_hstp_write == 1) THEN
795 CALL hstp(rootn,rootlen,lsubmodel,startdate,starttime,filnam,outfile_name_len)
796 ENDIF
797#endif
798C-----------------------------------------------------
799 CALL trace_out1()
800C-----------------------------------------------------
801c stop CPU timer for interval between translator and lectur
802c (freeform)
803 CALL stoptime(4,1)
804
805 IF(irun==0)THEN
806C--------------------------------------------------
807C Initial run
808C--------------------------------------------------
809 iresmd=0
810C
811 invstr=invers
812 err_msg='DECK READING'
813 err_category='DECK READING'
814 CALL trace_in1(err_msg,len_trim(err_msg))
815
816c----------- Child process creation for multidomains-----
817 IF (nsubdom>0) THEN
818 CALL r2r_fork(chrun,filnam,lsubmodel)
819 ENDIF
820
821c start CPU timer for lectur
822 CALL startime(2,1)
823C--------------------------------------------------
824C Checksum option
825C--------------------------------------------------
826 call hm_read_checksum(leni,input,lenp,path,output)
827C--------------------------------------------------
828C Main reading routine
829C--------------------------------------------------
830 CALL lectur(
831 . multi_fvm ,lsubmodel ,is_dyna ,detonators ,ebcs_tab,
832 . seatbelt_converted_elements ,nb_seatbelt_shells,nb_dyna_include ,user_windows ,output ,
833 . mat_elem,names_and_titles,defaults,glob_therm,pblast,sensor_user_struct)
834
835c stop CPU timer for lectur
836 CALL stoptime(2,1)
837
838 IF (ipid/=0) CLOSE(iin2)
839 CALL trace_out1()
840
841 ELSE
842C--------------------------------------------------
843C Modification run (deprecated)
844C --------------------------------------------------
845
846 CALL ancmsg(msgid=1621,
847 . msgtype=msgerror,
848 . anmode=anstop)
849
850 ENDIF
851C
852 IF(ALLOCATED(seatbelt_converted_elements)) DEALLOCATE(seatbelt_converted_elements)
853 CALL user_windows_clean(user_windows)
854 CALL th_clean(output%TH)
855C
856 IF (ierr==0)THEN
857 ! -----------------------------
858 ! write the message only if restart
859 ! files are generated
860 IF(restart_file==1) THEN
861 WRITE(chrunr,'(I4.4)')irun
862 filnam=rootnam(1:rootlen)//'_'//chrunr
863 WRITE (iout,80) filnam(1:rootlen+5)
864 80 FORMAT (/4x,14h restart files:,1x,a,8h written/
865 . 4x,14h -------------/)
866 END IF
867 ! -----------------------------
868 ELSE
869 WRITE(iout,'(A)')titre(47)
870 ENDIF
871c print timers
872 CALL printime(1,got_timer,startdate,starttime,enddate,endtime)
873C
874 IF (ipid/=0) THEN
875#if CPP_mach == CPP_w95 || CPP_mach == CPP_win64_spmd || CPP_mach == CPP_p4win64_spmd || CPP_mach == CPP_wnt || CPP_mach == CPP_wmr || CPP_mach == CPP_p4win64 || CPP_mach == CPP_p4win32
876 CLOSE(unit=istdi, status='DELETE', iostat=io_err)
877#else
878 CLOSE(unit=istdi, status='DELETE', iostat=io_err)
879#endif
880 IF (io_err /= 0) THEN
881 WRITE(6,*)' '
882 WRITE(6,*)'*** ERROR CLOSING TEMPORARY INPUT FILE'
883 ENDIF
884
885 CALL cpp_delete_model()
886 ENDIF
887C
888 CALL trace_out1()
889
890 CALL f_anend(out_file_name,len_trim(out_file_name),rootnam,
891 * rootlen,enddate,endtime,output)
892C---
893 print*,'done'
894 RETURN
895C---
896 END
subroutine f_anend(filename, len_filename, rootname, rootlen, enddate, endtime, output)
subroutine contrl(multi_fvm, lsubmodel, is_dyna, detonators, user_windows, mat_elem, names_and_titles, lipart1, defaults, glob_therm, pblast, output)
Definition contrl.F:83
#define my_real
Definition cppsort.cpp:32
subroutine hm_convert_2d_elements_seatbelt(idmax_part, idmax_prop, idmax_mat, idmax_elem, idmax_th, seatbelt_converted_elements, nb_seatbelt_shells, lsubmodel)
subroutine hm_convert_fail_tab(table_maxid, fail_maxid, lsubmodel)
subroutine hm_convert_inter_type19(idmax_inter, idmax_grnod, idmax_line, lsubmodel)
subroutine hm_count_2d_element_seatbelt(nb_shells, lsubmodel)
subroutine hm_get_max_id(name, idmax, lsubmodel)
subroutine hm_messages(is_dyna)
Definition hm_messages.F:34
subroutine hm_read_submodel(lsubmodel)
#define max(a, b)
Definition macros.h:21
type(ale_) ale
Definition ale_mod.F:249
type(alefvm_param_), target alefvm_param
Definition alefvm_mod.F:121
type(alemuscl_param_) alemuscl_param
integer restart_file
Definition check_mod.F:52
integer outfile_name_len
integer, parameter nchartitle
subroutine names_and_title_init(names_and_titles)
integer nsubmod
integer th_has_noda_pext
Definition th_mod.F:121
subroutine user_windows_clean(user_window)
subroutine r2r_fork(chrun, filnam, lsubmodel)
Definition r2r_fork.F:41
subroutine starter0
Definition starter0.F:79
subroutine ancmsg(msgid, msgtype, anmode, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, r1, r2, r3, r4, r5, r6, r7, r8, r9, c1, c2, c3, c4, c5, c6, c7, c8, c9, prmode)
Definition message.F:889
subroutine execargcheck(output)
subroutine lectur(multi_fvm, lsubmodel, is_dyna, detonators, ebcs_tab, seatbelt_converted_elements, nb_seatbelt_shells, nb_dyna_include, user_windows, output, mat_elem, names_and_titles, defaults, glob_therm, pblast, sensor_user_struct)
Definition lectur.F:533
subroutine radioss_title(iout, cpunam, archtitle, filnam, rootlen, chrun, iresp, iflag)
subroutine iniconstant
Definition iniconstant.F:29
subroutine startime(event, itask)
Definition timer.F:93
subroutine printime(itask, got_timer, startdate, starttime, enddate, endtime)
Definition timer.F:184
subroutine initime()
Definition timer.F:30
subroutine stoptime(event, itask)
Definition timer.F:135
subroutine trace_in1(my_char, ilen)
Definition trace_back.F:37
subroutine trace_out1()
Definition trace_back.F:364
subroutine inicod
Definition inicod.F:31
program starter
Definition starter.F:39
subroutine titre1
Definition titre1.F:34