OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
freform.F File Reference
#include "implicit_f.inc"
#include "task_c.inc"
#include "units_c.inc"
#include "warn_c.inc"
#include "scr02_c.inc"
#include "scr03_c.inc"
#include "scr05_c.inc"
#include "scr06_c.inc"
#include "scr07_c.inc"
#include "scr17_c.inc"
#include "scr18_c.inc"
#include "stati_c.inc"
#include "statr_c.inc"
#include "cong1_c.inc"
#include "cong2_c.inc"
#include "chara_c.inc"
#include "scrfs_c.inc"
#include "parit_c.inc"
#include "couple_c.inc"
#include "rad2r_c.inc"
#include "timeri_c.inc"
#include "com01_c.inc"
#include "com04_c.inc"
#include "com08_c.inc"
#include "check.inc"
#include "scr19_c.inc"
#include "ddspmd_c.inc"
#include "sms_c.inc"

Go to the source code of this file.

Functions/Subroutines

subroutine freform (irunn, irfl, irfe, h3d_data, flag_cst_ams, dynain_data, sensors, dt, output, glob_therm)
integer function ngr2usr (iu, igrnod, ngrnod)
subroutine fretitl (titr, iasc, l)
subroutine fretitl2 (titr, iasc, l)
subroutine fretitlr (titr, asc, l)
subroutine fretitl2r (titr, asc, l)

Function/Subroutine Documentation

◆ freform()

subroutine freform ( integer irunn,
integer irfl,
integer irfe,
type(h3d_database), intent(inout) h3d_data,
integer flag_cst_ams,
type (dynain_database), intent(inout) dynain_data,
type (sensors_), intent(inout) sensors,
type (dt_), intent(inout) dt,
type(output_), intent(inout) output,
type (glob_therm_), intent(inout) glob_therm )
Parameters
[in,out]outputoutput structure

Definition at line 86 of file freform.F.

88C-----------------------------------------------
89C D e s c r i p t i o n
90C-----------------------------------------------
91C This subroutine is Engine reader.
92C It reads all Engine options from user input file
93C-----------------------------------------------
94C M o d u l e s
95C-----------------------------------------------
96 USE message_mod
97 USE h3d_mod
98 USE metric_mod
99 USE check_mod
100 USE fvbag_mod
101 USE th_mod
102 USE state_mod
104 USE ale_mod
105 USE sensor_mod
106 USE dt_mod
107 USE output_mod
109 use glob_therm_mod
110 USE viper_mod
111C-----------------------------------------------
112C I m p l i c i t T y p e s
113C-----------------------------------------------
114#include "implicit_f.inc"
115C-----------------------------------------------
116C D u m m y A r g u m e n t s
117C-----------------------------------------------
118 INTEGER IRUNN, IRFL, IRFE, FLAG_CST_AMS
119 TYPE(H3D_DATABASE), INTENT(INOUT) :: H3D_DATA
120 TYPE (DYNAIN_DATABASE), INTENT(INOUT) :: DYNAIN_DATA
121 TYPE (SENSORS_), INTENT(INOUT) :: SENSORS
122 TYPE (DT_), INTENT(INOUT) :: DT
123 TYPE(OUTPUT_), INTENT(INOUT) :: OUTPUT !< output structure
124 type (glob_therm_) ,intent(inout) :: glob_therm
125C-----------------------------------------------
126C C o m m o n B l o c k s
127C-----------------------------------------------
128#include "task_c.inc"
129#include "units_c.inc"
130#include "warn_c.inc"
131#include "scr02_c.inc"
132#include "scr03_c.inc"
133#include "scr05_c.inc"
134#include "scr06_c.inc"
135#include "scr07_c.inc"
136#include "scr17_c.inc"
137#include "scr18_c.inc"
138#include "stati_c.inc"
139#include "statr_c.inc"
140#include "cong1_c.inc"
141#include "cong2_c.inc"
142#include "chara_c.inc"
143#include "scrfs_c.inc"
144#include "parit_c.inc"
145#include "couple_c.inc"
146#include "rad2r_c.inc"
147#include "timeri_c.inc"
148#include "com01_c.inc"
149#include "com04_c.inc"
150#include "com08_c.inc"
151#include "check.inc"
152#include "scr19_c.inc"
153#include "ddspmd_c.inc"
154#include "sms_c.inc"
155C-----------------------------------------------
156C L o c a l P a r a m e t e r s
157C-----------------------------------------------
158 INTEGER NKEY, NUM_ALE_KEY2
159 PARAMETER (NKEY = 93)
160 PARAMETER (NUM_ALE_KEY2 = 25)
161C-----------------------------------------------
162C L o c a l V a r i a b l e s
163C-----------------------------------------------
164 INTEGER IKAD(0:NKEY+1),
165 . KDTIX, KIMPL, KFLSEC, KFUNC, KKEREL, KDYREL, KRUN, KTITLE,
166 . KDT, KTFILE, KPRINT, KRFILE, KVERS, KALE, KDEL,
167 . KVEL, KBCS, KBCSR, KDEBUG,KOUTP,KALESUB,KPROC,
168 . KNOISE,KDELIN,KPARIT,KINIV,KRBODY,KANIM,KINTER,
169 . KUPWM, KMON,KDT1,KINCMP,KTH, KSTOP, KKILL,
170 . KMADYM,KSPMD,KRAD2R,KDAMP,N_DAMP, KATFIL,KBTFIL,KCTFIL,KDTFIL,
171 . KETFIL,KFTFIL,KGTFIL,KHTFIL,KITFIL, KRERUN, KFXINP,
172 . NFXINP,KEIG,NEIGOFF,NEOFF,KFVBAG,
173 . NFVMESH,KSTATF,KSHVER,KABF,KDTSDE,
174 . KAABF,KBABF,KCABF,KDABF,KEABF,KFABF,KGABF,KHABF,KIABF,NFVMODI,
175 . KUPWIND,KTHERMAL,KH3D,KREPORT,KNEGVOL,KADYREL,KDT1TET10,KPERF,
176 . KDYNAIN,KDTTSH,KMASS,KSENSOR,KVIPER
177 INTEGER
178 . IKEY,I,II,I1,J,J1,J2,K,KK,M,N, NCT, IKOLD, NBC, K3, K4,
179 . NUBCS1,NUBCS2, IR,IDT,NELTGOF,IREC,
180 . IALE_GRID_FORM, NINTOF, NELSOF, NDEL, NOF,ITTYP, NCPRI0,NCPRI_HEAD0,
181 . NELQOF, NELCOF, NELTOF, NELPOF, NELROF, NUM_BCS, NINTCH,
182 . NRBYNF, NBCS1, NBCS2, NRBYON, NRBYOF, NINIV,NINIVT,
183 . INTCH_IFOP,IUSC_TMP,INTCH_ITOP,NBTOPFOP,KONOFF,NINTNOF,NINTSOF,
184 . NSPHOF,NALEOF,NEULEROF,NTHERMOF, IDTGRX,ibid, M1, M2, IFORM,
185 . GR_ID, NLINKOFF,IS_PREVKEYA_NCHARKEY,IS_KEYA_NCHARKEY, IFLAG,
186 . DT_CTRL_COMPATIBILITY(3), LOWMACH_OPT,IO_ERR, NITERP, IOK_READ,
187 . ID_BAG, IERR1, ID_DT_OPTION, FVMBAG_L_TYPE, INUM,INTDT,NBSENS,
188 . NUM_ALE_GRID,NPARTOF
189 INTEGER :: BCS_SK_FR(10000),VEL_SK_FR(10000),NSLASH(NKEY)
190 INTEGER :: NBALEOFF, NBALEON, NBPARTALEON, NBPARTALEOFF
191 my_real
192 . TSTOP0,DTFAC0, DTMIN0, ALP, GAM,
193 . A1, A2, A3, VM, DTFACA,DTMINA, vt, TMP,DTFAC_AMS,
194 . LAMBDA,L_TYPE
195 CHARACTER KEY(9)*5, TITLE*81, KEY1*5, KEY2*5,KEY3*5, CH4*4, KEY4*5, KEY5*5, StringALE*32
196 CHARACTER(LEN=NCHARLINE100) :: KEYA
197 CHARACTER(LEN=NCHARLINE100) :: CARTE,KEYW,MOT1,LINE
198 CHARACTER(LEN=NCHARKEY), DIMENSION(9) :: KEY_H3D
199 CHARACTER(LEN=5), DIMENSION(NKEY) :: KEY0
200 CHARACTER(LEN=5), DIMENSION(NUM_ALE_KEY2) :: KEYALE
201 CHARACTER(len=NCHARLINE100) :: STRING_RESTART
202 LOGICAL :: lFOUND
203 REAL(KIND=8) :: DTHIS0
204 REAL(KIND=8), DIMENSION(9) :: DTHIS01
205C-----------------------------------------------
206 INTEGER LEN_IUSC1_FN,LEN_IUSC2_FN,LEN_IUSCTMP_FN
207 CHARACTER(LEN=10192) :: IUSC1_FN,IUSC2_FN,IUSCTMP_FN
208C-----------------------------------------------
209C E x t e r n a l F u n c t i o n s
210C-----------------------------------------------
211 INTEGER,EXTERNAL :: NVAR
212C-----------------------------------------------
213 DATA KEY0/
214 . 'RUN ' ,'TITLE' ,'DT ' ,'TFILE' ,'PRINT' ,
215 . 'RFILE' ,'VERS ' ,'' ,'' ,'ALE ' ,
216 . 'DEL ' ,'VEL ' ,'BCS ' ,'BCSR ' ,'INTER' ,
217 . 'DTIX ' ,'IMPL ' ,'FUNCT' ,'FLSEC' ,'DYREL' ,
218 . 'KEREL' ,'RBODY' ,'ANIM' ,'' ,'DEBUG' ,
219 . 'OUTP ' ,'' ,'ALESU' ,'PROC' ,'' ,
220 . '@TFIL' ,'DELIN' ,'' ,'PARIT' ,'INIV ' ,
221 . 'UPWM ' ,'MON' ,'' ,'DT1' ,'INCMP' ,
222 . '' ,'TH' ,'STOP' ,'KILL' ,'MADYM' ,
223 . 'SPMD ' ,'RAD2R' ,'DAMP' ,'ATFIL' ,'BTFIL' ,
224 . 'CTFIL' ,'DTFIL' ,'ETFIL' ,'FTFIL' ,'GTFIL' ,
225 . 'HTFIL' ,'ITFIL' ,'RERUN' ,'' ,'FXINP' ,
226 . '' ,'' ,'EIG' ,'' ,'FVMBA' ,
227 . '' ,'STATE' ,'SHVER' ,'' ,'ABF' ,
228 . 'DTSDE' ,'AABF' ,'BABF' ,'CABF' ,'DABF' ,
229 . 'EABF ' ,'FABF' ,'GABF' ,'HABF' ,'IABF' ,
230 . 'UPWIN' ,'THERM' ,'H3D' ,'REPOR' ,'NEGVO' ,
231 . 'ADYRE' ,'DT1TE' ,'PERF' ,'DYNAI' ,'DTTSH' ,
232 . 'MASS ' ,'SENS ' ,'VIPER' /
233
234 DATA KRUN/1/ ,KTITLE/2/ ,KDT/3/ ,KTFILE/4/ ,KPRINT/5/ ,
235 . KRFILE/6/ ,KVERS/7/ , KALE/10/ ,
236 . KDEL/11/ ,KVEL/12/ ,KBCS/13/ ,KBCSR/14/ ,KINTER/15/ ,
237 . KDTIX/16/ ,KIMPL/17/ ,KFUNC/18/ ,KFLSEC/19/ ,KDYREL/20/ ,
238 . KKEREL/21/ ,KRBODY/22/ ,KANIM/23/ ,KDEBUG/25/ ,
239 . KOUTP/26/ , KALESUB/28/ ,KPROC/29/ ,
240 . KNOISE/31/ ,KDELIN/32/ , KPARIT/34/ ,KINIV/35/ ,
241 . KUPWM/36/ ,KMON/37/ , KDT1/39/ ,KINCMP/40/ ,
242 . KTH/42/ ,KSTOP/43/ ,KKILL/44/ ,KMADYM/45/ ,
243 . KSPMD/46/ ,KRAD2R/47/ ,KDAMP/48/ ,KATFIL/49/ ,KBTFIL/50/ ,
244 . KCTFIL/51/ ,KDTFIL/52/ ,KETFIL/53/ ,KFTFIL/54/ ,KGTFIL/55/ ,
245 . KHTFIL/56/ ,KITFIL/57/ ,KRERUN/58/ ,KFXINP/60/,
246 . KEIG/63/ , KFVBAG/65/ ,
247 . KSTATF/67/ ,KSHVER/68/ ,KABF/70/ ,
248 . KDTSDE/71/ ,KAABF/72/ ,KBABF/73/ ,KCABF/74/ ,KDABF/75/ ,
249 . KEABF/76/ ,KFABF/77/ ,KGABF/78/ ,KHABF/79/ ,KIABF/80/ ,
250 . KUPWIND/81/,KTHERMAL/82/ ,KH3D/83/ ,KREPORT/84/ ,KNEGVOL/85/,
251 . KADYREL/86/,KDT1TET10/87/,KPERF/88/ ,KDYNAIN/89/ ,KDTTSH/90/ ,
252 . KMASS/91/ ,KSENSOR/92/ ,KVIPER/93/
253
254 DATA KEYALE/
255 . 'BCS ' ,'CLOSE' ,'GRID ' ,'LINK ' ,'MAT ' ,
256 . 'ON ' ,'OFF ' ,'MUSCL' ,'SOLVE' ,'ZERO ' ,
257 . 'DONEA' ,'STAND' ,'SPRIN' ,'DISP ' ,'SUPG ' ,
258 . '0 ' ,'1 ' ,'2 ' ,'3 ' ,'4 ' ,
259 . 'LOWMA' ,'LAPLA' ,'VOLUM' ,'FLOW-' ,'LAGRA'/
260
261C-----------------------------------------------
262C S o u r c e L i n e s
263C-----------------------------------------------
264 KEY=" "
265 KEY2=" "
266 KEY3=" "
267 KEY4=" "
268
269 CALL OPEN_F_SCRATCH_FILE(IUSC1,2,ROOTN,LENROOTN,IUSC1_FN)
270 LEN_IUSC1_FN=LEN_TRIM(IUSC1_FN)
271
272 CALL OPEN_F_SCRATCH_FILE(IUSC2,1,ROOTN,LENROOTN,IUSC2_FN)
273 LEN_IUSC2_FN=LEN_TRIM(IUSC2_FN)
274
275C warning IBM/MPI does not support REWIND with STDIN !
276 IUSC_TMP=60
277 CALL OPEN_F_SCRATCH_FILE(IUSC_TMP,1,ROOTN,LENROOTN,IUSCTMP_FN)
278 LEN_IUSCTMP_FN=LEN_TRIM(IUSCTMP_FN)
279C
280 ROOTNAM=' '
281 ROOTLEN = 0
282 IERR=0
283 NCT=0
284 J1 = 0
285 J2 = 0
286 NBC = 0
287 IKAD(0:NKEY+1)=0
288 NSLASH(1:NKEY) = 0
289 IKEY = 0
290
291 DTFACA = EP30
292 DTMINA = EP30
293 LAMBDA = ZERO
294 L_TYPE = ZERO
295 ID_BAG = 0
296
297 PERCENT_ADDMASS = ZERO
298 DT_STOP_PERCENT_ADDMASS = ZERO
299 IDT_PERCENT_ADDMASS = 0
300
301 TH_TITLES = 0
302c
303 IERR1=0
304.NOT. IF(ALLOCATED(FVMBAG_INPUT_OPTIONS)) ALLOCATE(FVMBAG_INPUT_OPTIONS(8192),STAT=IERR1)
305 IF (IERR1/=0) GOTO 1000
306 DO II=1,8192
307 FVMBAG_INPUT_OPTIONS(II)%LAMBDA = ZERO
308 FVMBAG_INPUT_OPTIONS(II)%ID_BAG = 0
309 FVMBAG_INPUT_OPTIONS(II)%L_type = 0
310 FVMBAG_INPUT_OPTIONS(II)%ID_DT_OPTION = -1
311 ENDDO
312 NUM_OPT_DT_FVMBAG = 0
313 NUM_OPT_DT_FVMBAG_0 = 0
314 NUM_OPT_DT_FVMBAG_1 = 0
315 NUM_OPT_DT_FVMBAG_2 = 0
316 NUM_OPT_DT_FVMBAG_3 = 0
317C
318C DT_CTRL_COMPATIBILITY(1) = 1 -> if /DT/NODA/CST is present
319C DT_CTRL_COMPATIBILITY(2) = 1 -> if /DT/AMS is present
320C DT_CTRL_COMPATIBILITY(3) = 1 -> if /DT/CST_AMS is present
321 DT_CTRL_COMPATIBILITY = 0
322
323 !ALE TIME STEP
324 ALE%GLOBAL%IDT_ALE = 0
325C FLAG for Hybrid CST + AMS
326 FLAG_CST_AMS = 0
327
328C---------------------------------------------------
329C ENUMERATION OF CARDS BY OPTION
330C---------------------------------------------------
331 10 READ(ISTDI,'(A)',END=20) KEYA(1:NCHARLINE100)
332 WRITE(IUSC_TMP,'(A)') KEYA(1:NCHARLINE100)
333 IF(KEYA(1:4)=='/END')GOTO 20
334 NCT=NCT+1
335 IF(KEYA(1:1)=='#')GOTO 10
336 IF(KEYA(1:1)=='$')GOTO 10
337 IF(KEYA==' ') GOTO 10
338 IF(KEYA(1:1)=='/') CALL REDKEY0(KEY0,NKEY,KEYA,IKEY,NSLASH)
339 IF(IKEY==0) GOTO 10
340 IKAD(IKEY)=IKAD(IKEY)+1
341.AND. IF(KEYA(1:4)=='/BCS' KEYA(1:5)/='/BCSR') THEN
342 I=2
343 J1 = J1 +1
344.AND. DO WHILE(KEYA(I:I)/='/'I<LEN_TRIM(KEYA))
345 I=I+1
346 ENDDO
347 I=I+1
348.AND. DO WHILE(KEYA(I:I)/='/'I<LEN_TRIM(KEYA))
349 I=I+1
350 ENDDO
351 I=I+1
352.AND. DO WHILE(KEYA(I:I)/='/'I<LEN_TRIM(KEYA))
353 I=I+1
354 ENDDO
355 I=I+1
356 I1=I
357 IF (J1>1000) THEN
358 CALL ANCMSG(MSGID=74,ANMODE=ANINFO,C1=KEYA(1:I1-1),C2='/BCS OR /BCSR')
359 CALL ARRET(2)
360 END IF
361 IF(I < LEN_TRIM(KEYA)) THEN
362.AND. DO WHILE(KEYA(I1:I1)/='/'I1<LEN_TRIM(KEYA))
363 I1=I1+1
364 ENDDO
365 MOT1=KEYA(I:I1)
366 READ(MOT1,FMT='(I10)')BCS_SK_FR(J1)
367 ELSE
368 BCS_SK_FR(J1) = 0
369 ENDIF
370 ENDIF
371C---
372 IF(KEYA(1:4)=='/VEL') THEN
373 I=2
374 J2 = J2 +1
375.AND. DO WHILE(KEYA(I:I)/='/'I<LEN_TRIM(KEYA))
376 I=I+1
377 ENDDO
378 I=I+1
379.AND. DO WHILE(KEYA(I:I)/='/'I<LEN_TRIM(KEYA))
380 I=I+1
381 ENDDO
382 I=I+1
383.AND. DO WHILE(KEYA(I:I)/='/'I<LEN_TRIM(KEYA))
384 I=I+1
385 ENDDO
386 I=I+1
387 I1=I
388 IF (J2>1000) THEN
389 CALL ANCMSG(MSGID=74,ANMODE=ANINFO,C1=KEYA(1:I1-1),C2='/VEL')
390 CALL ARRET(2)
391 END IF
392 IF(I < LEN_TRIM(KEYA)) THEN
393.AND. DO WHILE(KEYA(I1:I1)/='/'I1<LEN_TRIM(KEYA))
394 I1=I1+1
395 ENDDO
396 IF(KEYA(I1:I1)=='/')I1=I1-1 !set position to the first character before '/'
397 MOT1=KEYA(I:I1)
398 READ(MOT1,FMT='(I10)')VEL_SK_FR(J2)
399 ELSE
400 VEL_SK_FR(J2) = 0
401 ENDIF
402 ENDIF
403C---
404 GO TO 10
405 20 CONTINUE
406 ISTDI=IUSC_TMP
407 REWIND(ISTDI)
408C---------------------------------------------------
409C CURSORS INITIALIZATION
410C---------------------------------------------------
411 IKAD(0)=1
412 DO I=1,NKEY+1
413 IKAD(I)=IKAD(I)+IKAD(I-1)
414 ENDDO
415 DO I=NKEY+1,1,-1
416 IKAD(I)=IKAD(I-1)
417 ENDDO
418C---------------------------------------------------
419C KEYWORD CLASSIFYING / DIRECT ACCESS
420C---------------------------------------------------
421 IKOLD=0
422 IS_KEYA_NCHARKEY = 0
423 IS_PREVKEYA_NCHARKEY = 0
424 DO N=1,NCT
425 READ(ISTDI,'(A)') KEYA
426 IF(KEYA(1:1)=='#')CYCLE
427 IF(KEYA(1:1)=='$')CYCLE
428 IF(KEYA==' ') CYCLE
429 !---
430.OR..OR..OR..OR. IF(KEYA(1:4)=='/H3D' KEYA(1:6)=='/STATE' KEYA(1:7)=='/DYNAIN'KEYA(1:5)=='/ANIM'
431 . KEYA(1:5)=='/DAMP')THEN
432 IS_KEYA_NCHARKEY = 1
433 ELSE
434 IS_KEYA_NCHARKEY = 0
435 ENDIF
436 !---
437 IF(IS_KEYA_NCHARKEY == 1)THEN
438.AND. IF(IS_PREVKEYA_NCHARKEY == 1 IKOLD /=0)THEN
439 WRITE(IUSC1,REC=IKOLD,FMT='(A,I10)') KEYW,NBC
440 ELSEIF(IKOLD/=0)THEN
441 WRITE(IUSC1,REC=IKOLD,FMT='(17A,I10)')'/',(KEY(I),'/',I=1,8),NBC
442 ENDIF
443 KEYW = KEYA
444 IS_PREVKEYA_NCHARKEY = 1
445 CALL REDKEY1_H3D(KEY_H3D,KEY0,NKEY,KEYA,IKEY,IR)
446 IF(IR/=0) CYCLE
447 NBC=0
448 IKOLD=IKAD(IKEY)
449 ELSEIF(KEYA(1:1)=='/')THEN
450.AND. IF(IS_PREVKEYA_NCHARKEY == 1 IKOLD /=0)THEN
451 WRITE(IUSC1,REC=IKOLD,FMT='(A,I10)') KEYW,NBC
452 ELSEIF(IKOLD/=0)THEN
453 WRITE(IUSC1,REC=IKOLD,FMT='(17A,I10)')'/',(KEY(I),'/',I=1,8),NBC
454 ENDIF
455 IS_PREVKEYA_NCHARKEY = 0
456 CALL REDKEY1(KEY,KEY0,NKEY,KEYA,IKEY,IR)
457 IF(IR/=0) CYCLE
458 NBC=0
459 IKOLD=IKAD(IKEY)
460 ELSEIF( IS_PREVKEYA_NCHARKEY == 1) THEN
461 NBC=NBC+1
462 WRITE(IUSC1,REC=IKAD(IKEY),FMT='(A)')KEYA
463 ELSE
464 NBC=NBC+1
465 WRITE(IUSC1,REC=IKAD(IKEY),FMT='(A)')KEYA
466 ENDIF
467 IKAD(IKEY)=IKAD(IKEY)+1
468 ENDDO !next N
469c
470 IF( IS_PREVKEYA_NCHARKEY == 1) THEN
471 WRITE(IUSC1,REC=IKOLD,FMT='(A,I10)') KEYW,NBC
472 ELSE
473 WRITE(IUSC1,REC=IKOLD,FMT='(17A,I10)')'/',(KEY(I),'/',I=1,8),NBC
474 ENDIF
475C
476 DO I=NKEY+1,1,-1
477 IKAD(I)=IKAD(I-1)
478 ENDDO
479C---+----1----+----2----+----3----+----4----+----5----+----6----+----7--
480 CLOSE(UNIT=IUSC_TMP)
481 CALL DELETE_USER_FILE(IUSCTMP_FN,LEN_IUSCTMP_FN)
482 ISTDI = 5
483 IF (GOT_INPUT==1) THEN
484 ISTDI=80
485 CLOSE(UNIT=ISTDI, STATUS='DELETE', IOSTAT=IO_ERR)
486 ELSE
487 CLOSE (UNIT=ISTDI)
488 ENDIF
489C========================================================================
490C /RERUN/ROOTNAME/IRUN (RERUN OPTION)
491C---------------
492 IKEY = KRERUN
493 IRUNN = 1
494 MCHECK = 0
495 TSTOP0 = ZERO
496 IF(IKAD(IKEY)/=IKAD(IKEY+1))THEN
497 IRUNN=0
498 READ(IUSC1,REC=IKAD(IKEY),FMT='(7X,A4,2X,I5)',ERR=9990)CH4,IRUNN
499
500 IF (GOT_INPUT == 0)THEN
501C RUNN is -input run number,
502C if RUNN = 0 (common starter / engine input file) RUNN is set to 1 in Engine.
503 IF (RUNN==0 ) RUNN=1
504C IRUNN is the run number read from input.
505C If IRUNN was set in input and is different from -input run number,
506C than we print out a message.
507 IF (IRUNN /= 0)THEN
508 IF (IRUNN /= RUNN)THEN
509 WRITE(ISTDO,'(A,A)') ' ** WARNING ** : RUN NUMBER FOUND IN ','/RUN CARD FROM INPUT FILE'
510 WRITE(ISTDO,'(A)') ' RUN NUMBER IGNORED '
511 ENDIF
512 ENDIF
513 IRUNN = RUNN
514 ENDIF
515C
516 IF(ROOTLEN==0) THEN
517 CALL ANCMSG(MSGID=194,ANMODE=ANINFO)
518 IERR=IERR+1
519 ENDIF
520 IF(IRUNN<=0) THEN
521 CALL ANCMSG(MSGID=195,ANMODE=ANINFO)
522 IERR=IERR+1
523 IRUNN=1
524 ENDIF
525 MCHECK = 1
526 ENDIF
527c
528 IF (MCHECK == 0) THEN
529 SENSORS%NSTOP = 0
530 SENSORS%NOUTP = 0
531 SENSORS%NSTAT = 0
532 SENSORS%NANIM = 0
533 ALLOCATE (SENSORS%STOP_TMP(MX_SENS))
534 ALLOCATE (SENSORS%OUTP_TMP(MX_SENS))
535 ALLOCATE (SENSORS%STAT_TMP(MX_SENS))
536 ALLOCATE (SENSORS%ANIM_TMP(MX_SENS))
537 SENSORS%STOP_TMP(:) = 0
538 SENSORS%OUTP_TMP(:) = 0
539 SENSORS%STAT_TMP(:) = 0
540 SENSORS%ANIM_TMP(:) = 0
541 END IF
542C--------------------
543C INPUT VERSION
544C--------------------
545 INVERS=0
546 IKEY=KVERS
547 IF (GOT_INPUT/=0) THEN
548 INVERS=CODVERS
549 END IF
550 IF(IKAD(IKEY)/=IKAD(IKEY+1))THEN
551 READ(IUSC1,REC=IKAD(IKEY),FMT='(7X,I5)',ERR=9990)INVERS
552 ENDIF
553 IF (GOT_INPUT==0) THEN
554.AND. IF(INVERS<18MCHECK==0) THEN
555 CALL ANCMSG(MSGID=196,ANMODE=ANINFO)
556 IERR=IERR+1
557 ENDIF
558 END IF
559C--------------------
560C /PARIT
561C--------------------
562 IPARIT = -1
563 IKEY=KPARIT
564 IF(IKAD(IKEY)/=IKAD(IKEY+1))THEN
565 READ(IUSC1,REC=IKAD(IKEY),FMT='(7X,A,1X,I5)',ERR=9990)KEY2,K4
566 IF(KEY2=='OFF')THEN
567 IPARIT = 0
568 ELSEIF(KEY2=='ON')THEN
569 IPARIT = K4 + 1
570 ENDIF
571 ENDIF
572C--------------------
573C /DTIX
574C--------------------
575 NODADT=0
576 IKEY=KDTIX
577 IF(IKAD(IKEY)/=IKAD(IKEY+1))THEN
578 CALL WRIUSC2(IKAD(IKEY)+1,1,KEY0(IKEY))
579 READ(IUSC2,*,ERR=9990,END=9990)DTIN,DTMX
580 IF(DTMX < ZERO)THEN
581 CALL ANCMSG(MSGID=316,ANMODE=ANINFO,C1='/DTIX : PARAMETER DT_MAX MUST BE STRICTLY POSITIVE')
582 IERR=IERR+1
583 ENDIF
584 IF(DTMX == ZERO)DTMX=EP20
585 IF(DTMX /= EP20 )THEN
586 IF(DTIN > DTMX)THEN
587 CALL ANCMSG(MSGID=316,ANMODE=ANINFO,C1='/DTIX : PARAMETER DT_INI MUST BE LOWER THAN DT_MAX')
588 IERR=IERR+1
589 ENDIF
590 ENDIF
591 ELSE
592 DTIN=ZERO
593 DTMX=EP20
594 ENDIF
595C--------------------
596C /FLSEC
597C--------------------
598 NSFLSW=0
599 IKEY=KFLSEC
600 IF(IKAD(IKEY)/=IKAD(IKEY+1))THEN
601 K=0
602 110 READ(IUSC1,REC=IKAD(IKEY)+K,FMT='(49X,I10)',ERR=9990)NBC
603 K=K+NBC+1
604 NSFLSW=NSFLSW+1
605 IF(IKAD(IKEY)+K/=IKAD(IKEY+1))GO TO 110
606 ENDIF
607C--------------------
608C /FUNCT
609C--------------------
610 NFCT=0
611 IKEY=KFUNC
612 IF(IKAD(IKEY)/=IKAD(IKEY+1))THEN
613 K=0
614 140 READ(IUSC1,REC=IKAD(IKEY)+K,FMT='(49X,I10)',
615 . ERR=9990)NBC
616 K=K+NBC+1
617 NFCT=NFCT+1
618 IF(IKAD(IKEY)+K/=IKAD(IKEY+1))GO TO 140
619 ENDIF
620C-----------------------
621C //
622C-----------------------
623 IKEY=KPROC
624 IF(IKAD(IKEY)/=IKAD(IKEY+1))THEN
625 ENDIF
626C-----------------------
627C /KEREL (KINETIC ENERGY RELAXATION)
628C-----------------------
629 ISTAT = 0
630 ISTATG = 0
631 IKEY=KKEREL
632c------- add T_START,T_STOP
633 TST_START = ZERO
634 TST_STOP = ZERO
635 IF(IKAD(IKEY)/=IKAD(IKEY+1))THEN
636 READ(IUSC1,REC=IKAD(IKEY),FMT='(7X,I5)',ERR=9990)K4
637 CALL WRIUSC2(IKAD(IKEY)+1,1,KEY0(IKEY))
638 IF(K4==1)THEN
639 READ(IUSC2,*)ISTATG
640 CALL WRIUSC2(IKAD(IKEY)+2,1,KEY0(IKEY))
641 ENDIF
642 READ(IUSC2,*,ERR=310,END=320)TST_START ,TST_STOP
643 GOTO 320
644 310 READ(IUSC2,*,ERR=320,END=320)TST_START
645 320 CONTINUE
646 BETA = ZERO
647 PERIOD = ZERO
648 ISTAT=2
649 ENDIF
650C-----------------------
651C /DYREL (DYNAMIC RELAXATION)
652C-----------------------
653 IKEY=KDYREL
654 IF(IKAD(IKEY)/=IKAD(IKEY+1))THEN
655 IF(ISTAT==0)ISTAT=1
656 CALL WRIUSC2(IKAD(IKEY)+1,1,KEY0(IKEY))
657 READ(IUSC1,REC=IKAD(IKEY),FMT='(7X,I5)',ERR=9990)K4
658 IF(K4==1)THEN
659 READ(IUSC2,*)ISTATG
660 CALL WRIUSC2(IKAD(IKEY)+2,1,KEY0(IKEY))
661 ENDIF
662 READ(IUSC2,*)BETA,PERIOD
663 ENDIF
664 ISTATG = -IABS(ISTATG)
665 IF (BETA==ZERO) BETA=ONE
666 IF(PERIOD/=ZERO)THEN
667 BETATE = BETA / PERIOD
668 ELSE
669 BETATE = ZERO
670 ENDIF
671C-----------------------
672C /ADYREL (ADAPTATIVE DYNAMIC RELAXATION)
673C-----------------------
674 IKEY=KADYREL
675 IF(IKAD(IKEY)/=IKAD(IKEY+1))THEN
676 ISTATG = 0
677 FREQ_C =ZERO
678 TST_START = ZERO
679 TST_STOP = ZERO
680 READ(IUSC1,REC=IKAD(IKEY),FMT='(7X,A)',ERR=9990)KEY2
681 READ(IUSC1,REC=IKAD(IKEY),FMT='(49X,I10)',ERR=9990) NBC
682 IF (NBC > 0) THEN
683 READ(IUSC1,REC=IKAD(IKEY)+1,FMT='(A)',ERR=520)KEY3
684 CALL WRIUSC2(IKAD(IKEY)+1,1,KEY0(IKEY))
685 IF (KEY2=='FREQ_') THEN
686 READ(IUSC2,*)FREQ_C
687 READ(IUSC1,REC=IKAD(IKEY)+2,FMT='(A)',ERR=520)KEY2
688 CALL WRIUSC2(IKAD(IKEY)+2,1,KEY0(IKEY))
689 ELSE
690 READ(IUSC1,REC=IKAD(IKEY),FMT='(7X,I5)',ERR=9990)K4
691 IF(K4==1)THEN
692 READ(IUSC2,*)ISTATG
693 READ(IUSC1,REC=IKAD(IKEY)+2,FMT='(A)',ERR=520)KEY2
694 CALL WRIUSC2(IKAD(IKEY)+2,1,KEY0(IKEY))
695 ENDIF
696 END IF
697 READ(IUSC2,*,ERR=510,END=520)TST_START ,TST_STOP
698 GOTO 520
699 510 READ(IUSC2,*,ERR=520,END=520)TST_START
700 520 CONTINUE
701 ENDIF ! NBC
702 BETA=ONE
703 PERIOD = ZERO
704 BETATE = ZERO
705 ISTAT=3
706 ISTATG = -IABS(ISTATG)
707 ENDIF
708C-----------------------
709C /ALESUB (ALE SUB-CYCLING, OBSOLETE)
710C-----------------------
711 ALE%SUB%IALESUB = 0
712 IKEY=KALESUB
713 IF(IKAD(IKEY)/=IKAD(IKEY+1))THEN
714 ALE%SUB%IALESUB=2
715 CALL WRIUSC2(IKAD(IKEY)+1,1,KEY0(IKEY))
716 READ(IUSC1,REC=IKAD(IKEY),FMT='(7X,I5)',ERR=9990)K4
717 IF(K4==1)ALE%SUB%IALESUB=1
718 READ(IUSC2,*)ALE%SUB%DTFSUB,ALE%SUB%DTMSUB
719 ENDIF
720 IF(ALE%SUB%DTFSUB==ZERO)ALE%SUB%DTFSUB=ZEP9
721 IF (ALE%SUB%IALESUB==1) THEN
722 CALL ANCMSG(MSGID=197,ANMODE=ANINFO)
723 IERR=IERR+1
724 ENDIF
725
726C-----------------------
727C /STOP
728C-----------------------
729 ! Initialize SENSORS Write variables
730 SENSORS%STOP_NSANIM = 0
731 SENSORS%STOP_NSTH= 0
732 SENSORS%STOP_NSSTAT = 0
733 SENSORS%STOP_NSOUTP = 0
734 SENSORS%STOP_NSABF = 0
735 SENSORS%STOP_NSH3D = 0
736
737 IKEY=KSTOP
738c
739 IF (IKAD(IKEY)/=IKAD(IKEY+1))THEN
740 K=0
741 1150 READ(IUSC1,REC=IKAD(IKEY)+K,FMT='(7X,A,37X,I10)',ERR=9990)KEY2,NBC
742 K=K+1
743 IF (KEY2=='LSENS')THEN ! IF STOP BASED ON SENSOR ACTIVATION
744c First line
745 DO I=1,NBC-1
746 READ(IUSC1,REC=IKAD(IKEY)+K,FMT='(A)',ERR=9990)CARTE
747 CALL WRIUSC2(IKAD(IKEY)+K,1,KEY0(IKEY))
748 K = K + 1
749 READ(IUSC2,*,ERR=9990,END=9990) (SENSORS%STOP_TMP(N),N=1,NVAR(CARTE))
750 SENSORS%NSTOP = SENSORS%NSTOP + NVAR(CARTE)
751 ENDDO
752c Second line
753 IOK_READ = 0
754 CALL WRIUSC2(IKAD(IKEY)+K,1,KEY0(IKEY))
755 READ(IUSC2,*,ERR=148,END=148)SENSORS%STOP_NSANIM,SENSORS%STOP_NSTH,SENSORS%STOP_NSSTAT,
756 . SENSORS%STOP_NSOUTP,SENSORS%STOP_NSABF,SENSORS%STOP_NSH3D,NSDYNANIN
757 IOK_READ = 1
758c Ensure Backward compatibility : without NSH3D
759148 IF (IOK_READ == 0) THEN
760 CALL WRIUSC2(IKAD(IKEY)+K,1,KEY0(IKEY))
761 READ(IUSC2,*,ERR=9990,END=9990)SENSORS%STOP_NSANIM,SENSORS%STOP_NSTH,SENSORS%STOP_NSSTAT,
762 . SENSORS%STOP_NSOUTP,SENSORS%STOP_NSABF
763 ENDIF
764 K=K+1
765 ELSE
766 CALL WRIUSC2(IKAD(IKEY)+K,1,KEY0(IKEY))
767 READ(IUSC2,*,ERR=150,END=149)DEMXS,DMTMXS,DMNMXS,NTH,NANIM,NERR_POSIT
768 GOTO 151
769 149 CONTINUE
770 READ(IUSC2,*,ERR=150,END=150)DEMXS,DMTMXS,DMNMXS,NTH,NANIM
771 GOTO 151
772 150 CONTINUE
773 CALL WRIUSC2(IKAD(IKEY)+K,1,KEY0(IKEY))
774 READ(IUSC2,*)DEMXS,DMTMXS,DMNMXS
775 151 CONTINUE
776 K=K+NBC
777 ENDIF
778 IF(IKAD(IKEY)+K/=IKAD(IKEY+1))GO TO 1150
779 ENDIF
780 IF(DMTMXS==ZERO)DMTMXS=EP30
781 IF(DMNMXS==ZERO)DMNMXS=EP30
782 IF(DEMXS==ZERO) DEMXS =EP30
783
784C-----------------------
785C /KILL
786C-----------------------
787 IKEY=KKILL
788 IF(IKAD(IKEY)/=IKAD(IKEY+1))THEN
789 CALL WRIUSC2(IKAD(IKEY)+1,1,KEY0(IKEY))
790 READ(IUSC2,*,ERR=155,END=154)
791 . DEMXK,DMTMXK,DMNMXK,NTH,NANIM,NERR_POSIT
792 GOTO 156
793 154 CONTINUE
794 READ(IUSC2,*,ERR=155,END=155)DEMXK,DMTMXK,DMNMXK,NTH,NANIM
795 GOTO 156
796 155 CONTINUE
797 CALL WRIUSC2(IKAD(IKEY)+1,1,KEY0(IKEY))
798 READ(IUSC2,*)DEMXK,DMTMXK,DMNMXK
799 156 CONTINUE
800 ENDIF
801 IF(DMTMXK==ZERO)DMTMXK=EP20
802 IF(DMNMXK==ZERO)DMNMXK=EP20
803 IF(DEMXK==ZERO) DEMXK =EP20
804
805C--------------------------
806C /RUN
807C--------------------------
808 IF (MCHECK == 0) THEN
809 IKEY=KRUN
810 IRUNN=1
811 CHRUN0=' '
812 IF(IKAD(IKEY)/=IKAD(IKEY+1))THEN
813 IRUNN=0
814 READ(IUSC1,REC=IKAD(IKEY),FMT='(7X,A4,2X,I5,1X,A1)',ERR=9990)CH4,IRUNN,CHRUN0(2:2)
815 IF(CHRUN0(2:2)/=' ')CHRUN0(1:1)='_'
816 CALL WRIUSC2(IKAD(IKEY)+1,1,KEY0(IKEY))
817 READ(IUSC2,*)TSTOP0
818 ENDIF
819 IF (GOT_INPUT == 1) THEN
820 !RUNN is -input run number,
821 !if RUNN = 0 (common starter / engine input file) RUNN is set to 1 in Engine.
822 IF (RUNN==0 ) RUNN=1
823 !IRUNN is the run number read from input.
824 !If IRUNN was set in input and is different from -input run number,than we print out a message.
825 IF (IRUNN /= 0)THEN
826 IF (IRUNN /= RUNN)THEN
827 WRITE(ISTDO,'(A,A)') ' ** WARNING ** : RUN NUMBER FOUND IN ', '/RUN CARD FROM INPUT FILE'
828 WRITE(ISTDO,'(A)') ' RUN NUMBER IGNORED '
829 ENDIF
830 ENDIF
831 IRUNN = RUNN
832 IF (IRUNN == 0) IRUNN = 1
833 ENDIF
834 IF(ROOTLEN==0) THEN
835 CALL ANCMSG(MSGID=194,ANMODE=ANINFO)
836 IERR=IERR+1
837 ENDIF
838 IF(IRUNN<=0) THEN
839 CALL ANCMSG(MSGID=195,ANMODE=ANINFO)
840 IERR=IERR+1
841 IRUNN=1
842 ENDIF
843 ENDIF ! MCHECK == 0
844
845C--------------------------
846C /TITLE
847C--------------------------
848 IKEY=KTITLE
849 IF(IKAD(IKEY)/=IKAD(IKEY+1))THEN
850 READ(IUSC1,REC=IKAD(IKEY)+1,FMT='(A)',ERR=9990)TITLE
851 IF(TITLE(1:1)=='/')TITLE=' '
852 ELSE
853 TITLE=' '
854 ENDIF
855 WRITE(IIN,'(2A,I2.2,A)')ROOTNAM(1:ROOTLEN),'D',IRUNN,TITLE
856 WRITE(CHRUN,'(I4.4)')IRUNN
857
858C-----------------------
859C /NEGVOL (SMSTR: INEG_V=1;STOP: INEG_V=0)
860C--------------------------------------------------------
861 IKEY = KNEGVOL
862 INEG_V = 1
863 IF(IKAD(IKEY)/=IKAD(IKEY+1))THEN
864 READ(IUSC1,REC=IKAD(IKEY),FMT='(7X,A)',ERR=9990)KEY2
865 IF(KEY2(1:4)=='STOP') INEG_V = 0
866 END IF
867
868C-----------------------
869C /DTSDE
870C time step for degenerated solid element
871C----change to default; to return back use /DTSDE/OFF
872C----reput /DTSDE/OFF as default after instability issue; re-use /DTSDE if needed
873C--------------------------------------------------------
874 IKEY = KDTSDE
875 IDTS6 = 0
876 IF(IKAD(IKEY)/=IKAD(IKEY+1))THEN
877 IDTS6=1
878 READ(IUSC1,REC=IKAD(IKEY),FMT='(7X,A)',ERR=9990)KEY2
879 IF(KEY2(1:3)=='OFF') IDTS6 = 0
880 END IF
881
882C--------------------
883C /DT
884C--------------------
885 IKEY=KDT
886 DTFAC0=ZERO
887 DTMIN0=ZERO
888 INTDT=0
889 IDTGR(11)=0
890 KDTINT=0
891 KDTSMSTR=1
892C
893 TOL_SMS=ZERO
894 NCPRISMS=0
895 M_VS_SMS=0
896C
897 IDTMINS_INT=0
898 DTFACS_INT=ZERO
899 DTMINS_INT=ZERO
900 GLOB_THERM%IDT_THERM = 0
901 GLOB_THERM%DTFACTHERM = ZERO
902 DT%BRICK_CST_DEFV_MIN = ZERO
903 DT%BRICK_CST_COL_MIN = ZERO
904 DT%BRICK_DEL_DEFV_MIN = ZERO
905 DT%BRICK_DEL_DEFV_MAX = ZERO
906 DT%BRICK_DEL_ASP_MAX = ZERO
907 DT%BRICK_DEL_COL_MIN = ZERO
908C
909 IF(IKAD(IKEY)/=IKAD(IKEY+1))THEN
910 K=0
911 160 READ(IUSC1,REC=IKAD(IKEY)+K,FMT='(7X,A)',ERR=9990)KEY2
912 IF(KEY2(1:4)=='NODA')THEN
913 READ(IUSC1,REC=IKAD(IKEY)+K,FMT='(7X,A,1X,A)', ERR=9990)KEY2,KEY3
914.AND..AND. IF(KEY3(1:4)/='STOP' KEY3(1:3)/='DEL'
915.AND..AND. . KEY3(1:3)/='CST' KEY3(1:3)/='SET'
916.AND..AND. . KEY3(1:4)/='KILL' KEY3(1:3)/='LAG'
917.AND. . KEY3(1:3)/='AMS' KEY3(1:3)/='ALE' )THEN !ALEON hidden option to keep compatibility of DT NODA * with ALE
918 READ(IUSC1,REC=IKAD(IKEY)+K,FMT='(7X,A,1X,I5)',ERR=9990)KEY2,K4
919 ELSEIF(KEY3(1:3)=='DEL')THEN
920 CALL ANCMSG(MSGID=246,ANMODE=ANINFO,C1='/DT/NODA/DEL')
921 IERR=IERR+1
922 ELSE
923 READ(IUSC1,REC=IKAD(IKEY)+K,FMT='(7X,A,1X,A,1X,I5)',ERR=9990)KEY2,KEY3,K4
924 ENDIF
925 ELSEIF(KEY2=='AMS')THEN
926 READ(IUSC1,REC=IKAD(IKEY)+K,FMT='(7X,A,1X,I5)',ERR=9990)KEY2,K4
927 ELSEIF(KEY2=='CST_A')THEN
928 ! /DT/CST_AMS -> hybride /DT/NODA/CST + /DT/AMS
929 READ(IUSC1,REC=IKAD(IKEY)+K,FMT='(7X,A,1X,I5)',ERR=9990)KEY2,K4
930 ELSEIF(KEY2=='GLOB')THEN
931 READ(IUSC1,REC=IKAD(IKEY)+K,FMT='(7X,A,1X,I5,1X,A)',ERR=9990)KEY2,K4,KEY5
932 ELSEIF(KEY2(1:4)=='NODE')THEN
933 CALL ANCMSG(MSGID=246,ANMODE=ANINFO,C1='/DT/NODE')
934 IERR=IERR+1
935 ELSE
936 READ(IUSC1,REC=IKAD(IKEY)+K,FMT='(7X,A,1X,A,1X,I5)',ERR=9990)KEY2,KEY3,K4
937 END IF
938
939 K=K+1
940.AND. IF(KEY2=='INTER'KEY3(1:2)=='V5')THEN
941 KDTINT=1
942.AND. ELSEIF(KEY2=='INTER'KEY3(1:2)=='V4')THEN
943 KDTINT=0
944.AND. ELSEIF(KEY2=='SMSTR'KEY3(1:2)=='V4') THEN
945 KDTSMSTR=0
946 ELSE IF(KEY2=='THERM')THEN
947 GLOB_THERM%IDT_THERM = 1
948 GLOB_THERM%DTFACTHERM = ZEP9
949 IF(IKAD(IKEY)+K/=IKAD(IKEY+1))THEN
950 READ(IUSC1,REC=IKAD(IKEY)+K,FMT='(1X,A)',ERR=9990)KEY4
951 IF(KEY4(1:2)/='DT') THEN
952 CALL WRIUSC2(IKAD(IKEY)+K,1,KEY0(IKEY))
953 READ(IUSC2,*,ERR=9990,END=9990) GLOB_THERM%DTFACTHERM
954 IF (GLOB_THERM%DTFACTHERM == ZERO) DTFACA = ZEP9
955 K=K+1
956 ENDIF
957 ENDIF
958 ELSE IF(KEY2(1:4)=='IGEO')THEN
959 CALL WRIUSC2(IKAD(IKEY)+K,1,KEY0(IKEY))
960 READ(IUSC2,*,ERR=9990,END=9990)DTFACA,DTMINA
961 K=K+1
962 IF(KEY3(1:4)=='ELEM')THEN
963 IDT = 1
964 ELSEIF(KEY3(1:4)=='LCAR')THEN
965 IDT = 2
966 ELSE
967 IDT = 0
968 ENDIF
969 DTFAC1(101) = DTFACA
970 DTMIN1(101) = DTMINA
971 IDTMIN(101) = IDT
972
973 ELSEIF(KEY2(1:4)=='GLOB')THEN
974 WRITE(6,*) "/DT/GLOB is a deprecated feature"
975 CALL ARRET(5)
976 ELSE
977 IF(KEY3(1:3)=='ALE')THEN
978 CALL WRIUSC2(IKAD(IKEY)+K,1,KEY0(IKEY))
979 IFLAG = 0
980 ALE%GLOBAL%I_DT_NODA_ALE_ON_KEY = 0
981 READ(IUSC2,*,ERR=9990,END=9990)IFLAG
982 IF(IFLAG==1)ALE%GLOBAL%I_DT_NODA_ALE_ON_KEY = 1
983 K = K + 1
984 GOTO 2003
985 ELSEIF (KEY2(1:5)=='CST_A') THEN
986 DTFAC_AMS = ZERO
987 CALL WRIUSC2(IKAD(IKEY)+K,1,KEY0(IKEY))
988 READ(IUSC2,*,ERR=9001,END=9001) DTFACA,DTMINA,DTFAC_AMS
989 GOTO 9002
990 9001 CONTINUE
991 CALL WRIUSC2(IKAD(IKEY)+K,1,KEY0(IKEY))
992 READ(IUSC2,*,ERR=9990,END=9990) DTFACA,DTMINA
993 9002 CONTINUE
994 IF (DTFACA == ZERO) DTFACA = ZEP9
995 IF (DTFAC_AMS == ZERO) DTFAC_AMS = ZEP67
996 ELSEIF(KEY2(1:5) == 'FVMBA')THEN
997 ! ---/DT/FVMBAG/. ---
998 ! dtfaca dtmina lambda l_type
999 ! fvbag_id
1000 IERR1=0
1001 CALL WRIUSC2(IKAD(IKEY)+K,1,KEY0(IKEY))
1002 READ(IUSC2,'(A)',ERR=9990,END=9990)LINE
1003 READ(LINE,*,iostat=IERR1)DTFACA,DTMINA,LAMBDA,L_TYPE
1004 IF(IERR1 /= 0)THEN
1005 !l_type left blank (default 0)
1006 L_TYPE=ZERO
1007 IERR1=0
1008 READ(LINE,*,iostat=IERR1)DTFACA,DTMINA,LAMBDA
1009 IF(IERR1 /= 0)THEN
1010 !param 3 also left blank (default 0.0)
1011 LAMBDA=ZERO
1012 IERR1=0
1013 ! this is minimanl input, goto to error message if reading fails
1014 READ(LINE,*,ERR=9990,END=9990)DTFACA,DTMINA
1015 ENDIF
1016 ENDIF
1017 ID_BAG = 0
1018 IF(KEY3(1:1)=='2')THEN
1019 K=K+1
1020 CALL WRIUSC2(IKAD(IKEY)+K,1,KEY0(IKEY))
1021 READ(IUSC2,'(A)',ERR=9990,END=9990)LINE
1022 READ(LINE,*,ERR=9990,END=9990)ID_BAG
1023 IF(ID_BAG <= 0)THEN
1024 CALL ANCMSG(MSGID=299,ANMODE=ANINFO,I1=ID_BAG)
1025 CALL ARRET(0)
1026 ENDIF
1027 ENDIF
1028 ELSE
1029 ! --- /DT/NODA/CST, and others ... ---
1030 ! dtfaca dtmina percent_addmass
1031 CALL WRIUSC2(IKAD(IKEY)+K,1,KEY0(IKEY))
1032 READ(IUSC2,*,ERR=9003,END=9003)DTFACA,DTMINA,PERCENT_ADDMASS
1033 ! Read of target % of added mass
1034 IF (PERCENT_ADDMASS > ZERO) IDT_PERCENT_ADDMASS = 1
1035 GOTO 9004
1036 9003 CONTINUE
1037 CALL WRIUSC2(IKAD(IKEY)+K,1,KEY0(IKEY))
1038 READ(IUSC2,*,ERR=9990,END=9990) DTFACA,DTMINA
1039 9004 CONTINUE
1040 ENDIF
1041 K=K+1
1042C
1043 IF(KEY3(1:4)=='STOP')THEN
1044 IDT = 1
1045.AND. IF((KEY2(1:4)=='NODA')(IDT_PERCENT_ADDMASS == 1)) THEN
1046C-- case DT/NODA/STOP + % of added mass - IDTMIN set to 8
1047 IDT = 8
1048 IDT_PERCENT_ADDMASS = 2
1049 DT_STOP_PERCENT_ADDMASS = DTMINA
1050 ENDIF
1051 ELSEIF(KEY3(1:3)=='DEL')THEN
1052 IDT = 2
1053 ELSEIF(KEY3(1:3)=='CST')THEN
1054 IDT = 3
1055.OR..AND. IF((KEY2(1:4)=='NODA'KEY2(1:5)=='INTER')KEY3(1:4)/='CST1')IDT=8
1056 ELSEIF(KEY3(1:3)=='SET')THEN
1057 IDT = 4
1058 ELSEIF(KEY3(1:4)=='KILL')THEN
1059 IDT = 5
1060 ELSEIF(KEY3(1:3)=='LAG')THEN
1061 IDT = 6
1062 ELSEIF(KEY3(1:3)=='AMS')THEN
1063 IDT = 7
1064 ELSEIF(KEY3(1:3)=='COD')THEN
1065 IDT = 3
1066 ELSE
1067 IDT = 0
1068 ENDIF
1069C
1070 IF(KEY2=='BRICK')THEN
1071 DTFAC1(1) = DTFACA
1072 DTMIN1(1) = DTMINA
1073 IDTMIN(1) = IDT
1074.AND. IF(KEY3(1:3)=='CST'K4==1)THEN
1075 CALL WRIUSC2(IKAD(IKEY)+K,1,KEY0(IKEY))
1076 READ(IUSC2,*,ERR=1001,END=1001)DT%BRICK_CST_COL_MIN,
1077 . DT%BRICK_CST_DEFV_MIN
1078 GO TO 1002
1079 1001 CONTINUE
1080 CALL WRIUSC2(IKAD(IKEY)+K,1,KEY0(IKEY))
1081 READ(IUSC2,*,ERR=9990,END=9990)DT%BRICK_CST_COL_MIN
1082 1002 CONTINUE
1083 K=K+1
1084 ENDIF
1085.AND. IF(KEY3(1:3)=='DEL'K4==1)THEN
1086 CALL WRIUSC2(IKAD(IKEY)+K,1,KEY0(IKEY))
1087 READ(IUSC2,*,ERR=1003,END=1003)DT%BRICK_DEL_COL_MIN,
1088 . DT%BRICK_DEL_DEFV_MIN,
1089 . DT%BRICK_DEL_ASP_MAX,
1090 . DT%BRICK_DEL_DEFV_MAX
1091 GO TO 1004
1092 1003 CONTINUE
1093 CALL WRIUSC2(IKAD(IKEY)+K,1,KEY0(IKEY))
1094 READ(IUSC2,*,ERR=9990,END=9990)DT%BRICK_DEL_COL_MIN,
1095 . DT%BRICK_DEL_DEFV_MIN
1096 1004 CONTINUE
1097 K=K+1
1098 ENDIF
1099 ELSEIF(KEY2(1:4)=='QUAD')THEN
1100 DTFAC1(2) = DTFACA
1101 DTMIN1(2) = DTMINA
1102 IDTMIN(2) = IDT
1103 ELSEIF(KEY2=='SHELL')THEN
1104 DTFAC1(3) = DTFACA
1105 DTMIN1(3) = DTMINA
1106 IDTMIN(3) = IDT
1107.OR. ELSEIF(KEY2=='SH_3N'KEY2(1:4)=='SH3N')THEN
1108 DTFAC1(7) = DTFACA
1109 DTMIN1(7) = DTMINA
1110 IDTMIN(7) = IDT
1111 ELSEIF(KEY2=='TRUSS')THEN
1112 DTFAC1(4) = DTFACA
1113 DTMIN1(4) = DTMINA
1114 IDTMIN(4) = IDT
1115 ELSEIF(KEY2(1:4)=='BEAM')THEN
1116 DTFAC1(5) = DTFACA
1117 DTMIN1(5) = DTMINA
1118 IDTMIN(5) = IDT
1119 ELSEIF(KEY2=='SPRIN')THEN
1120 DTFAC1(6) = DTFACA
1121 DTMIN1(6) = DTMINA
1122 IDTMIN(6) = IDT
1123 ELSEIF(KEY2=='AIRBA')THEN
1124 DTFAC1(9) = DTFACA
1125 DTMIN1(9) = DTMINA
1126 IDTMIN(9) = IDT
1127 ELSEIF(KEY2=='INTER')THEN
1128.and..and..and. IF(INTDT==0(IDT/=3IDT/=8IDT/=7))THEN
1129C if /DT/INTER/DEL is read later, then following definition can be erased
1130 DTFAC1(10) = DTFACA
1131 DTMIN1(10) = DTMINA
1132 IDTMIN(10) = IDT
1133 ENDIF
1134 IF(IDT==2)INTDT=1
1135.AND..OR. IF(NODADT==0(IDT==3IDT==8))THEN
1136C if /DT/NODA is read later, then following definition can be erased
1137 DTFAC1(11) = DTFACA
1138 DTMIN1(11) = DTMINA
1139 IDTMIN(11) = IDT
1140 ELSEIF(IDT==7)THEN
1141 DTFACS_INT = DTFACA
1142 DTMINS_INT = DTMINA
1143 IDTMINS_INT= 1
1144C if /DT/AMS is read later, then following definition can be erased
1145 IF(K4>=1)THEN
1146 CALL WRIUSC2(IKAD(IKEY)+K,1,KEY0(IKEY))
1147 READ(IUSC2,*,ERR=3001,END=3001)TOL_SMS,M_VS_SMS
1148 GO TO 3002
1149 3001 CONTINUE
1150 CALL WRIUSC2(IKAD(IKEY)+K,1,KEY0(IKEY))
1151 READ(IUSC2,*,ERR=9990,END=9990)TOL_SMS
1152 3002 CONTINUE
1153 K=K+1
1154 ENDIF
1155 IF(K4>=2)THEN
1156 CALL WRIUSC2(IKAD(IKEY)+K,1,KEY0(IKEY))
1157 READ(IUSC2,*,ERR=9990,END=9990)NSMSPCG,NCPRISMS
1158 K=K+1
1159 ENDIF
1160 ENDIF
1161.AND. ELSEIF(KEY2(1:4)=='NODA' KEY3(1:3)/='ALE')THEN
1162 IF(IDT/=7)THEN
1163 DTFAC1(11) = DTFACA
1164 DTMIN1(11) = DTMINA
1165 IDTMIN(11) = IDT
1166 IDTGR(11) = 0
1167.OR. IF ((IDT == 8)(IDT == 3)) DT_CTRL_COMPATIBILITY(1) = 1
1168 IF(K4==1)THEN
1169 CALL WRIUSC2(IKAD(IKEY)+K,1,KEY0(IKEY))
1170 READ(IUSC2,*,ERR=9990,END=9990)IDTGR(11)
1171 IDTGR(11) = -IDTGR(11)
1172 K=K+1
1173 ENDIF
1174 ELSE
1175 DTFACS = DTFACA
1176 DTMINS = DTMINA
1177 IDTMINS= 1
1178 TOL_SMS = ZERO
1179 NSMSPCG = 0
1180 NCPRISMS= 0
1181 IF(K4>=1)THEN
1182 CALL WRIUSC2(IKAD(IKEY)+K,1,KEY0(IKEY))
1183 READ(IUSC2,*,ERR=100,END=100)IDTGRX,TOL_SMS
1184 IDTGRS = -IDTGRX
1185 GO TO 101
1186 100 CONTINUE
1187 CALL WRIUSC2(IKAD(IKEY)+K,1,KEY0(IKEY))
1188 READ(IUSC2,*,ERR=9990,END=9990)TOL_SMS
1189 101 CONTINUE
1190 K=K+1
1191 ENDIF
1192 IF(K4>=2)THEN
1193 CALL WRIUSC2(IKAD(IKEY)+K,1,KEY0(IKEY))
1194 READ(IUSC2,*,ERR=9990,END=9990)NSMSPCG,NCPRISMS
1195 K=K+1
1196 ENDIF
1197 END IF
1198 NODADT = 1
1199.OR. ELSEIF(KEY2(1:5)=='SPCEL'KEY2(1:5)=='SPHCE')THEN
1200 DTFAC1(51) = DTFACA
1201 DTMIN1(51) = DTMINA
1202 IDTMIN(51) = IDT
1203 ELSEIF(KEY2(1:5)=='FVMBA') THEN
1204 IF(KEY3(1:1)=='0')THEN
1205 ID_DT_OPTION = 0
1206 DTFAC1(52) = DTFACA
1207 DTMIN1(52) = DTMINA
1208 IDTMIN(52) = ID_DT_OPTION
1209 ELSEIF(KEY3(1:1)=='1')THEN
1210 ID_DT_OPTION = 1
1211 DTFAC1(52) = DTFACA
1212 DTMIN1(52) = DTMINA
1213 IDTMIN(52) = ID_DT_OPTION
1214 ELSEIF(KEY3(1:1)=='2')THEN
1215 ID_DT_OPTION = 2
1216 !Option REQUIRS AIRBAG_ID.
1217 ELSE
1218 ID_DT_OPTION = 1
1219 DTFAC1(52) = DTFACA
1220 DTMIN1(52) = DTMINA
1221 IDTMIN(52) = ID_DT_OPTION
1222 ENDIF
1223
1224 LAMBDA = MAX(ZERO, LAMBDA)
1225 FVMBAG_L_TYPE = INT(L_TYPE)
1226 FVMBAG_L_TYPE = MIN(FVMBAG_L_TYPE,2) !input check:upper bound
1227 FVMBAG_L_TYPE = MAX(0,FVMBAG_L_TYPE) !input check:lower bound
1228 !storing in temporary data structure. It will be used to fill the final data structure when restart file is read (not yet allocated)
1229 IF(ID_DT_OPTION == 0)NUM_OPT_DT_FVMBAG_0 = NUM_OPT_DT_FVMBAG_0 + 1
1230 IF(ID_DT_OPTION == 1)NUM_OPT_DT_FVMBAG_1 = NUM_OPT_DT_FVMBAG_1 + 1
1231 IF(ID_DT_OPTION == 2)NUM_OPT_DT_FVMBAG_2 = NUM_OPT_DT_FVMBAG_2 + 1
1232 IF(ID_DT_OPTION == 3)NUM_OPT_DT_FVMBAG_3 = NUM_OPT_DT_FVMBAG_3 + 1
1233 NUM_OPT_DT_FVMBAG = NUM_OPT_DT_FVMBAG + 1
1234 FVMBAG_INPUT_OPTIONS(NUM_OPT_DT_FVMBAG)%CFL_COEF = DTFACA
1235 FVMBAG_INPUT_OPTIONS(NUM_OPT_DT_FVMBAG)%DTMIN = DTMINA
1236 FVMBAG_INPUT_OPTIONS(NUM_OPT_DT_FVMBAG)%LAMBDA = LAMBDA
1237 FVMBAG_INPUT_OPTIONS(NUM_OPT_DT_FVMBAG)%ID_BAG = ID_BAG
1238 FVMBAG_INPUT_OPTIONS(NUM_OPT_DT_FVMBAG)%L_type = FVMBAG_L_TYPE
1239 FVMBAG_INPUT_OPTIONS(NUM_OPT_DT_FVMBAG)%ID_DT_OPTION = ID_DT_OPTION
1240 !Input check is done later in rdresb.F>FVRREST once all keywords are finished to be read & before deallocating (FVMBAG_INPUT_OPTIONS)
1241
1242 ELSEIF(KEY2(1:3)=='AMS')THEN
1243 DT_CTRL_COMPATIBILITY(2) = 1
1244 DTFACS = DTFACA
1245 DTMINS = DTMINA
1246 IDTMINS = 2
1247 TOL_SMS = ZERO
1248 NSMSPCG = 0
1249 NCPRISMS= 0
1250C
1251 IF(K4>=1)THEN
1252 CALL WRIUSC2(IKAD(IKEY)+K,1,KEY0(IKEY))
1253 READ(IUSC2,*,ERR=2001,END=2001)TOL_SMS,M_VS_SMS
1254 GO TO 2002
1255 2001 CONTINUE
1256 CALL WRIUSC2(IKAD(IKEY)+K,1,KEY0(IKEY))
1257 READ(IUSC2,*,ERR=9990,END=9990)TOL_SMS
1258 2002 CONTINUE
1259 K=K+1
1260 ENDIF
1261 IF(K4>=2)THEN
1262 CALL WRIUSC2(IKAD(IKEY)+K,1,KEY0(IKEY))
1263 READ(IUSC2,*,ERR=9990,END=9990)NSMSPCG,NCPRISMS
1264 K=K+1
1265 ENDIF
1266 ELSEIF(KEY2(1:5)=='CST_A')THEN
1267C-- hybrid case CST_AMS : /DT/NODA/CST + /DT/AMS
1268 DT_CTRL_COMPATIBILITY(3) = 1
1269C Set of /DT/NODA/CST
1270 DTFAC1(11) = DTFACA
1271 DTMIN1(11) = DTMINA
1272 IDTMIN(11) = 8
1273 IDTGR(11) = 0
1274 NODADT = 1
1275C Set of /DT/AMS
1276 DTFACS = DTFAC_AMS
1277 DTMINS = DTMINA
1278 IDTMINS = 2
1279 TOL_SMS = ZERO
1280 NSMSPCG = 0
1281 NCPRISMS= 0
1282C
1283 FLAG_CST_AMS = 1
1284C
1285 IF(K4>=1)THEN
1286 CALL WRIUSC2(IKAD(IKEY)+K,1,KEY0(IKEY))
1287 READ(IUSC2,*,ERR=2011,END=2011)TOL_SMS,M_VS_SMS
1288 GO TO 2012
1289 2011 CONTINUE
1290 CALL WRIUSC2(IKAD(IKEY)+K,1,KEY0(IKEY))
1291 READ(IUSC2,*,ERR=9990,END=9990)TOL_SMS
1292 2012 CONTINUE
1293 K=K+1
1294 ENDIF
1295 IF(K4>=2)THEN
1296 CALL WRIUSC2(IKAD(IKEY)+K,1,KEY0(IKEY))
1297 READ(IUSC2,*,ERR=9990,END=9990)NSMSPCG,NCPRISMS
1298 K=K+1
1299 ENDIF
1300.OR. ELSEIF(KEY2(1:3)=='ALE' KEY2(1:4)=='EULER')THEN
1301 DTFAC1(102) = DTFACA
1302 DTMIN1(102) = DTMINA
1303 IDTMIN(102) = IDT
1304 If(ALE%GLOBAL%IDT_ALE==0)ALE%GLOBAL%IDT_ALE = 1
1305 ELSE
1306 DTFAC0=DTFACA
1307 DTMIN0=DTMINA
1308 ALE%GLOBAL%IDT_ALE = -1
1309 ENDIF
1310 ENDIF
1311 2003 CONTINUE
1312 IF(IKAD(IKEY)+K/=IKAD(IKEY+1))GO TO 160
1313 ENDIF
1314C
1315C Check of compatibility of time step control options - /DT/CST_AMS can not be used with /DT/AMS or /DT/NODA/CST
1316 IF (DT_CTRL_COMPATIBILITY(3) == 1) THEN
1317 IF ((DT_CTRL_COMPATIBILITY(1)+DT_CTRL_COMPATIBILITY(2)) > 0) THEN
1318 CALL ANCMSG(MSGID=279,ANMODE=ANINFO,C1=KEY0(IKEY))
1319 CALL ARRET(0)
1320 ENDIF
1321 ENDIF
1322C AMS is not compatible with thermal time step
1323.AND. IF (GLOB_THERM%IDT_THERM == 1IDTMINS/=0) THEN
1324 CALL ANCMSG(MSGID=301,ANMODE=ANINFO,C1=KEY0(IKEY))
1325 CALL ARRET(0)
1326 ENDIF
1327C
1328 ! Copy nodal timestep flag into DT data structure
1329 DT%NODADT = NODADT
1330C
1331C--------------------------
1332C /DT1
1333C--------------------------
1334 IKEY=KDT1
1335 IDT1SH = 0
1336 IDT1SOL= 0
1337 IF(IKAD(IKEY)/=IKAD(IKEY+1))THEN
1338 K=0
1339 161 READ(IUSC1,REC=IKAD(IKEY)+K,FMT='(7X,A,1X,A,1X,I5)', ERR=9990)KEY2,KEY3,K4
1340 K=K+1
1341 CALL WRIUSC2(IKAD(IKEY)+K,1,KEY0(IKEY))
1342 READ(IUSC2,*,ERR=9990,END=9990)DTFACA,DTMINA
1343 K=K+1
1344 IF(KEY3(1:4)=='STOP')THEN
1345 IDT = 1
1346 ELSEIF(KEY3(1:3)=='DEL')THEN
1347 IDT = 2
1348 ELSEIF(KEY3(1:3)=='CST')THEN
1349 IDT = 3
1350 ELSEIF(KEY3(1:4)=='KILL')THEN
1351 IDT = 5
1352 ELSE
1353 IDT = 0
1354 ENDIF
1355 IF(KEY2=='SHELL')THEN
1356 IDT1SH = 1
1357 DTFAC1(3) = DTFACA
1358 DTMIN1(3) = DTMINA
1359 IDTMIN(3) = IDT
1360 ELSEIF(KEY2=='BRICK')THEN
1361 IDT1SOL= 1
1362 DTFAC1(1) = DTFACA
1363 DTMIN1(1) = DTMINA
1364 IDTMIN(1) = IDT
1365.AND. IF(KEY3(1:3)=='CST'K4==1)THEN
1366 CALL WRIUSC2(IKAD(IKEY)+K,1,KEY0(IKEY))
1367 READ(IUSC2,*,ERR=1101,END=1101)DT%BRICK_CST_COL_MIN,
1368 . DT%BRICK_CST_DEFV_MIN
1369 GO TO 1102
1370 1101 CONTINUE
1371 CALL WRIUSC2(IKAD(IKEY)+K,1,KEY0(IKEY))
1372 READ(IUSC2,*,ERR=9990,END=9990)DT%BRICK_CST_COL_MIN
1373 1102 CONTINUE
1374 K=K+1
1375 ENDIF
1376.AND. IF(KEY3(1:3)=='DEL'K4==1)THEN
1377 CALL WRIUSC2(IKAD(IKEY)+K,1,KEY0(IKEY))
1378 READ(IUSC2,*,ERR=1103,END=1103)DT%BRICK_DEL_COL_MIN,
1379 . DT%BRICK_DEL_DEFV_MIN,
1380 . DT%BRICK_DEL_ASP_MAX,
1381 . DT%BRICK_DEL_DEFV_MAX
1382 GO TO 1104
1383 1103 CONTINUE
1384 CALL WRIUSC2(IKAD(IKEY)+K,1,KEY0(IKEY))
1385 READ(IUSC2,*,ERR=9990,END=9990)DT%BRICK_DEL_COL_MIN,
1386 . DT%BRICK_DEL_DEFV_MIN
1387 1104 CONTINUE
1388 K=K+1
1389 ENDIF
1390 ELSE
1391 IDT1SH = 1
1392 IDT1SOL= 1
1393 DTFAC0=DTFACA
1394 DTMIN0=DTMINA
1395 ENDIF
1396 IF(IKAD(IKEY)+K/=IKAD(IKEY+1))GO TO 161
1397 ENDIF
1398 CALL INIT_IDEL_BRICK(DT)
1399C--------------------------
1400C /TFILE
1401C--------------------------
1402 ITTYP = 0
1403 IKEY=KTFILE
1404 IF(IKAD(IKEY)/=IKAD(IKEY+1))THEN
1405 READ(IUSC1,REC=IKAD(IKEY),FMT='(7X,I5)',ERR=9990)ITTYP
1406 CALL WRIUSC2(IKAD(IKEY)+1,1,KEY0(IKEY))
1407 READ(IUSC2,*,ERR=9990,END=9990)DTHIS0
1408 ELSE
1409 ITTYP=0
1410 DTHIS0=EP30
1411 ENDIF
1412
1413C--------------------------
1414C /ATFIL
1415C--------------------------
1416 IKEY=KATFIL
1417 IF(IKAD(IKEY)/=IKAD(IKEY+1))THEN
1418 READ(IUSC1,REC=IKAD(IKEY),FMT='(7X,I5)',ERR=9990)AFORM(1)
1419 CALL WRIUSC2(IKAD(IKEY)+1,1,KEY0(IKEY))
1420 READ(IUSC2,*,ERR=9990,END=9990)DTHIS01(1)
1421 ELSE
1422 DTHIS01(1)=EP30
1423 OUTPUT%TH%THIS1(1)= EP30
1424 ENDIF
1425
1426C--------------------------
1427C /BTFIL
1428C--------------------------
1429 IKEY=KBTFIL
1430 IF(IKAD(IKEY)/=IKAD(IKEY+1))THEN
1431 READ(IUSC1,REC=IKAD(IKEY),FMT='(7X,I5)',ERR=9990)AFORM(2)
1432 CALL WRIUSC2(IKAD(IKEY)+1,1,KEY0(IKEY))
1433 READ(IUSC2,*,ERR=9990,END=9990)DTHIS01(2)
1434 ELSE
1435 DTHIS01(2)=EP30
1436 OUTPUT%TH%THIS1(2)=EP30
1437 ENDIF
1438
1439C--------------------------
1440C /CTFIL
1441C--------------------------
1442 IKEY=KCTFIL
1443 IF(IKAD(IKEY)/=IKAD(IKEY+1))THEN
1444 READ(IUSC1,REC=IKAD(IKEY),FMT='(7X,I5)',ERR=9990)AFORM(3)
1445 CALL WRIUSC2(IKAD(IKEY)+1,1,KEY0(IKEY))
1446 READ(IUSC2,*,ERR=9990,END=9990)DTHIS01(3)
1447 ELSE
1448 DTHIS01(3)=EP30
1449 OUTPUT%TH%THIS1(3)=EP30
1450 ENDIF
1451
1452C--------------------------
1453C /DTFIL
1454C--------------------------
1455 IKEY=KDTFIL
1456 IF(IKAD(IKEY)/=IKAD(IKEY+1))THEN
1457 READ(IUSC1,REC=IKAD(IKEY),FMT='(7X,I5)',ERR=9990)AFORM(4)
1458 CALL WRIUSC2(IKAD(IKEY)+1,1,KEY0(IKEY))
1459 READ(IUSC2,*,ERR=9990,END=9990)DTHIS01(4)
1460 ELSE
1461 DTHIS01(4)=EP30
1462 OUTPUT%TH%THIS1(4)=EP30
1463 ENDIF
1464
1465C--------------------------
1466C /ETFIL
1467C--------------------------
1468 IKEY=KETFIL
1469 IF(IKAD(IKEY)/=IKAD(IKEY+1))THEN
1470 READ(IUSC1,REC=IKAD(IKEY),FMT='(7X,I5)',ERR=9990)AFORM(5)
1471 CALL WRIUSC2(IKAD(IKEY)+1,1,KEY0(IKEY))
1472 READ(IUSC2,*,ERR=9990,END=9990)DTHIS01(5)
1473 ELSE
1474 DTHIS01(5)=EP30
1475 OUTPUT%TH%THIS1(5)=EP30
1476 ENDIF
1477
1478C--------------------------
1479C /KTFIL
1480C--------------------------
1481 IKEY=KFTFIL
1482 IF(IKAD(IKEY)/=IKAD(IKEY+1))THEN
1483 READ(IUSC1,REC=IKAD(IKEY),FMT='(7X,I5)',ERR=9990)AFORM(6)
1484 CALL WRIUSC2(IKAD(IKEY)+1,1,KEY0(IKEY))
1485 READ(IUSC2,*,ERR=9990,END=9990)DTHIS01(6)
1486 ELSE
1487 DTHIS01(6)=EP30
1488 OUTPUT%TH%THIS1(6)=EP30
1489 ENDIF
1490
1491C--------------------------
1492C /GTFIL
1493C--------------------------
1494 IKEY=KGTFIL
1495 IF(IKAD(IKEY)/=IKAD(IKEY+1))THEN
1496 READ(IUSC1,REC=IKAD(IKEY),FMT='(7X,I5)',ERR=9990)AFORM(7)
1497 CALL WRIUSC2(IKAD(IKEY)+1,1,KEY0(IKEY))
1498 READ(IUSC2,*,ERR=9990,END=9990)DTHIS01(7)
1499 ELSE
1500 DTHIS01(7)=EP30
1501 OUTPUT%TH%THIS1(7)=EP30
1502 ENDIF
1503
1504C--------------------------
1505C /HTFIL
1506C--------------------------
1507 IKEY=KHTFIL
1508 IF(IKAD(IKEY)/=IKAD(IKEY+1))THEN
1509 READ(IUSC1,REC=IKAD(IKEY),FMT='(7X,I5)',ERR=9990)AFORM(8)
1510 CALL WRIUSC2(IKAD(IKEY)+1,1,KEY0(IKEY))
1511 READ(IUSC2,*,ERR=9990,END=9990)DTHIS01(8)
1512 ELSE
1513 DTHIS01(8)=EP30
1514 OUTPUT%TH%THIS1(8)=EP30
1515 ENDIF
1516
1517C--------------------------
1518C /ITFIL
1519C--------------------------
1520 IKEY=KITFIL
1521 IF(IKAD(IKEY)/=IKAD(IKEY+1))THEN
1522 READ(IUSC1,REC=IKAD(IKEY),FMT='(7X,I5)',ERR=9990)AFORM(9)
1523 CALL WRIUSC2(IKAD(IKEY)+1,1,KEY0(IKEY))
1524 READ(IUSC2,*,ERR=9990,END=9990)DTHIS01(9)
1525 ELSE
1526 DTHIS01(9)=EP30
1527 OUTPUT%TH%THIS1(9)=EP30
1528 ENDIF
1529
1530C--------------------------
1531C /TH
1532C--------------------------
1533 IKEY=KTH
1534 TH_VERS=40
1535 IF(IKAD(IKEY)/=IKAD(IKEY+1))THEN
1536 K=0
1537 1160 READ(IUSC1,REC=IKAD(IKEY)+K, FMT='(7X,A,1X,A,1X,A,1X,A,19X,I10)', ERR=9990)KEY2,KEY3,KEY4,KEY5,NBC
1538 K=K+1
1539 IF(KEY2(1:4)=='VERS')THEN
1540 READ(KEY3,'(I4)')TH_VERS
1541 ELSEIF(KEY2(1:5)=='TITLE')THEN
1542 TH_TITLES = 1
1543 ELSE
1544 GOTO 9990
1545 ENDIF
1546 IF (TH_VERS<40) THEN
1547 CALL ANCMSG(MSGID=198,ANMODE=ANINFO)
1548 IERR=IERR+1
1549 ENDIF
1550 K=K+NBC
1551 IF(IKAD(IKEY)+K/=IKAD(IKEY+1))GO TO 1160
1552 ENDIF
1553
1554C--------------------------
1555C /PRINT
1556C--------------------------
1557 IKEY=KPRINT
1558 IF(IKAD(IKEY)/=IKAD(IKEY+1))THEN
1559 READ(IUSC1,REC=IKAD(IKEY),FMT='(7X,I5,X,I5)',ERR=9990)NCPRI0,NCPRI_HEAD0
1560 ELSE
1561 NCPRI0=-100
1562 NCPRI_HEAD0=0
1563 ENDIF
1564
1565C--------------------------
1566C /RFILE
1567C--------------------------
1568 RF_CHECK = 0
1569 IKEY=KRFILE
1570 IF(IKAD(IKEY)/=IKAD(IKEY+1))THEN
1571 READ(IUSC1,REC=IKAD(IKEY),FMT='(7X,A)',ERR=9990) KEY2
1572 ! /RFILE/OFF or -norst command line --> avoid to write restart files during a run
1573 ! default = write restart files
1574 IF(KEY2(1:3)=='OFF') THEN
1575 RESTART_FILE = 0
1576 MULTIREST=0
1577 NCRST=0
1578 IRLTYP=0
1579 IRETYP=0
1580 ELSEIF(RESTART_FILE==0) THEN
1581 ! /RFILE/NCYCLE is written in the *1.rad but the user
1582 ! uses the -NORST command line
1583 MULTIREST=0
1584 NCRST=0
1585 IRLTYP=0
1586 IRETYP=0
1587 ELSE
1588 ! /RFILE/
1589 ! NCYCLE
1590 RESTART_FILE = 1
1591 READ(IUSC1,REC=IKAD(IKEY),FMT='(7X,I5)',ERR=9990)MULTIREST
1592 CALL WRIUSC2(IKAD(IKEY)+1,1,KEY0(IKEY))
1593 READ(IUSC2,*,ERR=9990,END=9990)NCRST
1594 IRLTYP=0
1595 IRETYP=0
1596 MULTIREST=MIN(MULTIREST,26)
1597 RF_CHECK = 1
1598 ENDIF
1599 ELSE
1600 MULTIREST=0
1601 NCRST=0
1602 IRLTYP=0
1603 IRETYP=0
1604 ENDIF
1605
1606 WRITE(IIN,'(1P4E16.9,I8,I10,2I8)')TSTOP0,DTHIS0,DTFAC0,DTMIN0,NCPRI0,NCRST,MULTIREST,NCPRI_HEAD0
1607 WRITE(IIN,'(1P5E16.9)')(DTHIS01(I), I=1,5)
1608 WRITE(IIN,'(1P4E16.9)')(DTHIS01(I+5), I=1,4)
1609
1610c ITTYP set to 4 by default (Binary IEEE 32 bits)
1611 IF(ITTYP==0) ITTYP=4
1612
1613 ITFORM=ITTYP-1
1614 DO I=1,9
1615 IF (AFORM(I)==0) AFORM(I)=4
1616 AFORM(I)=AFORM(I)-1
1617 END DO
1618
1619 IRFE=IRFORM/5
1620 IRFL=IRFORM-5*IRFE
1621 IRFORM=5*IRFE+IRFL
1622
1623C--------------------
1624C /ALE/GRID
1625C--------------------
1626 IKEY=KALE
1627 ALP=ZERO
1628 GAM=ZERO
1629 A1=ZERO
1630 A2=ZERO
1631 A3=ZERO
1632 VM=ZERO
1633 IALE_GRID_FORM=-1
1634 NUM_ALE_GRID = 0
1635 K = 0
1636 DO WHILE (IKAD(IKEY) + K /= IKAD(IKEY + 1))
1637 READ(IUSC1,REC=IKAD(IKEY)+K,FMT='(1X,A,1X,A,1X,A)',ERR=9990)KEY1,KEY2,KEY3
1638 IF(KEY1(1:3) /= 'ALE')THEN
1639 ! read next line
1640 K = K + 1
1641 CYCLE
1642 ENDIF
1643 IF(KEY2(1:4)=='GRID')THEN
1644 ! case "/ALE /GRID /....."
1645 StringALE(1:5)=KEY3(1:5)
1646 ELSE
1647 ! case "/ALE /....." (obsolete)
1648 StringALE(1:5)=KEY2(1:5)
1649 ENDIF
1650 CALL WRIUSC2(IKAD(IKEY)+1,1,KEY0(IKEY))
1651 !---------------------------------------!
1652 ! '/ALE/GRID/DONEA' !
1653 !---------------------------------------!
1654.OR. IF(StringALE(1:5)=='DONEA'StringALE(1:1)=='0')THEN
1655 NUM_ALE_GRID = NUM_ALE_GRID + 1
1656 IALE_GRID_FORM=0
1657 READ(IUSC2,*,ERR=9990,END=9990)ALP,GAM,A1,A2,A3,VM
1658 !---------------------------------------!
1659 ! '/ALE/GRID/DISP' !
1660 !---------------------------------------!
1661.OR. ELSEIF(StringALE(1:4)=='DISP'StringALE(1:1)=='1')THEN
1662 NUM_ALE_GRID = NUM_ALE_GRID + 1
1663 IALE_GRID_FORM=1
1664 READ(IUSC2,*,ERR=9990,END=9990)ALP,VM !new format scale factor removed (hidden flags)
1665 GAM=ZERO
1666 A1=ONE; A2=ONE; A3=ONE;
1667 !---------------------------------------!
1668 ! '/ALE/GRID/SPRING' !
1669 !---------------------------------------!
1670.OR. ELSEIF(StringALE(1:5)=='SPRIN'StringALE(1:1)=='2')THEN
1671 NUM_ALE_GRID = NUM_ALE_GRID + 1
1672 IALE_GRID_FORM=2
1673 READ(IUSC2,*,ERR=9990,END=9990)ALP,GAM,A1,A2,VM
1674 A3=ZERO
1675 !---------------------------------------!
1676 ! '/ALE/GRID/ZERO' !
1677 !---------------------------------------!
1678.OR. ELSEIF(StringALE(1:4)=='ZERO'StringALE(1:1)=='3')THEN
1679 NUM_ALE_GRID = NUM_ALE_GRID + 1
1680 IALE_GRID_FORM=3
1681 !---------------------------------------!
1682 ! '/ALE/GRID/STANDARD' !
1683 !---------------------------------------!
1684.OR. ELSEIF(StringALE(1:5)=='STAND'StringALE(1:1)=='4')THEN
1685 NUM_ALE_GRID = NUM_ALE_GRID + 1
1686 IALE_GRID_FORM=4
1687 READ(IUSC2,*,ERR=9990,END=9990)ALP,GAM,A1,A2
1688 A3=ZERO
1689 VM=ZERO
1690 !---------------------------------------!
1691 ! '/ALE/GRID/LAPLACIAN !
1692 !---------------------------------------!
1693 ELSEIF(StringALE(1:5)=='LAPLA')THEN
1694 NUM_ALE_GRID = NUM_ALE_GRID + 1
1695 IALE_GRID_FORM=5
1696 READ(IUSC2,*,ERR=9990,END=9990)ALP,A1
1697 IF(ALP==ZERO)ALP=ONE
1698 IF(NINT(A1)<=ZERO)A1=ONE
1699.AND. IF(A2/=ONE A2/=TWO)A2=ONE
1700 !---------------------------------------!
1701 ! '/ALE/GRID/VOLUME' !
1702 !---------------------------------------!
1703 ELSEIF(StringALE(1:5)=='VOLUM')THEN
1704 NUM_ALE_GRID = NUM_ALE_GRID + 1
1705 IALE_GRID_FORM=6
1706 !---------------------------------------!
1707 ! '/ALE/GRID/MASS-WEIGHTED-VEL' !
1708 !---------------------------------------!
1709 ELSEIF(StringALE(1:5)=='FLOW-')THEN
1710 NUM_ALE_GRID = NUM_ALE_GRID + 1
1711 IALE_GRID_FORM=7
1712 READ(IUSC2,*,ERR=9990,END=9990)A1,ALP
1713 CALL WRIUSC2(IKAD(IKEY)+2,1,KEY0(IKEY))
1714 READ(IUSC2,*,ERR=9990,END=9990)A2,GAM
1715 IF(ALP == ZERO)ALP = ONE
1716 IF(GAM == ZERO)GAM = ONE
1717 IF(INT(A1) == 0)A1 = 1
1718.AND. IF(INT(A1) /= 1 INT(A1) /= -1)A1 = 1 !value different than expected values leads to default value
1719 IF(INT(A2) == 0)A2 = 1
1720.AND. IF(INT(A2) /= 1 INT(A2) /= -1)A2 = 1 !value different than expected values leads to default value
1721 !---------------------------------------!
1722 ! '/ALE/GRID/LAGRANGE' !
1723 !---------------------------------------!
1724 ELSEIF(StringALE(1:5)=='LAGRA')THEN
1725 NUM_ALE_GRID = NUM_ALE_GRID + 1
1726 IALE_GRID_FORM=8
1727 ELSE
1728 !not a keyword related to grid formulation
1729 ENDIF
1730 K = K + 1
1731 ENDDO
1732 !---------------------------------------!
1733 WRITE(IIN,'(1P6E10.3)')ALP,GAM,A1,A2,A3,VM
1734 !---------------------------------------!
1735 !defining new grid formulation
1736 IF(IALE_GRID_FORM /= -1)THEN
1737 ALE%GRID%NWALE_ENGINE=IALE_GRID_FORM
1738 ELSE !nwale<0 nwale is unchanged. its value will be set to TABVINT(264) in rdcomm sub.
1739 ALE%GRID%NWALE_ENGINE=-1
1740 ENDIF
1741 !---------------------------------------!
1742 IF(NUM_ALE_GRID > 1)THEN
1743 CALL ANCMSG(MSGID=263,ANMODE=ANINFO)
1744 CALL ARRET(2)
1745 ENDIF
1746 !---------------------------------------!
1747
1748
1749
1750 !---------------------------------------!
1751 ! '/ALE/LOWMACH !
1752 !---------------------------------------!
1753 IKEY = KALE
1754 K = 0
1755 LOWMACH_OPT = 0
1756 DO WHILE (IKAD(IKEY) + K /= IKAD(IKEY + 1))
1757 READ(IUSC1,REC=IKAD(IKEY)+K,FMT='(7X,A,1X,A,31X,I10)',ERR=9990)KEY2,KEY3,NBC
1758 !---------------------------------------!
1759 ! '/ALE/LOWMACH' !
1760 !---------------------------------------!
1761 IF (KEY2(1:5) == 'LOWMA') THEN
1762 LOWMACH_OPT = 1
1763 EXIT
1764 ENDIF
1765 K = K + 1 + NBC
1766 ENDDO
1767 ALE%GLOBAL%HLLC_LOWMACH = LOWMACH_OPT
1768
1769C--------------------------
1770C /DEL
1771C--------------------------
1772 NINTOF=0
1773 NELSOF=0
1774 NELQOF=0
1775 NELCOF=0
1776 NELTGOF=0
1777 NELTOF=0
1778 NELPOF=0
1779 NELROF=0
1780 NSPHOF=0
1781 IKEY=KDEL
1782 NDEL=0
1783 NINTNOF=0
1784 NINTSOF=0
1785 NALEOF=0
1786 NEULEROF=0
1787 NTHERMOF=0
1788 NPARTOF=0
1789 IF(IKAD(IKEY)/=IKAD(IKEY+1))THEN
1790 K=0
1791 200 READ(IUSC1,REC=IKAD(IKEY)+K,FMT='(7X,A,1X,A,31X,I10)',ERR=9990)KEY2,KEY3,NBC
1792 K3 = 0
1793.AND. IF(KEY3(1:3)/='NOD'KEY3(1:3)/='SEG')READ(KEY3,FMT='(I5)',ERR=9990)K3
1794 K=K+1
1795 NOF=0
1796 DO I=1,NBC
1797 READ(IUSC1,REC=IKAD(IKEY)+K,FMT='(A)',ERR=9990)CARTE
1798 K=K+1
1799 NOF=NOF+NVAR(CARTE)
1800 ENDDO
1801 NDEL=NDEL+1
1802 IF(K3==1)NOF=NOF/2
1803.AND. IF(KEY2=='INTER'KEY3(1:3)=='NOD')THEN
1804 NINTNOF=NINTNOF+1
1805.AND. ELSEIF(KEY2=='INTER'KEY3(1:3)=='SEG')THEN
1806 NINTSOF=NINTSOF+1
1807 ELSEIF(KEY2=='INTER')THEN
1808 NINTOF=NINTOF+NOF
1809 ELSEIF(KEY2=='BRICK')THEN
1810 NELSOF=NELSOF+NOF
1811 ELSEIF(KEY2=='QUAD ')THEN
1812 NELQOF=NELQOF+NOF
1813 ELSEIF(KEY2=='SHELL')THEN
1814 NELCOF=NELCOF+NOF
1815 ELSEIF(KEY2=='TRUSS')THEN
1816 NELTOF=NELTOF+NOF
1817 ELSEIF(KEY2=='BEAM ')THEN
1818 NELPOF=NELPOF+NOF
1819 ELSEIF(KEY2=='SPRIN')THEN
1820 NELROF=NELROF+NOF
1821.OR. ELSEIF(KEY2=='SH_3N'KEY2(1:4)=='SH3N')THEN
1822 NELTGOF=NELTGOF+NOF
1823.OR. ELSEIF(KEY2=='SPCEL'KEY2=='SPHCE')THEN
1824 NSPHOF=NSPHOF+NOF
1825 ELSEIF(KEY2=='ALE ')THEN
1826 NALEOF=1
1827 ELSEIF(KEY2=='EULER')THEN
1828 NEULEROF=1
1829 ELSEIF(KEY2=='THERM')THEN
1830 NTHERMOF=1
1831 ELSEIF(KEY2=='PART ')THEN
1832 NPARTOF = NPARTOF+NOF
1833 ELSE
1834 CALL ERRMSG(KEY2)
1835 ENDIF
1836 IF(IKAD(IKEY)+K/=IKAD(IKEY+1))GO TO 200
1837 ENDIF
1838 WRITE(IIN,'(10I8)')NINTOF,NELSOF,NELQOF,NELCOF,NELTOF,NELPOF,NELROF,NELTGOF,NINTNOF,NINTSOF
1839 WRITE(IIN,'(I8)')NSPHOF
1840 WRITE(IIN,'(4I8)')NALEOF,NEULEROF,NTHERMOF,NPARTOF
1841
1842C--------------------------
1843C /VEL
1844C--------------------------
1845 NRLINK=0
1846 NALELK=0
1847 IKEY=KVEL
1848 K=0
1849 DO WHILE (IKAD(IKEY) + K /= IKAD(IKEY + 1))
1850 READ(IUSC1,REC=IKAD(IKEY)+K,FMT='(7X,A,37X,I10)', ERR=9990)KEY2,NBC
1851 IF(KEY2=='TRA ')THEN
1852 NRLINK=NRLINK+1
1853 ELSEIF(KEY2=='ROT ')THEN
1854 NRLINK=NRLINK+1
1855 ELSEIF(KEY2=='ALE ')THEN
1856 ! /VEL/ALE (OBSOLETE, replaced with /ALE/LINK)
1857 NALELK=NALELK+1
1858 ELSE
1859 CALL ERRMSG(KEY2)
1860 ENDIF
1861 K=K+NBC+1
1862 ENDDO
1863 WRITE(IIN,'(2I8)')NRLINK,NALELK
1864
1865C-----------------------
1866C /ALE/LINK
1867C-----------------------
1868 IKEY = KALE
1869 NALELINK = 0
1870 K=0
1871 DO WHILE (IKAD(IKEY) + K /= IKAD(IKEY + 1))
1872 READ(IUSC1,REC=IKAD(IKEY)+K,FMT='(7X,A,1X,A,31X,I10)',ERR=9990)KEY2,KEY3,NBC
1873 IF(KEY2(1:5)=='LINK ')THEN
1874 IF(KEY3(1:5)=='VEL ')THEN
1875 NALELINK=NALELINK+1
1876 ELSEIF(KEY3(1:5)=='OFF ')THEN
1877 NALELINK=NALELINK+1
1878 ELSEIF(KEY3(1:5)=='ON ')THEN
1879 NALELINK=NALELINK+1
1880 ELSE
1881 CALL ERRMSG('/ALE/LINK')
1882 ENDIF
1883 ENDIF
1884 K=K+NBC+1
1885 ENDDO
1886 WRITE(IIN,'(I8)')NALELINK
1887
1888C-----------------------
1889C /ALE/SUPG
1890C-----------------------
1891 ALE%UPWIND%UPWM = 3
1892 ALE%UPWIND%UPW_UPDATE = 0
1893 ALE%UPWIND%UPWMG2 = ZERO
1894 ALE%UPWIND%UPWOG2 = ZERO
1895 ALE%UPWIND%UPWSM2 = ZERO
1896 ALE%UPWIND%CUPWM = ONE !SUPG enabled
1897 ALE%UPWIND%I_SUPG_ON_OFF = 0 !test if card is present to check user input in case of both /ALE/SUPG & /UPWM/SUPG
1898 ! 1 : ON
1899 ! 2 : OFF
1900 IKEY = KALE
1901 K = 0
1902 DO WHILE (IKAD(IKEY) + K /= IKAD(IKEY + 1))
1903 READ(IUSC1,REC=IKAD(IKEY)+K,FMT='(7X,A,1X,A,31X,I10)',ERR=9990)KEY2,KEY3,NBC
1904 !---------------------------------------!
1905 ! '/ALE/SUPG/OFF - ON !
1906 !---------------------------------------!
1907 IF(KEY2(1:4)=='SUPG')THEN
1908 IF(KEY3(1:3)=='OFF')THEN
1909 ALE%UPWIND%UPWM = 0
1910 ALE%UPWIND%UPW_UPDATE = 0
1911 ALE%UPWIND%I_SUPG_ON_OFF = 2
1912 ELSEIF(KEY3(1:5)=='ON')THEN
1913 ALE%UPWIND%UPWM = 3
1914 ALE%UPWIND%UPW_UPDATE = 0
1915 ALE%UPWIND%I_SUPG_ON_OFF = 1
1916 ELSE
1917 IF(N2D==1)THEN
1918 !axisymmetric case
1919 ALE%UPWIND%UPWM = 0
1920 ALE%UPWIND%UPW_UPDATE = 0
1921 ELSE
1922 !3D & 2D planar
1923 ALE%UPWIND%UPWM = 3
1924 ENDIF
1925 ALE%UPWIND%UPW_UPDATE = 0
1926 ALE%UPWIND%I_SUPG_ON_OFF = 0
1927 ENDIF
1928 ENDIF
1929 K = K + 1 + NBC
1930 ENDDO
1931
1932C-----------------------
1933C /ALE/MUSCL
1934C-----------------------
1935 ALEMUSCL_Param%I_MUSCL_OFF = 0
1936 IKEY = KALE
1937 K = 0
1938 DO WHILE (IKAD(IKEY) + K /= IKAD(IKEY + 1))
1939 READ(IUSC1,REC=IKAD(IKEY)+K,FMT='(7X,A,1X,A,31X,I10)',ERR=9990)KEY2,KEY3,NBC
1940 !---------------------------------------!
1941 ! '/ALE/MUSCL/OFF' !
1942 !---------------------------------------!
1943 IF (KEY2(1:5) == 'MUSCL') THEN
1944 IF(KEY3(1:3)=='OFF')THEN
1945 ALEMUSCL_Param%I_MUSCL_OFF = 1
1946 ELSEIF(KEY3(1:2)=='ON')THEN
1947 ALEMUSCL_Param%I_MUSCL_OFF = 0
1948 ALEMUSCL_Param%IALEMUSCL = 1
1949 ALEMUSCL_Param%BETA = TWO
1950 ELSE
1951 GOTO 9990
1952 ENDIF
1953 ENDIF
1954 K = K + 1 + NBC
1955 ENDDO
1956
1957C--------------------
1958C /ALE/ON /ALE/OFF
1959C--------------------
1960 IKEY = KALE
1961 NBALEOFF = 0
1962 NBALEON = 0
1963 NBPARTALEON = 0
1964 NBPARTALEOFF = 0
1965 K = 0
1966 DO WHILE (IKAD(IKEY) + K /= IKAD(IKEY + 1))
1967 READ (IUSC1, REC = IKAD(IKEY) + K, FMT = '(7X,A,37X,I10)') KEY2, NBC
1968 IF (KEY2(1:2) == 'ON') THEN
1969 NBALEON = NBALEON + 1
1970 NBPARTALEON = NBPARTALEON + NBC
1971 ENDIF
1972 IF (KEY2(1:3) == 'OFF') THEN
1973 NBALEOFF = NBALEOFF + 1
1974 NBPARTALEOFF = NBPARTALEOFF + NBC
1975 ENDIF
1976 K = K + 1 + NBC
1977 ENDDO
1978 WRITE (IIN, '(I8, I8)') NBPARTALEON, NBPARTALEOFF
1979
1980C-----------------------
1981C /ALE/SOLVER/FINT
1982C-----------------------
1983 IKEY = KALE
1984 K = 0
1985 ALE%GLOBAL%ISFINT = 0 !not yet read communicated in engine
1986 DO WHILE (IKAD(IKEY) + K /= IKAD(IKEY + 1))
1987
1988 READ(IUSC1,REC=IKAD(IKEY)+K,FMT='(7X,A32)',ERR=9990)StringALE
1989 IF(StringALE(1:5)/='SOLVE')EXIT
1990 READ(IUSC1,REC=IKAD(IKEY)+K,FMT='(13X,A32)',ERR=9990)StringALE
1991 IF(StringALE(1:4)/='FINT')EXIT
1992 READ(IUSC1,REC=IKAD(IKEY)+K,FMT='(A)',ERR=9990)LINE
1993 READ(LINE,FMT='(7X,A5,1X,A5,1X,I5)',ERR=9990)KEY2,KEY3,IFORM
1994 IF(IFORM==2)THEN
1995 ALE%GLOBAL%ISFINT = 2 !FEM INT : surface integration
1996 ELSEIF(IFORM==1)THEN
1997 ALE%GLOBAL%ISFINT = 1 !FVM INT : volume integration
1998 ELSEIF(IFORM==3)THEN
1999 ALE%GLOBAL%ISFINT = 3 !FVM INT : volume integration
2000 ELSE
2001 !default
2002 ALE%GLOBAL%ISFINT = 1
2003 ENDIF
2004 K = K + 1
2005 ENDDO
2006
2007C--------------------
2008C /ALE : check for valid sub-keywords
2009C--------------------
2010 IKEY = KALE
2011 K = 0
2012 DO WHILE (IKAD(IKEY) + K /= IKAD(IKEY + 1))
2013 lFOUND=.FALSE.
2014 READ (IUSC1, REC = IKAD(IKEY) + K, FMT = '(A32)', ERR=998) KEYA
2015 READ (IUSC1, REC = IKAD(IKEY) + K, FMT = '(X,A5,X,A5)', ERR=998) KEY1 ,KEY2
2016 IF(KEY2(1:5)==' ')KEY2(1:1)='0'
2017 IF(KEY1(1:5)=='ALE ')THEN
2018 DO INUM=1,NUM_ALE_KEY2
2019 IF (KEY2(1:5) == KEYALE(INUM)) THEN
2020 lFOUND = .TRUE.
2021 EXIT
2022 ENDIF
2023 ENDDO
2024.EQV. IF(lFOUND .FALSE.)THEN
2025 CALL ANCMSG(MSGID=51,ANMODE=ANINFO,C1=KEYA(1:12))
2026 IERR = IERR + 1
2027 ENDIF
2028 ENDIF
2029 998 CONTINUE
2030 K = K + 1
2031 ENDDO
2032
2033C--------------------
2034C /BCS
2035C--------------------
2036 NUBCS1=0
2037 NBCS1=0
2038 NBCS2=0
2039 IKEY=KBCS
2040 IF(IKAD(IKEY)/=IKAD(IKEY+1))THEN
2041 K=0
2042 400 READ(IUSC1,REC=IKAD(IKEY)+K,FMT='(7X,A,37X,I10)',ERR=9990)KEY2,NBC
2043 K=K+1
2044 DO I=1,NBC
2045 READ(IUSC1,REC=IKAD(IKEY)+K,FMT='(A)',ERR=9990)CARTE
2046 K=K+1
2047 NUBCS1=NUBCS1+NVAR(CARTE)
2048 ENDDO
2049 NBCS1 = NBCS1 + 1
2050 IF(IKAD(IKEY)+K/=IKAD(IKEY+1))GO TO 400
2051 ENDIF
2052 NUBCS2=0
2053 IKEY=KBCSR
2054 IF(IKAD(IKEY)/=IKAD(IKEY+1))THEN
2055 K=0
2056 420 READ(IUSC1,REC=IKAD(IKEY)+K,FMT='(7X,A,37X,I10)',ERR=9990)KEY2,NBC
2057 K=K+1
2058 DO I=1,NBC
2059 READ(IUSC1,REC=IKAD(IKEY)+K,FMT='(A)',ERR=9990)CARTE
2060 K=K+1
2061 NUBCS2=NUBCS2+NVAR(CARTE)
2062 ENDDO
2063 NBCS2 = NBCS2 + 1
2064 IF(IKAD(IKEY)+K/=IKAD(IKEY+1))GO TO 420
2065 ENDIF
2066 NUM_BCS=NUBCS1+NUBCS2
2067
2068C--------------------
2069C /INIV
2070C--------------------
2071 NINIV = 0
2072 NINIVT= 0
2073 IKEY=KINIV
2074 IF(IKAD(IKEY)/=IKAD(IKEY+1))THEN
2075 K=0
2076 440 READ(IUSC1,REC=IKAD(IKEY)+K,FMT='(7X,A,7X,I5,25X,I10)',ERR=9990)KEY2,K3,NBC
2077 K=K+1
2078 IF (KEY2(1:4)=="AXIS") THEN
2079 M=2
2080 ELSE
2081 M=1
2082 ENDIF
2083 K=K+M
2084 IF (K3==2) THEN
2085 READ(IUSC1,REC=IKAD(IKEY)+K,FMT='(A)',ERR=9990)CARTE
2086 ! NVAR(CARTE) should be =1
2087 K=K+1
2088 NINIVT=NINIVT+(NBC-M)*2*NVAR(CARTE)
2089 ELSE
2090 DO I=1,NBC-M
2091 READ(IUSC1,REC=IKAD(IKEY)+K,FMT='(A)',ERR=9990)CARTE
2092 K=K+1
2093 NINIVT=NINIVT+(2-K3)*NVAR(CARTE)
2094 ENDDO
2095 END IF
2096 NINIV=NINIV + 1
2097 IF(IKAD(IKEY)+K/=IKAD(IKEY+1))GO TO 440
2098 ENDIF
2099 WRITE(IIN,'(2I8)')NUM_BCS,NINIVT/2
2100
2101C--------------------
2102C /INTER
2103C--------------------
2104 NINTCH=0
2105 INTCH_IFOP = 0
2106 IFOP =1
2107 INTCH_ITOP = 0
2108 ITOP = 1
2109 NBTOPFOP = 0
2110 IKEY=KINTER
2111 IF(IKAD(IKEY)/=IKAD(IKEY+1))THEN
2112 K=0
2113 !options /inter/fop , /inter/top, /inter/nofop, /inter/notop
2114 500 READ(IUSC1,REC=IKAD(IKEY)+K,FMT='(7X,A,37X,I10)',ERR=9990)KEY2,NBC
2115 K=K+NBC+1
2116 NINTCH=NINTCH+1
2117 IF(KEY2=='FOP') THEN
2118C IFOP = 1
2119 IF (INTCH_IFOP/=0) THEN
2120 GO TO 9990
2121 ELSE
2122 INTCH_IFOP=NINTCH
2123 NBTOPFOP = NBTOPFOP + 1
2124 ENDIF
2125 ELSEIF(KEY2=='NOFOP') THEN
2126C IFOP = 0
2127 IF (INTCH_IFOP/=0) THEN
2128 GO TO 9990
2129 ELSE
2130 INTCH_IFOP=NINTCH
2131 NBTOPFOP = NBTOPFOP + 1
2132 ENDIF
2133 ELSEIF(KEY2=='TOP') THEN
2134C ITOP = 1
2135 IF (INTCH_ITOP/=0) THEN
2136 GO TO 9990
2137 ELSE
2138 INTCH_ITOP=NINTCH
2139 NBTOPFOP = NBTOPFOP + 1
2140 ENDIF
2141 ELSEIF(KEY2=='NOTOP') THEN
2142C ITOP = 0
2143 IF (INTCH_ITOP/=0) THEN
2144 GO TO 9990
2145 ELSE
2146 INTCH_ITOP=NINTCH
2147 NBTOPFOP = NBTOPFOP + 1
2148 ENDIF
2149 ENDIF
2150 IF(IKAD(IKEY)+K/=IKAD(IKEY+1))GO TO 500
2151 ENDIF
2152
2153C--------------------
2154C /RBODY
2155C--------------------
2156 IKEY=KRBODY
2157 NRBYON=0
2158 NRBYOF=0
2159 NRBYNF=0
2160 IF(IKAD(IKEY)/=IKAD(IKEY+1))THEN
2161 K=0
2162 550 READ(IUSC1,REC=IKAD(IKEY)+K,FMT='(7X,A,37X,I10)',ERR=9990)KEY2,NBC
2163 K=K+1
2164 NOF=0
2165 DO I=1,NBC
2166 READ(IUSC1,REC=IKAD(IKEY)+K,FMT='(A)',ERR=9990)CARTE
2167 K=K+1
2168 NOF=NOF+NVAR(CARTE)
2169 ENDDO
2170 NRBYNF=NRBYNF+1
2171 IF(KEY2=='ON')THEN
2172 NRBYON=NRBYON+NOF
2173 ELSEIF(KEY2=='OFF')THEN
2174 NRBYOF=NRBYOF+NOF
2175 ELSE
2176 CALL ERRMSG(KEY2)
2177 ENDIF
2178 IF(IKAD(IKEY)+K/=IKAD(IKEY+1))GO TO 550
2179 ENDIF
2180 ! cases /inter/fop and /inter/top
2181 WRITE(IIN,'(10I8)')NINTCH-NBTOPFOP,NRBYON,NRBYOF
2182
2183C--------------------
2184C /MADYMO (COUPLING)
2185C--------------------
2186 IKEY=KMADYM
2187 IMADCPL = 0
2188 IF (IKAD(IKEY)/=IKAD(IKEY+1)) THEN
2189 K=0
2190 650 READ(IUSC1,REC=IKAD(IKEY)+K,FMT='(7X,A,37X,I10)',ERR=9990) KEY2,NBC
2191.AND..AND. IF(KEY2/='ON' KEY2/='ON2' KEY2/='MPP' )THEN
2192 CALL ERRMSG(KEY2)
2193 ELSEIF(KEY2=='ON2')THEN
2194 IMADCPL = 1
2195 ELSEIF(KEY2=='MPP')THEN
2196 IMADCPL = 1
2197 ENDIF
2198 K=K+1
2199 DO I=1,NBC
2200 READ(IUSC1,REC=IKAD(IKEY)+K,FMT='(A)',ERR=9990) CARTE
2201 K=K+1
2202 ENDDO
2203 IF(IKAD(IKEY)+K/=IKAD(IKEY+1)) GO TO 650
2204 ENDIF
2205
2206C--------------------
2207C /RAD2RAD
2208C--------------------
2209 IKEY=KRAD2R
2210 IRAD2R=0
2211 IF (IKAD(IKEY)/=IKAD(IKEY+1)) THEN
2212 K=0
2213 670 READ(IUSC1,REC=IKAD(IKEY)+K,FMT='(7X,A,37X,I10)',ERR=9990) KEY2,NBC
2214 IF(KEY2/='ON')THEN
2215 CALL ERRMSG(KEY2)
2216 ELSEIF(KEY2=='ON')THEN
2217 IRAD2R = 1
2218 !initial connection with rad2rad
2219 IF (ISPMD==0) CALL CONNECTION_SOCK_INIT_C(SOCK0)
2220 ENDIF
2221 K=K+1
2222 DO I=1,NBC
2223 READ(IUSC1,REC=IKAD(IKEY)+K,FMT='(A)',ERR=9990) CARTE
2224 K=K+1
2225 ENDDO
2226 IF(IKAD(IKEY)+K/=IKAD(IKEY+1)) GO TO 670
2227 ENDIF
2228
2229C--------------------
2230C /VIPER
2231C--------------------
2232 IKEY=KVIPER
2233 ViperCoupling = .false.
2234 IF (IKAD(IKEY)/=IKAD(IKEY+1)) THEN
2235 K=0
2236 680 READ(IUSC1,REC=IKAD(IKEY)+K,FMT='(7X,A,37X,I10)',ERR=9990) KEY2,NBC
2237 IF(KEY2=='ON')THEN
2238 ViperCoupling = .true.
2239 ENDIF
2240 K=K+1
2241 DO I=1,NBC
2242 READ(IUSC1,REC=IKAD(IKEY)+K,FMT='(A)',ERR=9990) CARTE
2243 K=K+1
2244 ENDDO
2245 IF(IKAD(IKEY)+K/=IKAD(IKEY+1)) GO TO 680
2246 ENDIF
2247
2248C--------------------------------------------------
2249C /PERF
2250C-------------------------------------------------
2251 IKEY=KPERF
2252 GLOBAL_INTERFACE_SORTING_ALGO = 1
2253 IF (IKAD(IKEY)/=IKAD(IKEY+1)) THEN
2254 K=0
2255 700 READ(IUSC1,REC=IKAD(IKEY)+K,FMT='(7X,A,37X,I10)',ERR=9990) KEY2,NBC
2256 IF(KEY2=='SORT1') THEN
2257 GLOBAL_INTERFACE_SORTING_ALGO = 1
2258 ELSEIF(KEY2=='SORT2') THEN
2259 GLOBAL_INTERFACE_SORTING_ALGO = 2
2260 ELSEIF(KEY2=='SORT3') THEN
2261 GLOBAL_INTERFACE_SORTING_ALGO = 0
2262 ENDIF
2263 K = K +1
2264 IF(IKAD(IKEY)+K/=IKAD(IKEY+1)) GO TO 700
2265 ENDIF
2266
2267C--------------------
2268C /SPMD
2269C--------------------
2270 IKEY=KSPMD
2271 IDDW=0
2272 IPREAD=0
2273 IDDWSTAT=0
2274 IF (IKAD(IKEY)/=IKAD(IKEY+1)) THEN
2275 K=0
2276 750 READ(IUSC1,REC=IKAD(IKEY)+K,FMT='(7X,A,37X,I10)',ERR=9990) KEY2,NBC
2277 IF(KEY2=='DDW')THEN
2278 IDDW=1
2279 CALL WRIUSC2(IKAD(IKEY)+1,1,KEY0(IKEY))
2280 READ(IUSC2,*) TPSENG
2281 ELSEIF(KEY2=='PREAD')THEN
2282 IPREAD = 1
2283 ELSEIF(KEY2=='DDWST')THEN
2284 IDDW=1
2285 IDDWSTAT=1
2286 ELSE
2287 CALL ERRMSG(KEY2)
2288 ENDIF
2289 K=K+1
2290 DO I=1,NBC
2291 READ(IUSC1,REC=IKAD(IKEY)+K,FMT='(A)',ERR=9990) CARTE
2292 K=K+1
2293 ENDDO
2294 IF(IKAD(IKEY)+K/=IKAD(IKEY+1)) GO TO 750
2295 ENDIF
2296C
2297C--------------------
2298C /DAMP
2299C--------------------
2300 IDAMP0=0
2301 N_DAMP=0
2302 IKEY=KDAMP
2303 IF(IKAD(IKEY)/=IKAD(IKEY+1))THEN
2304 K=0
2305 770 READ(IUSC1,REC=IKAD(IKEY)+K,FMT='(101X,I10)',ERR=9990) NBC
2306 IF (NBC == 2) IDAMP0=1
2307 K=K+NBC+1
2308 N_DAMP=N_DAMP+1
2309 IF(IKAD(IKEY)+K/=IKAD(IKEY+1))GO TO 770
2310 ENDIF
2311 WRITE(IIN,'(I8)')N_DAMP
2312
2313C--------------------
2314C /FXINP (FLEXIBLE BODY INPUT FILES)
2315C--------------------
2316 IKEY=KFXINP
2317 NFXINP=0
2318 IF (IKAD(IKEY)/=IKAD(IKEY+1)) THEN
2319 K=0
2320 780 CALL WRIUSC2(IKAD(IKEY)+1,1,KEY0(IKEY))
2321 READ(IUSC1,REC=IKAD(IKEY)+K,FMT='(49X,I10)',ERR=9990) NBC
2322 K=K+NBC+1
2323 NFXINP=NFXINP+NBC
2324 IF (IKAD(IKEY)+K/=IKAD(IKEY+1)) GO TO 780
2325 ENDIF
2326 WRITE(IIN,'(I8)')NFXINP
2327
2328C--------------------
2329C /EIG (EIGENPROBLEM DEACTIVATION)
2330C--------------------
2331 IKEY=KEIG
2332 NEIGOFF=0
2333 NEOFF=0
2334 IF (IKAD(IKEY)/=IKAD(IKEY+1)) THEN
2335 K=0
2336 790 READ(IUSC1,REC=IKAD(IKEY)+K,FMT='(7X,A,37X,I10)',ERR=9990)KEY2,NBC
2337 K=K+1
2338 NOF=0
2339 DO I=1,NBC
2340 READ(IUSC1,REC=IKAD(IKEY)+K,FMT='(A)',ERR=9990)CARTE
2341 K=K+1
2342 NOF=NOF+NVAR(CARTE)
2343 ENDDO
2344 NEIGOFF=NEIGOFF+1
2345 NEOFF=NEOFF+NOF
2346 IF(KEY2/='OFF') CALL ERRMSG(KEY2)
2347 IF(IKAD(IKEY)+K/=IKAD(IKEY+1)) GOTO 790
2348 ENDIF
2349 WRITE(IIN,'(2I8)')NEIGOFF, NEOFF
2350
2351C-----------------------
2352C /FVMBAG (REMESH/MODIF)
2353C-----------------------
2354 IKEY=KFVBAG
2355 NFVMESH=0
2356 NFVMODI=0
2357 IF(IKAD(IKEY)/=IKAD(IKEY+1)) THEN
2358 K=0
2359 810 READ(IUSC1,REC=IKAD(IKEY)+K,FMT='(7X,A5,37X,I10)',ERR=9990)KEY2, NBC
2360 K=K+NBC+1
2361 IF (KEY2=='REMES') NFVMESH=NFVMESH+1
2362 IF (KEY2=='MODIF') NFVMODI=NFVMODI+1
2363 IF (IKAD(IKEY)+K/=IKAD(IKEY+1)) GO TO 810
2364 ENDIF
2365 WRITE(IIN,'(2I8)')NFVMESH,NFVMODI
2366
2367C-----------------------
2368C /DT1TET10
2369C--------------------
2370 IKEY = KDT1TET10
2371 IDT1TET10=0
2372 IF(IKAD(IKEY)/=IKAD(IKEY+1))THEN
2373 NITERP=0
2374 READ(IUSC1,REC=IKAD(IKEY),FMT='(7X,I5)',ERR=9990)NITERP
2375 IF(NITERP == 0)NITERP=1
2376 IDT1TET10=1+NITERP
2377 END IF
2378
2379C-----------------------
2380C /DTTSH (full shell timestep for thick shells)
2381C--------------------
2382 IKEY = KDTTSH
2383 IDTTSH=0
2384 IF(IKAD(IKEY)/=IKAD(IKEY+1))THEN
2385 IDTTSH=1
2386 END IF
2387
2388C--------------------
2389C /MASS/RESET
2390C--------------------
2391 IKEY = KMASS
2392 IMASSI = 0
2393 IF(IKAD(IKEY)/=IKAD(IKEY+1))THEN
2394 READ(IUSC1,REC=IKAD(IKEY),FMT='(7X,A)',ERR=9990)KEY2
2395.AND..AND. IF(KEY2(1:5)=='RESET'IRUNN>1MCHECK==0) IMASSI = 1
2396 END IF
2397
2398C--------------------
2399C /SENS/RESET
2400C--------------------
2401 IKEY = KSENSOR
2402 SENSORS%NRESET = 0
2403 IREC = IKAD(IKEY)
2404 IF (IKAD(IKEY) /= IKAD(IKEY+1)) THEN
2405 READ(IUSC1,REC=IKAD(IKEY),FMT='(7X,A,37X,I10)',ERR=9990) KEY2,NBC
2406 IF (KEY2(1:5)=='RESET') THEN
2407 IREC = IREC+1
2408 NBSENS = 0
2409 DO I=1,NBC
2410 READ(IUSC1,REC=IREC+I-1,FMT='(A)',ERR=9990)CARTE
2411 NBSENS = NBSENS + NVAR(CARTE)
2412 ENDDO
2413 IF (NBSENS == 0) THEN
2414 SENSORS%NRESET = SENSORS%NSENSOR
2415 ELSE
2416 SENSORS%NRESET = NBSENS
2417 ALLOCATE(SENSORS%RESET(NBSENS))
2418 NBSENS = 0
2419 DO I=1,NBC
2420 READ(IUSC1,REC=IREC+I-1,FMT='(A)',ERR=9990)CARTE
2421 CALL WRIUSC2(IREC+I-1,1,KEY0(IKEY))
2422 READ(IUSC2,*,ERR=9990,END=9990)
2423 . (SENSORS%RESET(J+NBSENS),J=1,NVAR(CARTE))
2424 NBSENS = NBSENS + NVAR(CARTE)
2425 ENDDO
2426 END IF
2427 END IF
2428 END IF
2429
2430C--------------------
2431C /DEL/INTER (TYPE7 SHELL DELETION)
2432C--------------------
2433 CALL FREDLI7(IKAD(0),KEY0,KDELIN)
2434
2435C--------------------
2436C /DEL/INTER (INTERFACE DELETION)
2437C--------------------
2438 CALL FREDLI(IKAD(0),KEY0,KDEL,NDEL)
2439
2440C--------------------
2441C /DEL (ELEMENT DELETION)
2442C--------------------
2443 CALL RDELE(NDEL,'BRICK',IKAD(KDEL),KEY0(IKEY))
2444 CALL RDELE(NDEL,'QUAD ',IKAD(KDEL),KEY0(IKEY))
2445 CALL RDELE(NDEL,'SHELL',IKAD(KDEL),KEY0(IKEY))
2446 CALL RDELE(NDEL,'TRUSS',IKAD(KDEL),KEY0(IKEY))
2447 CALL RDELE(NDEL,'BEAM ',IKAD(KDEL),KEY0(IKEY))
2448 CALL RDELE(NDEL,'SPRIN',IKAD(KDEL),KEY0(IKEY))
2449 CALL RDELE(NDEL,'SH_3N',IKAD(KDEL),KEY0(IKEY))
2450 CALL RDELE(NDEL,'SH3N ',IKAD(KDEL),KEY0(IKEY))
2451 CALL RDELE(NDEL,'SPCEL',IKAD(KDEL),KEY0(IKEY))
2452 CALL RDELE(NDEL,'SPHCE',IKAD(KDEL),KEY0(IKEY))
2453 CALL RDELE(NDEL,'PART ',IKAD(KDEL),KEY0(IKEY))
2454
2455C--------------------
2456C /ALE/LINK (and obsolete option /VEL/ALE)
2457C--------------------
2458 CALL FRELNK(IKAD(0),KEY0,KVEL,NRLINK,VEL_SK_FR)
2459C--------------------
2460C ALE LINK
2461C--------------------
2462 LLINAL = 0
2463 IF(NALELK/=0) CALL FRALNK (IKAD(0),KEY0,KVEL,NALELK) !format v5.1
2464 IF(NALELINK/=0)CALL FRALNK2(IKAD(0),KEY0,KALE,NALELINK) !format v12
2465 !LLINAL is now LINALE() dimension for engine ALE links definitions.
2466
2467C--------------------
2468C /ALE (ON/OFF)
2469C--------------------
2470 IF (NBALEON + NBALEOFF /= 0) CALL FRALEONOFF(IKAD(0), KEY0, KALE, NBALEON + NBALEOFF)
2471
2472C--------------------
2473C /BCS
2474C--------------------
2475 CALL FREBCS(IKAD(0),KEY0,KBCS,KBCSR,NBCS1,NBCS2,BCS_SK_FR)
2476
2477C--------------------
2478C /INTER
2479C--------------------
2480 CALL FREINT(IKAD(0),KEY0,KINTER,NINTCH,INVERS,INTCH_IFOP,INTCH_ITOP)
2481
2482C--------------------
2483C /RBODY (ON/OFF)
2484C--------------------
2485 CALL FRERBO(IKAD(0),KEY0,KRBODY,NRBYNF)
2486
2487C--------------------
2488C /FLSEC (FLOW SECTIONS,OBSOLETE)
2489C--------------------
2490 NTFLSW=0
2491 IF(NSFLSW/=0)CALL FREFLW(IKAD(0),KEY0,KFLSEC,NSFLSW,NTFLSW)
2492 !not compatible SPMD
2493 IF (NSFLSW>0) THEN
2494 CALL ANCMSG(MSGID=201,ANMODE=ANINFO)
2495 IERR=IERR+1
2496 ENDIF
2497
2498C--------------------
2499C /FUNCT (FUNCTION UPDATES)
2500C--------------------
2501 CALL FREFUNC(IKAD(0),KEY0,KFUNC,NFCT)
2502
2503C--------------------
2504C /INIV (VELOCITY INITIALIZATIONS)
2505C--------------------
2506 CALL FREINIV(IKAD(0),KEY0,KINIV,NINIV)
2507
2508C-----------------------
2509C /ANIM (ANIMATION FILES)
2510C-----------------------
2511 CALL FREANIM(output,IKAD(0),KEY0,KANIM,SENSORS)
2512C-----------------------
2513C /OUTP (OUTPUT FILES)
2514C-----------------------
2515 CALL FREOUTP(IKAD(0),KEY0,KOUTP,SENSORS)
2516
2517C-----------------------
2518C /DEBUG
2519C-----------------------
2520 CALL FREDEBUG(IKAD(0),KEY0,KDEBUG)
2521
2522C--------------------
2523C /NOISE
2524C--------------------
2525 CALL FRENOIS(IKAD(0),KEY0,KNOISE)
2526C--------------------
2527C /UPWIND (PARAMETERS ETA1,ETA2,ETA3)
2528C--------------------
2529 CALL FREUPWIND(IKAD(0),KEY0,KUPWIND)
2530
2531C--------------------
2532C /UPWM (MOMENTUM ADVECTION METHOD)
2533C--------------------
2534 CALL FREUPWM(IKAD(0),KEY0,KUPWM)
2535
2536C--------------------
2537C /MON (MONITORING)
2538C--------------------
2539 IKEY=KMON
2540 IMON = 1
2541 IMONM = 0
2542 IMON_MAT = 0
2543 IF(IKAD(IKEY)/=IKAD(IKEY+1))THEN
2544 READ(IUSC1,REC=IKAD(IKEY),FMT='(7X,A,1X,I5)',ERR=9990)KEY2,K4
2545 IF(KEY2=='OFF')THEN
2546 IMON = 0
2547 IMONM = 0
2548 ELSEIF(KEY2=='ON')THEN
2549 IMON = K4 + 1
2550 IMONM = 0
2551 ELSEIF(KEY2=='FULL')THEN
2552 IMON = K4 + 1
2553 IMONM = 1
2554 ELSEIF(KEY2=='SYNC')THEN
2555 IMON = K4 + 1
2556 IMONM = 2
2557 ELSEIF(KEY2=='MAT')THEN
2558 IMON = K4 + 1
2559 IMON_MAT = 1
2560c ELSEIF(KEY2=='GRAPH')THEN
2561c IMON = K4 + 1
2562c IMONM = 3
2563 ENDIF
2564 ENDIF
2565
2566C--------------------
2567C /INCMP (OBSOLETE OPTION, incompressible)
2568C--------------------
2569 ALE%GLOBAL%INCOMP = 0
2570 IKEY=KINCMP
2571 IF(IKAD(IKEY)/=IKAD(IKEY+1))THEN
2572 ALE%GLOBAL%INCOMP=1
2573 ENDIF
2574
2575C--------------------
2576C /MADYMO (COUPLING)
2577C--------------------
2578 IF(IMADCPL/=0) CALL FRECPL(IKAD,KEY0,KMADYM)
2579
2580C--------------------
2581C /DAMP
2582C--------------------
2583 CALL FREDAMP(IKAD(0),KEY0,KDAMP,N_DAMP)
2584
2585C-----------------------
2586C /IMPL
2587C-----------------------
2588 IMPL=0
2589 CALL FREIMPL(IKAD(0),KEY0,KIMPL)
2590
2591C--------------------
2592C /FXINP (OUTPUT FILES FOR FLEXIBLE BODIES)
2593C--------------------
2594 CALL FREFXINP(IKAD(0),KEY0,KFXINP,NFXINP)
2595
2596C--------------------
2597C /EIG (EIGENPROBLEM DEACTIVATION)
2598C--------------------
2599 CALL FREEIG(IKAD(0),KEY0,KEIG,NEIGOFF)
2600
2601C--------------------
2602C /FVMBAG (REMESH)
2603C--------------------
2604 CALL FREFVBAG(IKAD(0),KEY0,KFVBAG)
2605
2606C-----------------------
2607C /STATE
2608C-----------------------
2609 CALL FRESTAT(IKAD(0),KEY0,KSTATF,SENSORS,OUTPUT)
2610
2611C-----------------------
2612C /DYNAIN
2613C-----------------------
2614 CALL FREDYNAIN(IKAD(0),KEY0,KDYNAIN,DYNAIN_DATA)
2615
2616C-----------------------
2617C /ABF (and /AABF, /BABF, /CABF, /DABF, /EABF, /FABF, /GABF, /HABF, /IABF)
2618C-----------------------
2619 ABFILE = 0
2620 NABFILE = 0
2621#ifdef DNC
2622 CALL FREABF(IKAD(0),KEY0,KABF,ABFILE,NABFILE,1)
2623 CALL FREABF(IKAD(0),KEY0,KAABF,ABFILE,NABFILE,2)
2624 CALL FREABF(IKAD(0),KEY0,KBABF,ABFILE,NABFILE,3)
2625 CALL FREABF(IKAD(0),KEY0,KCABF,ABFILE,NABFILE,4)
2626 CALL FREABF(IKAD(0),KEY0,KDABF,ABFILE,NABFILE,5)
2627 CALL FREABF(IKAD(0),KEY0,KEABF,ABFILE,NABFILE,6)
2628 CALL FREABF(IKAD(0),KEY0,KFABF,ABFILE,NABFILE,7)
2629 CALL FREABF(IKAD(0),KEY0,KGABF,ABFILE,NABFILE,8)
2630 CALL FREABF(IKAD(0),KEY0,KHABF,ABFILE,NABFILE,9)
2631 CALL FREABF(IKAD(0),KEY0,KIABF,ABFILE,NABFILE,10)
2632.AND. IF (NABFILE/=0 ABFILE(1) == 0) THEN
2633 NABFILE = NABFILE + 1
2634 ABFILE(1) = ABFILE(1) + 1
2635 ENDIF
2636#endif
2637
2638C-----------------------
2639C /THERM
2640C-----------------------
2641 CALL FRETHERMAL(IKAD(0),KEY0,KTHERMAL,GLOB_THERM)
2642
2643C-----------------------
2644C /H3D
2645C-----------------------
2646 CALL H3D_INI(H3D_DATA,KH3D,NSLASH)
2647 CALL H3D_READ(IKAD(0),KEY0,KH3D,NSLASH,H3D_DATA,SENSORS)
2648
2649C-----------------------
2650C /REPORT
2651C-----------------------
2652 IKEY=KREPORT
2653 IREPORT = 0
2654 IH3DREADER = 0
2655 IMVW = 0
2656 IMVW_REF = 0
2657 K = 0
2658 DO WHILE(IKAD(IKEY)+K/=IKAD(IKEY+1))
2659 READ(IUSC1,REC=IKAD(IKEY)+K,FMT='(7X,A,1X,A,1X,A,1X,A,19X,I10)',ERR=9990)KEY2,KEY3,KEY4,KEY5,NBC
2660 IREPORT=1
2661 IF(KEY2=='HTML')THEN
2662 IHTML = 1
2663.AND. IF(KEY3=='H3D' NSLASH(KH3D) /= 0) THEN
2664 IH3DREADER = 1
2665 IF(KEY4 =='EXT') IH3DREADER = 2
2666 ENDIF
2667 ELSEIF(KEY2=='MVW')THEN
2668 IMVW=1
2669 IF(KEY3=='REF')THEN
2670 IMVW_REF = 1
2671 K = K + 1
2672 READ(IUSC1,REC=IKAD(IKEY)+K,FMT='(5X,A)',ERR=9990)IMVW_REFPATH
2673 ELSEIF(KEY3=='ANIM')THEN
2674 IF(KEY4=='TH')THEN
2675 IMVW=1
2676 ELSEIF(KEY4=='ABF')THEN
2677 IMVW=2
2678 ENDIF
2679 ELSEIF(KEY3=='H3D')THEN
2680 IF(KEY4=='TH')THEN
2681 IMVW=3
2682 ELSEIF(KEY4=='ABF')THEN
2683 IMVW=4
2684 ENDIF
2685 ELSE
2686 !autoselect of files format
2687 IF(NSLASH(KANIM) /= 0)THEN
2688 IF(NSLASH(KTFILE) /= 0)THEN
2689 IMVW=1
2690 ELSEIF(NSLASH(KABF) /= 0)THEN
2691 IMVW=2
2692 ENDIF
2693 ELSEIF(NSLASH(KH3D) /= 0) THEN
2694 IF(NSLASH(KTFILE) /= 0)THEN
2695 IMVW=3
2696 ELSEIF(NSLASH(KABF) /= 0)THEN
2697 IMVW=4
2698 ENDIF
2699 ENDIF
2700 ENDIF
2701 ENDIF
2702 K = K + 1
2703 ENDDO
2704C========================================================================
2705 CLOSE(UNIT=IUSC1)
2706 CLOSE(UNIT=IUSC2)
2707 CALL DELETE_USER_FILE(IUSC1_FN,LEN_IUSC1_FN)
2708 CALL DELETE_USER_FILE(IUSC2_FN,LEN_IUSC2_FN)
2709
2710 IF(IERR==0) RETURN
2711 CALL ARRET(0)
2712C
2713 9990 CONTINUE
2714C
2715 CALL ANCMSG(MSGID=73,ANMODE=ANINFO,C1=KEY0(IKEY))
2716 CALL ARRET(0)
2717 RETURN
2718
2719C-----------------------------------------------
2720 1000 CONTINUE
2721 IF (IERR1/=0) THEN
2722 WRITE(IOUT,*)' ** ERROR IN MEMORY ALLOCATION WHILE READING ENGINE FILE'
2723 WRITE(ISTDO,*)' ** ERROR IN MEMORY ALLOCATION WHILE READING ENGINE FILE'
2724 CALL ARRET(2)
2725 END IF
2726C-----------------------------------------------
2727
type(alemuscl_param_) alemuscl_param
integer, parameter ncharline100
integer, parameter ncharkey

◆ fretitl()

subroutine fretitl ( character, dimension(*), intent(in) titr,
integer, dimension(*), intent(inout) iasc,
integer, intent(in) l )

Definition at line 2800 of file freform.F.

2801C-----------------------------------------------
2802C I m p l i c i t T y p e s
2803C-----------------------------------------------
2804#include "implicit_f.inc"
2805C-----------------------------------------------
2806C D u m m y A r g u m e n t s
2807C-----------------------------------------------
2808 INTEGER,INTENT(INOUT) :: IASC(*)
2809 INTEGER,INTENT(IN) :: L
2810 CHARACTER,INTENT(IN) :: TITR*(*)
2811C-----------------------------------------------
2812C L o c a l V a r i a b l e s
2813C-----------------------------------------------
2814 INTEGER I,J,LTITR
2815C-----------------------------------------------
2816C S o u r c e L i n e s
2817C-----------------------------------------------
2818 j=1
2819 ltitr=len(titr)
2820 DO i=1,l
2821 iasc(i)= ichar(titr(j:j))*65536
2822 j = j+1
2823 IF(j>ltitr) EXIT
2824 iasc(i)= iasc(i) + ichar(titr(j:j))*256
2825 j = j+1
2826 IF(j>ltitr) EXIT
2827 iasc(i)= iasc(i) + ichar(titr(j:j))
2828 j = j+1
2829 IF(j>ltitr) EXIt
2830 ENDDO
2831C-----------------------------------------------
2832 RETURN

◆ fretitl2()

subroutine fretitl2 ( character, dimension(*), intent(inout) titr,
integer, dimension(*), intent(in) iasc,
integer, intent(in) l )

Definition at line 2847 of file freform.F.

2848C-----------------------------------------------
2849C I m p l i c i t T y p e s
2850C-----------------------------------------------
2851#include "implicit_f.inc"
2852C-----------------------------------------------
2853C D u m m y A r g u m e n t s
2854C-----------------------------------------------
2855 INTEGER,INTENT(IN) :: IASC(*)
2856 INTEGER,INTENT(IN) :: L
2857 CHARACTER,INTENT(INOUT) :: TITR*(*)
2858C-----------------------------------------------
2859C L o c a l V a r i a b l e s
2860C-----------------------------------------------
2861 INTEGER I,J,LTITR
2862C-----------------------------------------------
2863C S o u r c e L i n e s
2864C-----------------------------------------------
2865 j=1
2866 ltitr=len(titr)
2867 DO i=1,l
2868 titr(j:j)=char(iasc(i)/65536)
2869 j=j+1
2870 IF(j>ltitr) EXIT
2871 titr(j:j)=char(mod(iasc(i),65536)/256)
2872 j=j+1
2873 IF(j>ltitr) EXIT
2874 titr(j:j)=char(mod(iasc(i),256))
2875 j=j+1
2876 IF(j>ltitr) EXIT
2877 ENDDO
2878C-----------------------------------------------
2879 RETURN

◆ fretitl2r()

subroutine fretitl2r ( character, dimension(*), intent(inout) titr,
dimension(*), intent(in) asc,
integer, intent(in) l )

Definition at line 2921 of file freform.F.

2922C-----------------------------------------------
2923C I m p l i c i t T y p e s
2924C-----------------------------------------------
2925#include "implicit_f.inc"
2926C-----------------------------------------------
2927C D u m m y A r g u m e n t s
2928C-----------------------------------------------
2929 my_real,INTENT(IN) :: asc(*)
2930 INTEGER,INTENT(IN) :: L
2931 CHARACTER,INTENT(INOUT) :: TITR*(*)
2932C-----------------------------------------------
2933C L o c a l V a r i a b l e s
2934C-----------------------------------------------
2935 INTEGER I,J,LTITR
2936C-----------------------------------------------
2937C S o u r c e L i n e s
2938C-----------------------------------------------
2939 j=1
2940 ltitr=len(titr)
2941 DO i=1,l
2942 titr(j:j)=char(nint(asc(i))/65536)
2943 j=j+1
2944 IF(j>ltitr) EXIT
2945 titr(j:j)=char(mod(nint(asc(i)),65536)/256)
2946 j=j+1
2947 IF(j>ltitr) EXIT
2948 titr(j:j)=char(mod(nint(asc(i)),256))
2949 j=j+1
2950 IF(j>ltitr) EXIT
2951 ENDDO
2952C-----------------------------------------------
2953 RETURN
#define my_real
Definition cppsort.cpp:32

◆ fretitlr()

subroutine fretitlr ( character, dimension(*), intent(in) titr,
dimension(*), intent(inout) asc,
integer, intent(in) l )

Definition at line 2884 of file freform.F.

2885C-----------------------------------------------
2886C I m p l i c i t T y p e s
2887C-----------------------------------------------
2888#include "implicit_f.inc"
2889C-----------------------------------------------
2890C D u m m y A r g u m e n t s
2891C-----------------------------------------------
2892 my_real,INTENT(INOUT) :: asc(*)
2893 INTEGER,INTENT(IN) :: L
2894 CHARACTER,INTENT(IN) :: TITR*(*)
2895C-----------------------------------------------
2896C L o c a l V a r i a b l e s
2897C-----------------------------------------------
2898 INTEGER I,J,LTITR
2899C-----------------------------------------------
2900C S o u r c e L i n e s
2901C-----------------------------------------------
2902 j=1
2903 ltitr=len(titr)
2904 DO i=1,l
2905 asc(i)= ichar(titr(j:j))*65536
2906 j = j+1
2907 IF(j>ltitr) EXIT
2908 asc(i)= asc(i) + ichar(titr(j:j))*256
2909 j = j+1
2910 IF(j>ltitr) EXIT
2911 asc(i)= asc(i) + ichar(titr(j:j))
2912 j = j+1
2913 IF(j>ltitr) EXIT
2914 ENDDO
2915C-----------------------------------------------
2916 RETURN

◆ ngr2usr()

integer function ngr2usr ( integer iu,
type (group_), dimension(ngrnod) igrnod,
integer ngrnod )

Definition at line 2742 of file freform.F.

2743C-----------------------------------------------
2744C M o d u l e s
2745C-----------------------------------------------
2746 USE groupdef_mod
2747C-----------------------------------------------
2748C I m p l i c i t T y p e s
2749C-----------------------------------------------
2750#include "implicit_f.inc"
2751#include "comlock.inc"
2752C-----------------------------------------------
2753C C o m m o n B l o c k s
2754C-----------------------------------------------
2755#include "units_c.inc"
2756#include "com08_c.inc"
2757C-----------------------------------------------
2758C D u m m y A r g u m e n t s
2759C-----------------------------------------------
2760 INTEGER IU,NGRNOD
2761C-----------------------------------------------
2762 TYPE (GROUP_) , DIMENSION(NGRNOD) :: IGRNOD
2763C-----------------------------------------------
2764C L o c a l V a r i a b l e s
2765C-----------------------------------------------
2766 INTEGER I, IE
2767C-----------------------------------------------
2768C S o u r c e L i n e s
2769C-----------------------------------------------
2770 IF(iu==0)THEN
2771 ngr2usr=0
2772 RETURN
2773 ENDIF
2774 DO i=1,ngrnod
2775 ie=igrnod(i)%ID
2776 IF(ie==iu)THEN
2777 ngr2usr=i
2778 RETURN
2779 ENDIF
2780 ENDDO
2781 tstop = tt
2782#include "lockon.inc"
2783 WRITE(iout,*) ' ** ERROR ** : NODE GROUP',iu,' NOT FOUND'
2784 WRITE(istdo,*) ' ** ERROR ** : NODE GROUP',iu,' NOT FOUND'
2785 ngr2usr=0
2786#include "lockoff.inc"
2787 RETURN
integer function ngr2usr(iu, igrnod, ngrnod)
Definition freform.F:2743