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 or 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=52
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 + 1
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 + 1
599 SEGINDX=0
600 NHIN2 =0
601 NIFV = 16
602 ALE%GLOBAL%NALENOVS = 6
603 NLEDGE = 15
604 NRTRANS = 23
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.AND. IF (GOT_INPUT == 1 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.NE. IF(NB_DYNA_INCLUDE 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.AND. IF(IPID /= 0 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.OR. IF (GOT_HSTP_READ == 1 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,CHECK_USED)
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
#define my_real
Definition cppsort.cpp:32
type(alefvm_param_), target alefvm_param
Definition alefvm_mod.F:121
type(alemuscl_param_) alemuscl_param
subroutine names_and_title_init(names_and_titles)
integer th_has_noda_pext
Definition th_mod.F:121
program radioss
Definition radioss.F:34
subroutine starter0
Definition starter0.F:79
subroutine execargcheck(output)
subroutine radioss_title(iout, cpunam, archtitle, filnam, rootlen, chrun, iresp, iflag)
subroutine iniconstant
Definition iniconstant.F:29
subroutine initime()
Definition timer.F:30
void setignorecore(int *on)
program starter
Definition starter.F:39