OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
contrl.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!|| contrl ../starter/source/starter/contrl.F
25!||--- called by ------------------------------------------------------
26!|| starter0 ../starter/source/starter/starter0.F
27!||--- calls -----------------------------------------------------
28!|| ancmsg ../starter/source/output/message/message.F
29!|| arret ../starter/source/system/arret.F
30!|| ascii_encoding_mu_letter ../starter/source/starter/ascii_encoding_mu_letter.F90
31!|| contrbe2 ../starter/source/constraints/general/rbe2/hm_read_rbe2.F
32!|| contrbe3 ../starter/source/constraints/general/rbe3/contrbe3.F
33!|| find_dt1brick_engine ../starter/source/starter/contrl.F
34!|| hm_elem_count ../starter/source/devtools/hm_reader/hm_elem_count.F
35!|| hm_get_intv ../starter/source/devtools/hm_reader/hm_get_intv.F
36!|| hm_get_string ../starter/source/devtools/hm_reader/hm_get_string.F
37!|| hm_option_count ../starter/source/devtools/hm_reader/hm_option_count.F
38!|| hm_option_next ../starter/source/devtools/hm_reader/hm_option_next.F
39!|| hm_option_read_key ../starter/source/devtools/hm_reader/hm_option_read_key.F
40!|| hm_option_start ../starter/source/devtools/hm_reader/hm_option_start.F
41!|| hm_prelce16s ../starter/source/elements/reader/hm_read_solid.F
42!|| hm_preread_node ../starter/source/elements/reader/hm_preread_node.F
43!|| hm_preread_part ../starter/source/model/assembling/hm_read_part.F
44!|| hm_preread_properties ../starter/source/properties/hm_preread_properties.F
45!|| hm_read_ale_grid ../starter/source/general_controls/ale_grid/hm_read_ale_grid.F
46!|| hm_read_ale_muscl ../starter/source/general_controls/ale_cfd/hm_read_ale_muscl.F
47!|| hm_read_ale_solver ../starter/source/general_controls/ale_cfd/hm_read_ale_solver.F
48!|| hm_read_analy ../starter/source/general_controls/computation/hm_read_analy.F
49!|| hm_read_caa ../starter/source/general_controls/computation/hm_read_caa.F
50!|| hm_read_definter ../starter/source/general_controls/default_values/hm_read_definter.F
51!|| hm_read_defshell ../starter/source/general_controls/default_values/hm_read_defshell.F
52!|| hm_read_defsolid ../starter/source/general_controls/default_values/hm_read_defsolid.f
53!|| hm_read_implicit ../starter/source/general_controls/computation/hm_read_implicit.F
54!|| hm_read_inista ../starter/source/initial_conditions/inista/hm_read_inista.F
55!|| hm_read_ioflag ../starter/source/general_controls/inputoutput/hm_read_ioflag.F
56!|| hm_read_lagmul ../starter/source/tools/lagmul/hm_read_lagmul.F
57!|| hm_read_refsta ../starter/source/loads/reference_state/refsta/hm_read_refsta.F
58!|| hm_read_sms ../starter/source/general_controls/computation/hm_read_sms.F
59!|| hm_read_sphglo ../starter/source/general_controls/computation/hm_read_sphglo.F
60!|| hm_read_spmd ../starter/source/general_controls/computation/hm_read_spmd.F
61!|| hm_read_unit ../starter/source/general_controls/computation/hm_read_unit.F
62!|| hm_read_upwind ../starter/source/general_controls/computation/hm_read_upwind.F
63!|| init_def_elem ../starter/source/modules/defaults_mod.F90
64!|| init_def_zero ../starter/source/modules/defaults_mod.F90
65!|| istr ../starter/source/tools/univ/istr.F
66!|| nbadigemesh ../starter/source/elements/ige3d/nbadigemesh.F
67!|| nbadmesh ../starter/source/model/remesh/nbadmesh.F
68!|| nbsph ../starter/source/elements/sph/nbsph.F
69!||--- uses -----------------------------------------------------
70!|| ascii_encoding_mu_letter_mod ../starter/source/starter/ascii_encoding_mu_letter.F90
71!|| defaults_mod ../starter/source/modules/defaults_mod.F90
72!|| detonators_mod ../starter/share/modules1/detonators_mod.F
73!|| format_mod ../starter/share/modules1/format_mod.F90
74!|| grp_size_mod ../starter/share/modules1/grp_size_mod.F
75!|| hm_option_read_mod ../starter/share/modules1/hm_option_read_mod.F
76!|| inivol_def_mod ../starter/share/modules1/inivol_mod.f
77!|| message_mod ../starter/share/message_module/message_mod.F
78!|| refsta_mod ../starter/share/modules1/refsta_mod.F
79!|| restmod ../starter/share/modules1/restart_mod.F
80!|| submodel_mod ../starter/share/modules1/submodel_mod.F
81!||====================================================================
82 SUBROUTINE contrl(MULTI_FVM,LSUBMODEL,IS_DYNA,DETONATORS,USER_WINDOWS,MAT_ELEM,
83 . NAMES_AND_TITLES,LIPART1,DEFAULTS,GLOB_THERM,PBLAST,OUTPUT)
84C----------------------------------------------------------
85C M o d u l e s
86C-----------------------------------------------
87 USE message_mod
88 USE multi_fvm_mod
89 USE submodel_mod
92 USE check_mod
94 USE setdef_mod
96 USE inivol_def_mod , ONLY : num_inivol
97 USE refsta_mod
98 USE ale_ebcs_mod
99 USE restmod
100 USE grp_size_mod
101 USE output_mod
103 USE alefvm_mod , only:alefvm_param
105 USE ale_mod
106 USE mat_elem_mod
108 USE bcs_mod , only : bcs
109 USE defaults_mod
110 USE format_mod
111 use glob_therm_mod
112 USE pblast_mod
113 USE output_mod , ONLY : output_
114 use ascii_encoding_mu_letter_mod, only : ascii_encoding_mu_letter
115 USE eos_param_mod , ONLY : analy_temp
116 use element_mod , only : nixs
117C-----------------------------------------------
118C I m p l i c i t T y p e s
119C-----------------------------------------------
120#include "implicit_f.inc"
121C-----------------------------------------------
122C G l o b a l P a r a m e t e r s
123C-----------------------------------------------
124#include "mvsiz_p.inc"
125C-----------------------------------------------
126C C o m m o n B l o c k s
127C-----------------------------------------------
128#include "units_c.inc"
129#include "warn_c.inc"
130#include "com01_c.inc"
131#include "com04_c.inc"
132#include "com06_c.inc"
133#include "com08_c.inc"
134#include "com09_c.inc"
135#include "com10_c.inc"
136#include "com_xfem1.inc"
137#include "intstamp_c.inc"
138#include "random_c.inc"
139#include "scr03_c.inc"
140#include "scr05_c.inc"
141#include "scr06_c.inc"
142#include "scr10_c.inc"
143#include "scr12_c.inc"
144#include "scr15_c.inc"
145#include "scr16_c.inc"
146#include "scr22_c.inc"
147#include "scr23_c.inc"
148#include "titr_c.inc"
149#include "param_c.inc"
150#include "sphcom.inc"
151#include "lagmult.inc"
152#include "fxbcom.inc"
153#include "scr14_c.inc"
154#include "remesh_c.inc"
155#include "sysunit.inc"
156#include "commandline.inc"
157#include "r2r_c.inc"
158#include "userlib.inc"
159#include "spmd_c.inc"
160#include "drape_c.inc"
161#include "inter22.inc"
162#include "boltpr_c.inc"
163#include "ige3d_c.inc"
164#include "com_engcards_c.inc"
165#include "sms_c.inc"
166C-----------------------------------------------
167C D u m m y A r g u m e n t s
168C-----------------------------------------------
169 TYPE(multi_fvm_struct), INTENT(IN) :: MULTI_FVM
170 TYPE(submodel_data) LSUBMODEL(NSUBMOD)
171 INTEGER,INTENT(IN)::IS_DYNA
172 TYPE(detonators_struct_) :: DETONATORS
173 TYPE(user_windows_), INTENT(INOUT) :: USER_WINDOWS
174 TYPE(mat_elem_), INTENT(INOUT) :: MAT_ELEM
175 TYPE(names_and_titles_),INTENT(INOUT) :: NAMES_AND_TITLES !< NAMES_AND_TITLES host the input deck names and titles for outputs
176 INTEGER,INTENT(IN) :: LIPART1 !< Number of variables of IPART
177 TYPE(defaults_), INTENT(INOUT) :: DEFAULTS !< Defaults mod
178 type (glob_therm_) ,intent(inout) :: glob_therm
179 TYPE(pblast_), INTENT(INOUT) :: PBLAST !< PBLAST load type
180 TYPE(output_),INTENT(INOUT) :: OUTPUT
181C-----------------------------------------------
182C L o c a l V a r i a b l e s
183C-----------------------------------------------
184 INTEGER I, J, N, ISFIL, IPCT, IBID,INSH,
185 . ihbe_dd,iparith,jale,jeul,
186 . iun,nshfram,jupw,imat,ig,ish3n_dd,iframe_dds,
187 . ipla_dds,npts_dd,uid,ihbe,ismstr,iplas,icpre,icstr,npt,
188 . isrot,l1,npts, nimpdisp,nimpvel,nimpacc,icr,
189 . stat,ierror,id,idx,idy,idz,nctrl,bid,nsh3nfram,ns17_old,
190 . ignore_spmd,ignore_threads,got_variable,krot,old_rsb,
191 . nrafx,nrafy,nrafz,nfunct0,ntable0,ntable1,nsensor,
192 . irfe,irfl, hm_ninter_def,nb_ams,numnusr,nperturb_hm,icr3,
193 . npyfun
194 INTEGER IARCHS(8)
195 INTEGER IS_BEGIN,SCHAR
196 INTEGER :: NPROP,NALEMAT,NEULERMAT
197 INTEGER IHBE_DS,ISST_DS,IPLA_DS,IFRAME_DS,ITET4_D,ITET10_D,ICPRE_D,IMAS_DS,ICONTROL_D,
198 . ihbe_d,ipla_d,istr_d,ithk_d,ishea_d,isst_d,
199 . ish3n_d, istra_d,npts_d,idril_d,ioffset_d,def_inter(100)
200 my_real dtini, dtx ,rbid
201 CHARACTER (LEN=NCHARLINE) :: CART
202 CHARACTER (LEN=NCHARLINE) :: XRFILE ! NCHARLINE as #define is set to 500 in Starter
203 CHARACTER (LEN=NCHARLINE) :: KEY
204 CHARACTER (LEN=NCHARLINE) :: KEY2
205 CHARACTER (LEN=NCHARLINE) :: TMPLINE
206 CHARACTER (LEN=NCHARLINE) :: LINE
207 CHARACTER (LEN=NCHARTITLE) :: TITR
208 CHARACTER (LEN=255) :: STR_NBTHREADS
209 CHARACTER MESS*40, ERRMSG*40
210 CHARACTER*3 :: LABEL_DEF,LABEL_ROT
211C-----------------------------------------------
212C OpenMP specific
213#if defined(_OPENMP)
214 INTEGER OMP_GET_THREAD_NUM, OMP_GET_NUM_THREADS,NTHREAD1
215 EXTERNAL omp_get_thread_num, omp_get_num_threads
216 CHARACTER (LEN=255) :: STR
217#endif
218 INTEGER NTHREAD_S
219 my_real :: dt_input
220C
221 INTEGER , DIMENSION(:), ALLOCATABLE :: NPLY,NSUB,NISUB
222
223 INTEGER :: NITER,IFORM
224
225 INTEGER :: LEN_TMP_NAME
226 CHARACTER(len=4096) :: TMP_NAME
227 LOGICAL :: IS_AVAILABLE
228 INTEGER :: NUMTITLE, NGRTRIA, IDUMMY, NANIM_VERS
229 INTEGER :: NALEMUSCL
230 INTEGER :: NB_INISHE,NB_INISH3,NB_INIBRI,NB_INIQUAD,
231 . nb_inibeam,nb_initruss,nb_inisprig,nb_inisphcel
232 INTEGER :: LEN_LINE
233 CHARACTER*20 UNIT_NAME
234 INTEGER IS_U_STRING
235C-----------------------------------------------
236C E x t e r n a l F u n c t i o n
237C-----------------------------------------------
238 INTEGER NBCS_LAGM
239 EXTERNAL nbcs_lagm
240C-----------------------------------------------
241C data
242C-----------------------------------------------
243 DATA s0file/' '/
244 DATA xrfile/' '/
245 DATA iun/1/
246
247C-----------------------------------------------
248C S o u r c e L i n e s
249C-----------------------------------------------
250
251C=======================================================================
252C Read title
253C=======================================================================
254 CALL hm_option_count('/TITLE', numtitle)
255 IF (numtitle > 0) THEN
256 CALL hm_option_start('/TITLE')
257 CALL hm_option_read_key(lsubmodel, option_titr = line)
258 CALL hm_get_string('MY_TITLE', line, ncharline, is_available)
259 ELSE
260 line = ' '
261 ENDIF
262! Standard output
263 WRITE(istdo,'(A)') line(1:len_trim(line))
264
265 ! Store the input deck title in Structure
266 len_line= min(len_trim(line),ltitle) ! Truncate to LTITLE
267 names_and_titles%TITLE(1:len_line)=line(1:len_line)
268
269 imot=0
270 reel=zep66
271C=======================================================================
272C UNIT SYSTEM READER
273C First option to be read in order to convert other options.
274C=======================================================================
275 WRITE(istdo,'(A)')titre(12)
276 CALL hm_option_count('/UNIT',nunit0)
277 unitab%NUNIT0 = nunit0
278c
279 CALL hm_option_count('/BEGIN',is_begin)
280
281 schar = 20
282 IF (is_begin /= 0) THEN
283 CALL hm_option_start('/BEGIN')
284 CALL hm_option_next()
285
286 CALL hm_get_intv('INVERS', invers, is_available, lsubmodel)
287 invers_src = invers
288 invers_init = invers
289
290 CALL hm_get_string('length_inputunit_code',keyli,schar,is_available)
291 CALL hm_get_string('mass_inputunit_code',keymi,schar,is_available)
292 CALL hm_get_string('time_inputunit_code',keyti,schar,is_available)
293 CALL hm_get_string('length_workunit_code',keyl,schar,is_available)
294 CALL hm_get_string('mass_workunit_code',keym,schar,is_available)
295 CALL hm_get_string('time_workunit_code',keyt,schar,is_available)
296
297 !convert into ascci format specific encoding of greek letter \mu
298 CALL ascii_encoding_mu_letter(keyli, keymi, keyti, keyl, keym, keyt)
299
300 IF(invers <= 90)THEN
301 ! /UNIT/LENGTH/[value]
302 ! /UNIT/MASS/[value]
303 ! /UNIT/TIME/[value]
304 CALL hm_option_start('/UNIT')
305 DO n=1,nunit0
306 CALL hm_option_read_key(lsubmodel,option_id = id)
307 unit_name = ''
308 CALL hm_get_string('UNIT_NAME',unit_name,2*ncharfield,is_available)
309c
310 IF(unit_name == 'LENGTH') THEN
311 CALL hm_get_string('TYPE_UNIT',keyl,2*ncharfield,is_available)
312 ENDIF
313 IF(unit_name == 'MASS') THEN
314 CALL hm_get_string('TYPE_UNIT',keym,2*ncharfield,is_available)
315 ENDIF
316 IF(unit_name == 'TIME') THEN
317 CALL hm_get_string('TYPE_UNIT',keyt,2*ncharfield,is_available)
318 ENDIF
319 ENDDO
320 ENDIF !(INVERS <= 90)
321
322 ENDIF
323 CALL hm_read_unit(unitab,lsubmodel)
324C=======================================================================
325C READING CONTROL CARDS
326C=======================================================================
327 WRITE(istdo,'(A)')titre(10)
328C-------------------------------------------------------------------
329C READING OF /SPMD
330C-------------------------------------------------------------------
331 CALL hm_read_spmd(lsubmodel)
332C
333 ignore_spmd=0
334 IF (got_ncpu ==1) THEN
335 IF (nspmd/=0) THEN
336 ignore_spmd=1
337 END IF
338 nspmd = ncpu
339 ENDIF
340C
341C thread number
342C
343 ignore_threads=0
344 got_variable=0
345#if defined(_OPENMP)
346 str = ' '
347 CALL getenv('OMP_NUM_THREADS',str)
348 nthread1=0
349C nthread1 : thread number determined by environment variable
350 READ(str,'(I10)',err=999)nthread1
351 IF(nthread1>0)THEN
352 nthread = nthread1
353 ENDIF
354 IF (got_nth ==1) THEN
355 IF (nthread/=0) THEN
356 ignore_threads=1
357 END IF
358 nthread = nth
359 ELSE
360 IF(nthread1>0)THEN
361 got_variable=1
362 END IF
363 ENDIF
364C case no -nt, no OMP_NUM_THREADS, no /SPMD
365 nthread = max(nthread,1)
366 nthread_s = nthread
367 nthread_r2r = nthread
368 CALL omp_set_num_threads(nthread_s)
369
370c else (open mp not defined)
371#elif 1
372 IF (got_nth ==1) THEN
373 IF (nthread/=0) THEN
374 ignore_threads=1
375 END IF
376 nthread = nth
377 ENDIF
378 nthread_s = 1
379#endif
380C-------------------------------------------------------------------
381C /ARCH option not defined, IARCH= IBUILTIN & Grpsiz = ARCHINFO(IBUILTIN)
382 iarch = ibuiltin
383 nvsiz = archinfo(ibuiltin,1)
384 ivector = archinfo(ibuiltin,2)
385
386 ! ---------------------------
387 ! -grp_size hidden option
388 IF(grp_size_bool) THEN
389 nvsiz = grp_size
390 ENDIF
391 ! ---------------------------
392C-------------------------------------------------------------------
393C READING OF /IOFLAG
394C-------------------------------------------------------------------
395 CALL hm_read_ioflag(lsubmodel)
396C-------------------------------------------------------------------
397C READING OF /ANALY
398C-------------------------------------------------------------------
399 ipari0= 1
400 integ8= 0
401 CALL hm_read_analy(nanaly,iparith,ipari0,lsubmodel)
402 n2d = nanaly
403C-------------------------------------------------------------------
404C READING OF /IMPLICIT
405C-------------------------------------------------------------------
406 CALL hm_read_implicit(lsubmodel)
407C-------------------------------------------------------------------
408C READING OF /AMS
409C-------------------------------------------------------------------
410 CALL hm_option_count('/AMS', nb_ams)
411 CALL hm_read_sms(lsubmodel)
412C-------------------------------------------------------------------
413C READING OF /CAA
414C-------------------------------------------------------------------
415 CALL hm_read_caa(lsubmodel)
416C-------------------------------------------------------------------
417C READING OF /RANDOM
418C-------------------------------------------------------------------
419 CALL hm_option_count('/RANDOM',nrand)
420C-------------------------------------------------------------------
421C READING OF /LAGMUL
422C-------------------------------------------------------------------
423 CALL hm_read_lagmul(lsubmodel)
424C-------------------------------------------------------------------
425 CALL hm_option_count('/PRIVATE/METADATA/FATXML',iprivate)
426 IF(iprivate > 0 ) iprivate = 1
427C-------------------------------------------------------------------
428C READING OF /STAMPING
429C-------------------------------------------------------------------
430 CALL hm_option_count('/STAMPING',istamping)
431 IF(istamping > 0 ) istamping = 1
432C-------------------------------------------------------------------
433 icrash = 0
434C-------------------------------------------------------------------
435C READING DEFAULT VALUES FOR SHELLS, SOLIDS, INTERFACES ...
436C-------------------------------------------------------------------
437!--- remove first /DEF/SOLID in src21_c.inc
438 CALL init_def_zero(defaults)
439!---- obsolet flag values fixed here
440 ipla_ds =2 ! obsolet
441 istr_d=1 ! istrain
442 ishea_d=0 ! Old hidden flag in /DEF_SHELL
443 iner_9_12 = zero
444 insh = 0 ! Old hidden flag in /DEF_SHELL
445 npts_d = -1 ! Old hidden flag in /DEF_SHELL
446C-------------------------------------------------------------------
447C READING OF SHELL PROPERTIES DEFAULT VALUES
448C-------------------------------------------------------------------
449 CALL hm_read_defshell(lsubmodel,defaults%SHELL)
450C-------------------------------------------------------------------
451C READING OF SOLID PROPERTIES DEFAULT VALUES
452C-------------------------------------------------------------------
453 CALL hm_read_defsolid(lsubmodel,defaults%SOLID)
454C----------------------------------------------
455 is17old = 1 ! To be cleaned
456C-----
457 IF(insh==1)iner_9_12 = twelve
458 IF(insh==2)iner_9_12 = sixteen
459 IF(insh==3)iner_9_12 = forty8
460 IF(insh==4)iner_9_12 = thirty
461 IF(insh==5)iner_9_12 = nine
462! default values in def_solid/def_shell
463 CALL init_def_elem(n2d,iimplicit,defaults)
464C-------------------------------------------------------------------
465C READING OF INTERFACES DEFAULT VALUES
466C-------------------------------------------------------------------
467 hm_ninter_def = 0
468 def_inter(1:100) = 0
469 CALL hm_option_count('/DEFAULT/INTER',hm_ninter_def)
470 CALL hm_read_definter(hm_ninter_def,def_inter,lsubmodel)
471 defaults%interface%DEF_INTER(1:100) = def_inter(1:100)
472C-------------------------------------------------------------------
473 CALL hm_option_count('/INTTHICK/V5',iintthick)
474 IF (iintthick > 1) THEN
475 CALL ancmsg(msgid=725,msgtype=msgerror,anmode=aninfo,i1=iintthick)
476 ENDIF
477C-------------------------------------------------------------------
478C READGING OF /SHFRAM
479C-------------------------------------------------------------------
480 ishfram = 0
481 CALL hm_option_count('/SHFRA/V4',nshfram)
482 IF (nshfram == 1) THEN
483 ishfram = 2
484 ELSEIF (nshfram > 1) THEN
485 CALL ancmsg(msgid=546,msgtype=msgerror,anmode=aninfo,i1=nshfram)
486 ENDIF
487C-------------------------------------------------------------------
488C READGING OF /SH_3NFR
489C-------------------------------------------------------------------
490 ish3nfram = 0
491C=======================================================================
492C Initialisations vs DOMDEC (Must stay after reading the control cards, because of output to STDO)
493C=======================================================================
494 IF(decneq==0) decneq = 100
495 IF(dectyp < 0) THEN
496 dectyp = - dectyp
497 edge_filtering = 0
498 ELSE
499 edge_filtering = 1
500 ENDIF
501 old_rsb=0
502 IF(dectyp == 2)THEN
503 dectyp=0
504 old_rsb=1
505 ENDIF
506 IF(dectyp==0)THEN
507 IF(nb_ams==0.AND.iimplicit==0) THEN
508 dectyp = 3
509 ELSE
510 dectyp = 5
511 END IF
512 END IF
513
514 ddnod_sms=0
515 IF(dectyp==7)THEN
516 IF(nb_ams/=0)THEN
517 dectyp = 5
518 ddnod_sms=1
519 ELSEIF(iimplicit/=0) THEN
520 dectyp = 5
521 ELSE
522 dectyp = 3
523 END IF
524 END IF
525 IF(nspmd < 1) nspmd=1
526 IF(nspmd > parasiz) nspmd=parasiz
527 IF(nthread < 1) nthread=1
528C maximum number of SMP threads equal to NTHMAX
529 IF(nthread > nthmax) nthread=nthmax
530C
531 IF (got_inspire_alm == 1)THEN
532 IF (nthread_s==1)THEN
533 WRITE(istdo,'(A,I4,A)')' .. SOLVER RUNNING ON ',nthread_s,' THREAD'
534 ELSE
535 WRITE(istdo,'(A,I4,A)')' .. SOLVER RUNNING ON ',nthread_s,' THREADS'
536 ENDIF
537 ELSE
538 IF (nthread_s==1)THEN
539 WRITE(istdo,'(A,I4,A)')' .. STARTER RUNNING ON ',nthread_s,' THREAD'
540 ELSE
541 WRITE(istdo,'(A,I4,A)')' .. STARTER RUNNING ON ',nthread_s,' THREADS'
542 ENDIF
543 ENDIF
544
545C=======================================================================
546C OPTIONS NUMBERING
547C=======================================================================
548C WRITE(ISTDO,'(/,A)')' .. OPTIONS COUNTING'
549C-------------------------------------------------------------------
550C User-Defined Nodes & Cnodes numbering
551C Check nodes within some tolerance and possibly merge nodes
552C-------------------------------------------------------------------
553 CALL cpp_nodes_count(numnusr,numcnod)
554C------
555C Pre-read Nodes & Cnodes and compute NUMNOD taking into account that some nodes may be merged.
556 CALL hm_preread_node(unitab,lsubmodel,numnusr,is_dyna) ! NUMNOD is computed here
557C------
558C numnod=0 : ask user to provide relevant input file.
559 IF(numnod==0)THEN
560 CALL ancmsg(msgid=3,msgtype=msgerror,anmode=aninfo)
561 CALL arret(2)
562 ENDIF
563C-------------------------------------------------------------------
564 isumnx = 0
565 nanim1d = 0
566 maxnx = 0
567 nanim2d = 0
568 nanim3d = 0
569 nthread_r2r = 1
570 ibid = 0
571 rbid = zero
572 npinch = 0
573 nsubdom = 0
574C---------------------------------------------------
575 CALL hm_option_count('/SUBDOMAIN',nsubdom)
576 CALL hm_option_count('/EXTERN/LINK',nr2rlnk)
577C---------------------------------------------------
578 lenmod=0
579 lenglm=0
580 lencp=0
581 lenlm=0
582 lenfls=0
583 lendls=0
584 lenvar=0
585 lenrpm=0
586 lenmcd=0
587 lenelm=0
588 lensig=0
589 lengrvi=0
590 lengrvr=0
591C--- Xfem -------------------------------------------------------
592C---
593C WARNING: NUMNOD, NUMELC, NUMELTG ==> will be changed (by xfem)
594C---
595 nlevmax = 0
596 CALL hm_option_count('/INICRACK',ninicrack)
597C---------------------------------------------------
598C COUNTING ELEMENTS
599C---------------------------------------------------
600 numelx = 0
601 numbrick = 0
602 numtetra4 = 0
603 numpenta6 = 0
604 numels10 = 0
605 numels20 = 0
606 CALL hm_elem_count('XELEM',numelx,is_dyna)
607 CALL hm_elem_count('BRICK',numbrick,is_dyna)
608 CALL hm_elem_count('TETRA4',numtetra4,is_dyna)
609 CALL hm_elem_count('PENTA6',numpenta6,is_dyna)
610 numels8 = numbrick+numtetra4+numpenta6
611C
612 CALL hm_elem_count('TETRA10',numels10,is_dyna)
613 IF (is_dyna == 0) CALL hm_elem_count('BRICK20',numels20,is_dyna)
614 CALL hm_elem_count('SHEL16',numels16,is_dyna)
615C
616C
617 numels = numels8+numels10+numels20+numels16
618C
619C Look for /DT1/BRICK & /DT1TET10 /DTTSH in RADIOSS Engine input deck
620C
621 IF(numels>0)THEN
623 END IF
624C-----
625 CALL hm_elem_count('SHELL',numelc,is_dyna)
626 IF(numelc > 0 .AND. nanaly /= 0)THEN
627 CALL ancmsg(msgid=285,msgtype=msgerror,anmode=aninfo)
628 numelc = 0
629 ENDIF
630C-----
631 CALL hm_elem_count('SH3N',numeltg,is_dyna)
632 IF(numeltg > 0 .AND. nanaly /= 0)THEN
633 CALL ancmsg(msgid=287,msgtype=msgerror,anmode=aninfo)
634 numeltg = 0
635 ENDIF
636C-----
637 CALL hm_elem_count('TRUSS' ,numelt,is_dyna)
638 CALL hm_elem_count('BEAM' ,numelp,is_dyna)
639 CALL hm_elem_count('SPRING',numelr,is_dyna)
640C-----
641 CALL hm_elem_count('RIVET',nrivet,is_dyna)
642C-----
643 numelq = 0
644 CALL hm_elem_count('QUAD',numelq,is_dyna)
645C-----
646 CALL hm_elem_count('TRIA',numeltria,is_dyna)
647 numeltg = numeltg + numeltria !2d shell + 3d tria (only one type depending on N2D flag)
648C-----
649C---------------------------------------------------
650 CALL hm_option_count('PART',npart)
651 IF(npart==0)THEN
652 CALL ancmsg(msgid=1114,
653 . msgtype=msgwarning,
654 . anmode=aninfo)
655 ENDIF
656 CALL hm_option_count('SUBSET',nsubs)
657C add 1 : for global subset
658 nsubs = nsubs+1
659C---------------------------------------------------
660 CALL hm_option_count('/THPART',nthpart)
661C---------------------------------------------------
662C LOOKING FOR /ADMESH and COUNTING ADDITIONAL NODES & ELEMENTS
663C---------------------------------------------------
664 CALL hm_option_count('/ADMESH/GLOBAL',nadmeshg)
665 CALL hm_option_count('/ADMESH/SET',nadmeshset)
666 CALL hm_option_count('/ADMESH/STATE',nadmeshstat)
667 nadmesh = nadmeshg + nadmeshset + nadmeshstat
668 numnod0 = numnod
669 numelc0 = numelc
670 numeltg0 = numeltg
671 istatcnd = 0
672 iadmerrt = 0
673 IF(nadmesh/=0)THEN
674C
675C NUMNOD, NUMELC, NUMELTG will be changed
676 CALL nbadmesh(lsubmodel,numnusr,unitab)
677 END IF
678C-----
679 IF(nspmd > 1)THEN
680C Option tests not available in SPMD (IE NSPMD> 1)
681 IF(nadmesh/=0)THEN
682 CALL ancmsg(msgid=704,
683 . msgtype=msgerror,
684 . anmode=aninfo)
685 END IF
686 END IF
687C---------------------------------------------------
688C LOOKING FOR IGE REFINEMENT and COUNTING ADDITIONAL NODES & ELEMENTS
689C---------------------------------------------------
690 numnodige0 = numnod
691 numelig3d0 = numelig3d
692 IF(nrafmax/=0)THEN
693C
694C NUMNOD, NUMELIG3D will be changed, SIXIG3D and KXIG3D too
695 CALL nbadigemesh(lsubmodel,numnusr)
696 END IF
697C---------------------------------------------------
698C MATERIALS (+1 materiau fictif ressort)
699C---------------------------------------------------
700 hm_nummat = 0
701 CALL hm_option_count('MATERIAL',hm_nummat)
702 nummat = hm_nummat + 1
703 mat_elem%NUMMAT = nummat
704C---------------------------------------------------
705C PROPERTIES
706C---------------------------------------------------
707 hm_numgeo = 0
708 CALL hm_option_count('PROPERTY',hm_numgeo)
709 numgeo = hm_numgeo
710C-----
711 CALL hm_option_count('/PLY', numply)
712 CALL hm_option_count('/DRAPE',ndrape)
713 CALL hm_option_count('/STACK',numstack)
714C---------------------------------------------------
715C TOOLS
716C---------------------------------------------------
717 CALL hm_option_count('/ACCEL', naccelm)
718C-----
719 CALL hm_option_count('/GAUGE', nbgauge)
720C-----
721 CALL hm_option_count('/ACTIV', nactiv)
722C-----
723 CALL hm_option_count('/ADMAS',nodmas)
724C-----
725 CALL hm_option_count('/CLUSTER',ncluster)
726C-----
727 CALL hm_option_count('/PYTHON_FUNCT' , npyfun)
728
729 CALL hm_option_count('/FUNCT' , nfunct0)
730
731 CALL hm_option_count('/TABLE/0', ntable0)
732 CALL hm_option_count('/TABLE/1', ntable1)
733 nfunct = nfunct0 + ntable0 + ntable1 + npyfun
734 ntable = nfunct
735C-----
736 CALL hm_option_count('/FUNC_2D', nfunc2d)
737C-----
738 iperturb = 0
739 CALL hm_option_count('/PERTURB',nperturb)
740 IF (nperturb > 0) iperturb = 1
741C-----
742 CALL hm_option_count('/SENSOR', nsensor)
743C-----
744 CALL hm_option_count('/SKEW',numskw)
745 CALL hm_option_count('/FRAME',numfram)
746C-----
747 CALL hm_option_count('TRANSFORM',ntransf)
748C---------------------------------------------------
749C LOADS
750C---------------------------------------------------
751 CALL hm_option_count('/CLOAD',nconld)
752 CALL hm_option_count('/PLOAD',npreld)
753 CALL hm_option_count('/LOAD/CENTRI',nloadc)
754 CALL hm_option_count('/LOAD/PFLUID',nloadp_f)
755 CALL hm_option_count('/LOAD/PBLAST',pblast%NLOADP_B)
756 CALL hm_option_count('/LOAD/PRESSURE',nloadp_hyd)
757C---------------------------------------------------
758C GRAVITY
759C---------------------------------------------------
760 CALL hm_option_count('/GRAV',ngrav)
761C---------------------------------------------------
762C BOUNDARY CONDITIONS
763C---------------------------------------------------
764 CALL hm_option_count('/BCS/LAGMUL',nbcslag)
765 CALL hm_option_count('/BCS/CYCLIC',nbcscyc)
766 CALL hm_option_count('/BCS',numbcs)
767 CALL hm_option_count('/NBCS',numbcsn)
768 nbcskin = numbcs - nbcslag
769 CALL hm_option_count('/BCS/WALL',bcs%NUM_WALL)
770 CALL hm_option_count('/BCS/NRF',bcs%NUM_NRF)
771C---------------------------------------------------
772C KINEMATIC CONDITIONS
773C---------------------------------------------------
774 CALL hm_option_count('/IMPDISP',nimpdisp)
775 CALL hm_option_count('/IMPVEL' ,nimpvel)
776 CALL hm_option_count('/IMPACC' ,nimpacc)
777 nfxvel = nimpdisp + nimpvel + nimpacc
778C-----
779 CALL hm_option_count('/RBODY',nrbody)
780 nrbody0 = nrbody
781 CALL hm_option_count('/RBODY/LAGMUL',nrbylag)
782 nrbykin = nrbody - nrbylag
783 CALL hm_option_count('/FXBODY',nfxbody)
784C-----
785 CALL hm_option_count('/MERGE/RBODY',nrbmerge)
786C-----
787 CALL hm_option_count('/MERGE/NODE',nb_merge_node)
788C-----
789 CALL hm_option_count('/RBE2', nrbe2)
790 CALL hm_option_count('/RBE3', nrbe3)
791C-----
792 CALL hm_option_count('/RLINK', nlink)
793C-----
794 CALL hm_option_count('/RWALL',nrwall)
795C-----
796 CALL hm_option_count('/MPC',nummpc)
797 CALL hm_option_count('/CYL_JOINT', njoint)
798 CALL hm_option_count('/GJOINT', ngjoint)
799C---------------------------------------------------
800C SEATBELT TOOLS
801C---------------------------------------------------
802 CALL hm_option_count('/SLIPRING', nslipring)
803 CALL hm_option_count('/RETRACTOR', nretractor)
804C---------------------------------------------------
805C MONITORED VOLUMES
806C---------------------------------------------------
807 CALL hm_option_count('/MONVOL', nmonvol)
808C---------------------------------------------------
809C INTERFACES
810C---------------------------------------------------
811 ninter = 0
812 hm_ninter= 0
813 CALL hm_option_count('/INTER',hm_ninter)
814C-----
815 CALL hm_option_count('/INTER/TYPE22',int22)
816 IF(int22>0)nsub22=2
817 IF(int22>0)alefvm_param%IEnabled=1 !AUTOMATICALLY ENABLING ALE FVM SCHEME FOR FSI INTER22
818C-----
819 CALL hm_option_count('/INTER/SUB',nintsub)
820 ninter = hm_ninter - nintsub
821C-----
822 CALL hm_option_count('/FRICTION',ninterfric)
823 CALL hm_option_count('/FRIC_ORIENT',nfric_orient)
824C---------------------------------------------------
825 CALL hm_option_count('/DAMP',ndamp)
826C---------------------------------------------------
827 CALL hm_option_count('/PRELOAD',npreload) !Bolt preloading
828C---------------------------------------------------
829 CALL hm_option_count('/sect',NSECT)
830C---------------------------------------------------
831C---------------------------------------------------
832C Box, groups, lines, surfaces, sets
833C---------------------------------------------------
834 CALL HM_OPTION_COUNT('/box' ,NBBOX)
835 CALL HM_OPTION_COUNT('/surf',NSURF)
836 CALL HM_OPTION_COUNT('/line' ,NSLIN)
837 CALL HM_OPTION_COUNT('/grnod' ,NGRNOD )
838 CALL HM_OPTION_COUNT('/grbric',NGRBRIC)
839 CALL HM_OPTION_COUNT('/grquad',NGRQUAD)
840 CALL HM_OPTION_COUNT('/grpart',NGRPART)
841 CALL HM_OPTION_COUNT('/grshel',NGRSHEL)
842 CALL HM_OPTION_COUNT('/grsh3n',NGRSH3N)
843 CALL HM_OPTION_COUNT('/grtria',NGRTRIA)
844 NGRSH3N = NGRSH3N + NGRTRIA ! 3D or 2D (same buffer)
845 CALL HM_OPTION_COUNT('/grtrus',NGRTRUS)
846 CALL HM_OPTION_COUNT('/grbeam',NGRBEAM)
847 CALL HM_OPTION_COUNT('/grspri',NGRSPRI)
848 NSETS = 0
849 CALL HM_OPTION_COUNT('/set',NSETS)
850 NGPE = NGRNOD + NGRBRIC + NGRQUAD + NGRSHEL + NGRSH3N + NGRTRUS + NGRBEAM + NGRSPRI + NGRPART
851C---------------------------------------------------
852C Initial conditions
853C---------------------------------------------------
854 CALL HM_OPTION_COUNT('/inivel',HM_NINVEL)
855 NINVEL = HM_NINVEL
856C-----
857 CALL HM_OPTION_COUNT('/refsta',IREFSTA)
858 IS_REFSTA = .FALSE.
859 IF(IREFSTA > 0)IS_REFSTA = .TRUE.
860C-----
861 CALL HM_OPTION_COUNT('/xref',NXREF)
862C-----
863 CALL HM_OPTION_COUNT('/eref',NEREF)
864C
865C---- READING OF /INISTA
866 CALL HM_READ_INISTA(S0FILE, ISIGI, IOUTP_FMT, IROOTYY_R, LSUBMODEL)
867C
868 IRFE=IRFORM/5
869 IRFL=IRFORM-5*IRFE
870 IRFORM=5*IRFE+IRFL
871 IF (IRFORM /= 12) THEN
872 CALL ANCMSG(MSGID=636,MSGTYPE=MSGWARNING,ANMODE=ANINFO_BLIND_1)
873 IRFORM = 12
874 ENDIF
875C
876C---- READING OF /REFSTA
877 CALL HM_READ_REFSTA(LSUBMODEL, XRFILE)
878C-----
879 CALL HM_OPTION_COUNT('/inigrav',NINIGRAV)
880C-----
881 CALL HM_OPTION_COUNT('/inimap1d', NINIMAP1D)
882 CALL HM_OPTION_COUNT('/inimap2d', NINIMAP2D)
883C-----
884 CALL HM_OPTION_COUNT('/inivol' ,NUM_INIVOL)
885C---------------------------------------------------
886C Thermal FE options
887C---------------------------------------------------
888 CALL HM_OPTION_COUNT('/initemp' ,GLOB_THERM%NINTEMP)
889 CALL HM_OPTION_COUNT('/imptemp' ,GLOB_THERM%NIMTEMP)
890 CALL HM_OPTION_COUNT('/impflux' ,GLOB_THERM%NIMPFLUX)
891 CALL HM_OPTION_COUNT('/convec' ,GLOB_THERM%NCONVEC)
892 CALL HM_OPTION_COUNT('/radiation',GLOB_THERM%NRADIA)
893C---------------------------------------------------
894C SPH
895C---------------------------------------------------
896 CALL HM_OPTION_COUNT('/sphcel',NUMSPH)
897
898 NSELSP = 0
899 CALL HM_OPTION_COUNT('/sphbcs',NSPCOND)
900 NSPHSYM= 0
901 MAXPJET= 0
902C
903c call NBSPH only once NSPMD is known in order to compute NSPHRES=NSPHRES*NSPMD to prepare NSPHRES by proc
904c for inlets treatment in SPMD
905c NSPHRES is the global number of SPH reserve
906C NBSPH computes NSPHIO & NSPHRES :
907 CALL NBSPH(LSUBMODEL)
908C
909C add NSPHRES number of SPH reserve for inlet
910 NUMNOD=NUMNOD+NSPHRES
911 NUMSPH=NUMSPH+NSPHRES
912C---------------------------------------------------
913C MADYMO
914C---------------------------------------------------
915 NEXMAD =0
916 NCONX =0
917 CALL HM_OPTION_COUNT('/madymo/exfem', NEXMAD)
918 CALL HM_OPTION_COUNT('/madymo/link', NCONX)
919 IF (NCONX > 0) CALL ANCMSG(MSGID=2023, MSGTYPE=MSGERROR, ANMODE=ANINFO)
920C---------------------------------------------------
921 NEIG = 0
922 CALL HM_OPTION_COUNT('/eig',NEIG)
923 IF (NEIG>0) IPARI0 = 0
924C---------------------------------------------------
925 NFLOW = 0
926 CALL HM_OPTION_COUNT('/bem/flow', NFLOW)
927 IDUMMY = 0
928 CALL HM_OPTION_COUNT('/bem/daa', IDUMMY)
929 NFLOW = NFLOW + IDUMMY
930C---------------------------------------------------
931C DFS, ALE, EULER
932C---------------------------------------------------
933 FLG_FSI = 0
934 ALE%GLOBAL%IS_BOUNDARY_MATERIAL = .FALSE.
935C-----
936 CALL HM_OPTION_COUNT('/ebcs',NEBCS)
937C---------------------------------------------------
938! Counting /DFS
939C---------------------------------------------------
940 CALL HM_OPTION_COUNT('/dfs/detpoin',DETONATORS%N_DET_POINT)
941 CALL HM_OPTION_COUNT('/dfs/detline',DETONATORS%N_DET_LINE)
942 CALL HM_OPTION_COUNT('/dfs/wav_sha',DETONATORS%N_DET_WAVE_SHAPER)
943 CALL HM_OPTION_COUNT('/dfs/detplan',DETONATORS%N_DET_PLANE)
944 CALL HM_OPTION_COUNT('/dfs/detcord',DETONATORS%N_DET_CORD)
945 DETONATORS%N_DET=DETONATORS%N_DET_POINT
946 . +DETONATORS%N_DET_LINE
947 . +DETONATORS%N_DET_WAVE_SHAPER
948 . +DETONATORS%N_DET_PLANE
949 . +DETONATORS%N_DET_CORD
950C---------------------------------------------------
951! /DFS/LASER
952C---------------------------------------------------
953 NLASER = 0
954 CALL HM_OPTION_COUNT('/dfs/laser',NLASER)
955C---------------------------------------------------
956! DETECT ALE OR EULER FRAMEWORK
957C---------------------------------------------------
958 CALL HM_OPTION_COUNT('/ale/mat',NALEMAT)
959 CALL HM_OPTION_COUNT('/euler/mat',NEULERMAT)
960 IF(NALEMAT > 0) ALE%GLOBAL%IS_DEFINED_ALE = 1
961 IF(NEULERMAT > 0)ALE%GLOBAL%IS_DEFINED_EULER = 1
962 CALL HM_OPTION_COUNT('/prop', NPROP)
963 DO I=1,NPROP
964 CALL HM_OPTION_START('/prop')
965 CALL HM_OPTION_NEXT()
966 CALL HM_GET_INTV('iale',JALE,IS_AVAILABLE,LSUBMODEL)
967 IF(JALE == 1) ALE%GLOBAL%IS_DEFINED_ALE = 1
968 IF(JALE == 2) ALE%GLOBAL%IS_DEFINED_EULER = 1
969.AND. IF(ALE%GLOBAL%IS_DEFINED_EULER == 1 ALE%GLOBAL%IS_DEFINED_EULER == 1)EXIT
970 ENDDO
971 JEUL = ALE%GLOBAL%IS_DEFINED_EULER ! =1 : if /EULER/MAT or /PROP/SOLID (IALE=2) is defined within the input file
972 JALE = ALE%GLOBAL%IS_DEFINED_ALE ! =1 : if /ALE/MAT or /PROP/SOLID (IALE=1) is defined within the input file
973 LVEUL=32
974 IF(INTEG8==1)LVEUL=52
975C---------------------------------------------------
976 NALEBCS = 0
977 CALL HM_OPTION_COUNT('/ale/bcs', NALEBCS)
978 IF(ALE%GLOBAL%ICAA == 1) ALE%GRID%NWALE = -1
979 DT_INPUT = ZERO
980 !********************************
981 ! /ALE/GRID: ALE grid formulation
982 !********************************
983 CALL HM_READ_ALE_GRID(DT_INPUT, ALE%GRID%ALPHA, ALE%GRID%GAMMA, ALE%GRID%VGX, ALE%GRID%VGY, ALE%GRID%VGZ,
984 . VOLMIN, LSUBMODEL, UNITAB)
985
986 !*******************************************************************
987 ! /ALE/MUSCL: activation of second order methods for LAW51 or LAW151
988 !*******************************************************************
989 CALL HM_READ_ALE_MUSCL(LSUBMODEL, UNITAB)
990
991 !************************
992 ! /ALE/LINK/VEL: counting
993 !************************
994 CALL HM_OPTION_COUNT('/ale/link/vel', NALELK)
995
996 !*****************
997 ! /ALE/SOLVER/FINT
998 !*****************
999 CALL HM_READ_ALE_SOLVER(LSUBMODEL, UNITAB, ALE%GLOBAL%ICAA, ALE%GLOBAL%ISFINT)
1000
1001 !********
1002 ! /UPWIND
1003 !********
1004 CALL HM_READ_UPWIND(JUPW, ALE%UPWIND%UPWMG, ALE%UPWIND%UPWOG, ALE%UPWIND%UPWSM, LSUBMODEL, UNITAB)
1005C---------------------------------------------------
1006C ENGINE OPTIONS READ IN THE STARTER
1007C---------------------------------------------------
1008 CALL HM_OPTION_COUNT('/run',NRUN_ENG)
1009 CALL HM_OPTION_COUNT('/anim',NANIM_ENG)
1010 CALL HM_OPTION_COUNT('/tfile',NTFILE_ENG)
1011 CALL HM_OPTION_COUNT('/rfile',NRFILE_ENG)
1012 CALL HM_OPTION_COUNT('/dt',NDT_ENG)
1013 CALL HM_OPTION_COUNT('/stop',NSTOP_ENG)
1014 CALL HM_OPTION_COUNT('/vers',NVERS_ENG)
1015 NGINE=NRUN_ENG+NANIM_ENG+NTFILE_ENG+NRFILE_ENG+NDT_ENG+NSTOP_ENG+NVERS_ENG
1016C---------------------------------------------------
1017 NDSOLV=0
1018C----------------------------------------------------------
1019C Anim version 5 non encore supporte
1020 ANIM_VERS = 44
1021 NANIM_VERS = 0
1022 CALL HM_OPTION_COUNT('/anim/vers',NANIM_VERS)
1023 IF (NANIM_VERS > 0) THEN
1024 CALL HM_OPTION_START('/anim/vers')
1025 CALL HM_OPTION_NEXT()
1026 CALL HM_GET_INTV('anim_vers', ANIM_VERS, IS_AVAILABLE, LSUBMODEL)
1027 ENDIF
1028C=======================================================================
1029C Some initializations ... (some flags / values need a 1st pre-reading of some options)
1030C=======================================================================
1031 IFORM8 = 2
1032 DTINI = ZERO
1033 DTFAC = ZERO
1034 DTHIS = ZERO
1035 DO I = 1,10
1036 DTABF(I) = EP30
1037 DTABFWR(I) = EP30
1038 ENDDO
1039 DTMIN = ZERO
1040 IHSH = 0
1041 DO I = 1,9
1042 DTHIS1(I)= 0
1043 ENDDO
1044C----------------------------------------------------------
1045C solids with rotation
1046C----------------------------------------------------------
1047 KROT = 0
1048 CALL HM_OPTION_COUNT('/inivel/node',I)
1049 IF(I > 0)KROT=1
1050 IRODDL=MIN(1,NUMELC+NUMELP+NRBODY+NUMELR+NUMELTG+NGJOINT+NUMMPC+NFXBODY+NUMELX+KROT)
1051 IRODDL0 = 0
1052 IISROT = 0
1053 !for SIN initialization and IN allocation in lectur.F
1054 CALL HM_OPTION_START('material')
1055 DO I = 1, HM_NUMMAT
1056 MAT_NUMBER = I
1057 CALL HM_OPTION_READ_KEY(LSUBMODEL,KEYWORD2 = KEY)
1058 IF ((KEY(1:5) == 'law13.AND.' KEY(1:6) /= 'law130.AND.'
1059 . KEY(1:6) /= 'law131.AND.' KEY(1:6) /= 'law132.AND.'
1060 . KEY(1:6) /= 'law133.AND.' KEY(1:6) /= 'law134.AND.'
1061 . KEY(1:6) /= 'law135.AND.' KEY(1:6) /= 'law136.AND.'
1062 . KEY(1:6) /= 'law137.AND.' KEY(1:6) /= 'law138.AND.'
1063 . KEY(1:6) /= 'law139' )
1064.OR. . KEY(1:5) == 'rigid') IRODDL0 = 1
1065 IF (KEY(1:5) == 'law68.OR.' KEY(1:5) == 'cosse') IISROT = 1
1066 ENDDO
1067C--------------------------------------------
1068C PRE-READ OF Prop IDS for triangles SH3N6 & solid rotations
1069C PRE-READ OF Prop IDS , PARTS & SOLIDSfor sol to SPH
1070C--------------------------------------------
1071 ALLOCATE(IGEO(NPROPGI*NUMGEO),STAT=stat)
1072 IF (STAT /= 0) CALL ANCMSG(MSGID=268,ANMODE=ANINFO,MSGTYPE=MSGERROR,C1='igeo')
1073 IGEO=0
1074 NUMELTG6 = 0
1075 NSPHSOL = 0
1076 ALLOCATE(NSUB (NUMGEO + NUMSTACK) ,STAT=stat)
1077 ALLOCATE(NISUB(NUMGEO + NUMSTACK) ,STAT=stat)
1078 ALLOCATE(NPLY (NUMGEO + NUMSTACK) ,STAT=stat)
1079c
1080 CALL HM_PREREAD_PROPERTIES(IGEO,NSPHSOL,NPLY,NSUB,NISUB,LSUBMODEL,DEFAULTS)
1081
1082.AND. IF(NSPHSOL/=0NUMELS8/=0)THEN
1083 ALLOCATE(IPART(LIPART1*NPART),STAT=stat)
1084 IF (STAT /= 0) CALL ANCMSG(MSGID=268,ANMODE=ANINFO,MSGTYPE=MSGERROR,C1='ipart')
1085 IPART=0
1086 CALL HM_PREREAD_PART(IPART,IGEO,LSUBMODEL)
1087C
1088 ALLOCATE(IXS(NIXS*NUMELS8),STAT=stat)
1089 IF (STAT /= 0) CALL ANCMSG(MSGID=268,ANMODE=ANINFO,MSGTYPE=MSGERROR,C1='ipart')
1090 CALL HM_PRELCE16S(IPART,IGEO,IXS,NSPHSOL,LSUBMODEL,IS_DYNA)
1091C
1092 IREST_MSELT=1
1093C
1094 ENDIF
1095 NUMNOD=NUMNOD+NSPHSOL
1096 NUMSPH=NUMSPH+NSPHSOL
1097C-----
1098 IF(NUMSPH/=0)THEN
1099 CALL HM_READ_SPHGLO(LSUBMODEL)
1100 ENDIF
1101C----------------------------------------------------------
1102 CALL CONTRBE2(ICR,LSUBMODEL)
1103 CALL CONTRBE3(ICR3,LSUBMODEL)
1104.OR..OR. IF(IISROT==1ICR>0ICR3>0)IRODDL = 1
1105C----------------------------------------------------------
1106 CALL HM_OPTION_COUNT('/userwi',USER_WINDOWS%HAS_USER_WINDOW)
1107 NCPRI=1
1108 IF(DTINI==ZERO)DTINI=EP06
1109 IF(VOLMIN==ZERO)VOLMIN=-EP20
1110 DT2OLD=DTINI/ONEP1
1111 TT=ZERO
1112 DT1=ZERO
1113 DT2=ZERO
1114C
1115 T1S= ZERO
1116 DT2S=ZERO
1117C
1118 DTX=ZERO
1119 TSTOP=ZERO
1120 OUTPUT%DTANIM = ZERO
1121 OUTPUT%TANIM=ZERO
1122 OUTPUT%TANIM_STOP = EP20
1123 DTOUTP = ZERO
1124 TOUTP=ZERO
1125 THIS=ZERO
1126 TABFIS=ZERO
1127 TABFWR=ZERO
1128 ECONTV = ZERO
1129 OUTPUT%TH%WFEXT = ZERO
1130 REINT = ZERO
1131 UREINT = ZERO
1132 ECONTD = ZERO
1133 ECONT_CUMU = ZERO
1134
1135 IRUN=0
1136 IGER=0
1137 IANIM=0
1138 IH3D=0
1139C
1140 DO I = 1,9
1141 THIS1(I)= 0
1142 ENDDO
1143C
1144 N2D = NANALY
1145.AND. IF(DTFAC==ZERON2D/=0)DTFAC=0.67 !0.67 => 0.670000016689301 !ZEP67 => 0.670000000000000
1146.AND. IF(DTFAC==ZERON2D==0)DTFAC=0.90 !0.90 => 0.899999976158142 !ZEP9 => 0.900000000000000
1147C=======================================================================
1148C Opening of some input files (.sty, etc...)
1149C=======================================================================
1150.OR. IF(ISIGI==1ISIGI==2) THEN
1151C- Reading file S00 deleted
1152.OR..OR. ELSEIF(ISIGI==3ISIGI==4ISIGI==5) THEN
1153C- Reading file y00/ynn
1154 IF(S0FILE==' ') THEN
1155 ISIGI=-ISIGI
1156 ELSE
1157 J = 0
1158 IF(IROOTYY_R==2)THEN
1159 DO I=1,ncharline
1160 IF(S0FILE(I:I)/=' ')J = J + 1
1161 ENDDO
1162 N = J - 3
1163 TMP_NAME=INFILE_NAME(1:INFILE_NAME_LEN)//S0FILE(1:len_trim(S0FILE))
1164 LEN_TMP_NAME = INFILE_NAME_LEN+len_trim(S0FILE)
1165 IF(S0FILE(N:N)=='y')THEN
1166 OPEN(UNIT=IIN4,FILE=TMP_NAME(1:LEN_TMP_NAME),ACCESS='sequential',FORM='formatted',STATUS='old')
1167
1168 TMP_NAME=INFILE_NAME(1:INFILE_NAME_LEN)//S0FILE(1:N)//'000'
1169 LEN_TMP_NAME = INFILE_NAME_LEN+N+3
1170 OPEN(UNIT=IIN5,FILE=TMP_NAME(1:LEN_TMP_NAME),ACCESS='sequential',FORM='formatted',STATUS='old')
1171 ELSE
1172 OPEN(UNIT=IIN4,FILE=TMP_NAME(1:LEN_TMP_NAME),ERR=100,ACCESS='sequential',FORM='formatted',STATUS='old')
1173 CALL ANCMSG(MSGID=169,MSGTYPE=MSGERROR,ANMODE=ANINFO,C1=S0FILE)
1174100 CALL ANCMSG(MSGID=2062,MSGTYPE=MSGERROR,ANMODE=ANINFO,C1=S0FILE)
1175 ENDIF
1176 ELSE
1177 J = 0
1178 I = 1
1179 DO WHILE(S0FILE(I:I)/=' ')
1180 J = J + 1
1181 I = I + 1
1182 ENDDO
1183 N = J-3
1184 TMP_NAME=INFILE_NAME(1:INFILE_NAME_LEN)//S0FILE(1:len_trim(S0FILE))
1185 LEN_TMP_NAME = INFILE_NAME_LEN+len_trim(S0FILE)
1186 IF(S0FILE(N:N+4)=='.sty')THEN
1187 OPEN(UNIT=IIN4,FILE=TMP_NAME(1:LEN_TMP_NAME),ACCESS='sequential',FORM='formatted',STATUS='old')
1188
1189 TMP_NAME=INFILE_NAME(1:INFILE_NAME_LEN)//S0FILE(1:N-6)//'_0000.sty'
1190 LEN_TMP_NAME = INFILE_NAME_LEN+N-6+9
1191 OPEN(UNIT=IIN5,FILE=TMP_NAME(1:LEN_TMP_NAME),ACCESS='sequential',FORM='formatted',STATUS='old')
1192 ELSE
1193 OPEN(UNIT=IIN4,FILE=TMP_NAME(1:LEN_TMP_NAME),ERR=200,ACCESS='sequential',FORM='formatted',STATUS='old')
1194 CALL ANCMSG(MSGID=169,MSGTYPE=MSGERROR,ANMODE=ANINFO,C1=S0FILE)
1195200 CALL ANCMSG(MSGID=2062,MSGTYPE=MSGERROR,ANMODE=ANINFO,C1=S0FILE)
1196 ENDIF
1197 ENDIF
1198 ENDIF
1199 ENDIF
1200C---------------------------------------------------
1201C COUNT /INI CARDS READ BY HM_READER
1202C---------------------------------------------------
1203 CALL HM_OPTION_COUNT('/inishe', NB_INISHE)
1204 CALL HM_OPTION_COUNT('/inish3', NB_INISH3)
1205 CALL HM_OPTION_COUNT('/inibri', NB_INIBRI)
1206 CALL HM_OPTION_COUNT('/iniqua', NB_INIQUAD)
1207 CALL HM_OPTION_COUNT('/inibeam', NB_INIBEAM)
1208 CALL HM_OPTION_COUNT('/initruss', NB_INITRUSS)
1209 CALL HM_OPTION_COUNT('/inispri', NB_INISPRIG)
1210 CALL HM_OPTION_COUNT('/inisphcel', NB_INISPHCEL)
1211
1212.AND. IF(ISIGI==0
1213 . (NB_INISHE+NB_INISH3
1214 . +NB_INIBRI+NB_INIQUAD
1215 . +NB_INIBEAM+NB_INITRUSS
1216 . +NB_INISPRIG+NB_INISPHCEL)/=0) ISIGI=-3
1217C=======================================================================
1218C Writing to 0000.out FILE
1219C=======================================================================
1220 WRITE (IOUT,'(a)') TRIM(NAMES_AND_TITLES%TITLE)
1221 WRITE (IOUT,'(//a/a/,(a,1pg20.13))')TITRE(110),TITRE(111)
1222 WRITE (IOUT,'(a,i10)') TITRE(117)(1:57),IPRI,
1223 . TITRE(120)(1:57),INVERS_SRC
1224 WRITE (IOUT,'(a,i10)')
1225 . ' nsubs: number of subsets. . . . . . . . . . . . . .',
1226 . NSUBS,
1227 . ' npart: number of parts. . . . . . . . . . . . . . .',
1228 . NPART
1229 WRITE (IOUT,'(a,i10)') TITRE(125)(1:57),NUMMAT-1,
1230 . TITRE(135)(1:57),NUMGEO,
1231 . TITRE(126)(1:57),NUMNOD,TITRE(127)(1:57),NUMSKW,
1232 . TITRE(128)(1:57),NUMBCS
1233 IF (NALEBCS /= 0)
1234 . WRITE (IOUT,'(a,i10)') TITRE(189)(1:57), NALEBCS
1235 WRITE (IOUT,'(a,i10)')
1236 . ' numfram: number of reference frames . . . . . . . . .',
1237 . NUMFRAM
1238 WRITE (IOUT,'(a,i10)')
1239 . TITRE(131)(1:57),NUMELQ ,
1240 . TITRE(191)(1:57),NUMELTRIA,
1241 . TITRE(132)(1:57),NUMELS ,
1242 . TITRE(133)(1:57),NUMELC ,
1243 . TITRE(134)(1:57),NUMELT ,
1244 . TITRE(136)(1:57),NUMELP ,
1245 . TITRE(137)(1:57),NUMELR ,
1246 . TITRE(180)(1:57),NUMELTG-NUMELTRIA,
1247 . TITRE(182)(1:57),NUMELX ,
1248 . TITRE(186)(1:57),NUMELIG3D
1249 WRITE (IOUT,'(a,i10)')
1250 .' numsph : number of smooth particles(sph cells) . . .',
1251 . NUMSPH
1252 WRITE (IOUT,'(a,i10)')
1253 .' nsphbcs: number of sph symmetry conditions. . . . . .',
1254 . NSPCOND
1255 WRITE (IOUT,'(a,i10)')
1256 .' nsphio : number of sph inlet/outlet conditions. . . .',
1257 . NSPHIO
1258 IF(NSPHRES/=0)THEN
1259 WRITE (IOUT,'(a,/,a,i10)')
1260 .' nsphres:number of particles from sph reserves among numsph,',
1261 .' number of nodes from sph reserves among numnod. . .',
1262 . NSPHRES
1263 ENDIF
1264 IF(NSPHSOL/=0)THEN
1265 WRITE (IOUT,'(a,/,a,i10)')
1266 .' nsphsol:number of particles & nodes created from solids .',
1267 .' (among numsph & numnod) . . . . . . . . . . . . .',
1268 . NSPHSOL
1269 ENDIF
1270 WRITE (IOUT,'(/(a,i10))') TITRE(138)(1:57),NFUNCT,
1271 .' ngrav: number of gravity loads . . . . . . . . . . .',
1272 .NGRAV,
1273 .' nfunc2d: number of user 2d functions . . . . . . . .',
1274 .NFUNC2D,
1275 .' ninigrv:number of initial gravity loads . . . . . . .',
1276 .NINIGRAV,
1277 .' nconld: number of concentrated loads. . . . . . . . .',
1278 .NCONLD,
1279 .' ninvel: number of initial velocities. . . . . . . . .',
1280 .NINVEL,
1281 .' npreld: number of pressure loads. . . . . . . . . . .',
1282 .NPRELD,
1283 .' ninimap1d: number of initial 1d mapping.. . . . . . .',
1284 .NINIMAP1D,
1285 .' ninimap2d: number of initial 2d mapping.. . . . . . .',
1286 .NINIMAP2D
1287 IF(NPRELOAD>0) THEN
1288 WRITE (IOUT,'(a,i10)')
1289 . ' npreload: number of bolt preloadings. . . . . . . . .',
1290 . NPRELOAD
1291 ENDIF
1292 IF(DETONATORS%N_DET > 0)THEN
1293 WRITE (IOUT,'(/(a,i10))') TITRE(141)(1:57),DETONATORS%N_DET_POINT,
1294 . TITRE(171)(1:57),DETONATORS%N_DET_LINE,
1295 . TITRE(172)(1:57),DETONATORS%N_DET_WAVE_SHAPER,
1296 . TITRE(187)(1:57),DETONATORS%N_DET_CORD,
1297 . TITRE(188)(1:57),DETONATORS%N_DET_PLANE
1298 ENDIF
1299 IF(NLASER > 0) WRITE (IOUT,'((a,i10))') TITRE(178)(1:57),NLASER
1300 WRITE (IOUT,'(4x,a,i10)')
1301 . 'number of accelerometers. . . . . . . . . . . . . . .',
1302 . NACCELM,
1303 . 'number of sensors . . . . . . . . . . . . . . . . . .',
1304 . NSENSOR,
1305 . 'number of gauges. . . . . . . . . . . . . . . . . . .',
1306 . NBGAUGE
1307 WRITE (IOUT,'(a,i10)') TITRE(146)(1:57),NINTER,
1308 . TITRE(147)(1:57),NRWALL,TITRE(148)(1:57),NRBODY,
1309 .' nfxbody: number of flexible bodies. . . . . . . . . .',
1310 .NFXBODY,
1311 . TITRE(149)(1:57),NCONX,
1312 . TITRE(150)(1:57),NODMAS,TITRE(183)(1:57),NIMPDISP,
1313 . TITRE(184)(1:57),NIMPVEL,TITRE(185)(1:57),NIMPACC,
1314 . TITRE(152)(1:57),NRIVET,TITRE(153)(1:57),NSECT,
1315 . TITRE(155)(1:57),NJOINT
1316C
1317 IF(NINTERFRIC > 0) WRITE (IOUT,'(a,i10)') TITRE(190)(1:57),NINTERFRIC
1318 IF(NALELK>0)WRITE(IOUT,'(a,i10)')
1319 .' nalelk: number of ale links. . . . . . . . . . . . . ',
1320 .NALELK
1321 WRITE (IOUT, 5051) NACTIV
1322 WRITE (IOUT, 5052) NDAMP
1323 WRITE (IOUT, 5053) NGJOINT
1324 WRITE (IOUT, 5054) NUMMPC
1325 WRITE (IOUT, 5050) NR2RLNK
1326 WRITE (IOUT, 5055) NSUBDOM
1327 WRITE (IOUT,5000)NVOLU+NMONVOL
1328 WRITE(IOUT,'(a,i10)')
1329 .' neig: number of eigen and static modes problems . .',
1330 .NEIG
1331 WRITE(IOUT,'(a,i10)')
1332 .' nbem: number of bem solved problems . . . . . . . .',
1333 .NFLOW
1334 WRITE(IOUT,'(a,i10)')
1335 .' nrbe2: number of rbe2 rigid elements . . . . . . . .',
1336 .NRBE2
1337 WRITE(IOUT,'(a,i10)')
1338 .' nrbe3: number of rbe3 constraint elements . . . . .',
1339 .NRBE3
1340 WRITE (IOUT,'(2a/a,i10)')' initial stress file =',TRIM(S0FILE),
1341 . ' flag isigi. . .',
1342 . ISIGI
1343C
1344 IF (IREFSTA/=0) THEN
1345 WRITE (IOUT,'(2a/a,i10/a,i10)')
1346 . ' reference metric file =',XRFILE,
1347 . ' flag irefsta. .',
1348 . IREFSTA,
1349 . ' number of steps , nitrs. .',
1350 . NITRS
1351 ENDIF
1352
1353 IF(JALE+JEUL/=0)THEN
1354 WRITE(IOUT,'(a,i10)')' isfint: ale/euler momentum integration formulation. .',ALE%GLOBAL%ISFINT
1355 ENDIF
1356 IF(ALE%GLOBAL%ICAA==1)THEN
1357 WRITE(IOUT,5380)
1358 END IF
1359 IF(JALE/=0)THEN
1360 WRITE (IOUT,5100)ALE%GRID%NWALE
1361 SELECT CASE (ALE%GRID%NWALE)
1362 CASE(0);WRITE (IOUT,5199) ALE%GRID%ALPHA,ALE%GRID%GAMMA,ALE%GRID%VGX,ALE%GRID%VGY,ALE%GRID%VGZ,VOLMIN
1363 CASE(1);WRITE (IOUT,5200) ALE%GRID%ALPHA,VOLMIN
1364 CASE(2);WRITE (IOUT,5300) DT_INPUT, ALE%GRID%ALPHA,ALE%GRID%GAMMA,ALE%GRID%VGX,ALE%GRID%VGY,VOLMIN
1365 CASE(3);WRITE (IOUT,5350)
1366 CASE(4);WRITE (IOUT,5351) ALE%GRID%ALPHA,ALE%GRID%GAMMA,ALE%GRID%VGX,ALE%GRID%VGY
1367 CASE(5);WRITE (IOUT,5353) ALE%GRID%ALPHA,NINT(ALE%GRID%VGX)
1368 CASE(6);WRITE (IOUT,5354)
1369 CASE(7);
1370 LABEL_DEF = ' no'
1371 IF(INT(ALE%GRID%VGX) == 1)LABEL_DEF = 'yes'
1372 LABEL_ROT = ' no'
1373 IF(INT(ALE%GRID%VGY) == 1)LABEL_ROT = 'yes'
1374 WRITE (IOUT,5355) LABEL_DEF,LABEL_ROT,ALE%GRID%ALPHA,ALE%GRID%GAMMA
1375 END SELECT
1376 ENDIF
1377
1378 IF(ALEFVM_Param%ISOLVER /= 0)ALEMUSCL_Param%IALEMUSCL=0 !muscl not compatible with FVM solver for int22
1379 CALL HM_OPTION_COUNT('/ale/muscl', NALEMUSCL)
1380 IF(ALE%UPWIND%UPWSM/=ONE)THEN
1381.OR. IF(NALEMUSCL>0 ALEMUSCL_Param%IALEMUSCL>0)THEN
1382 NALEMUSCL=0
1383 ALEMUSCL_Param%IALEMUSCL=0
1384 !ignore muscl & use upwsm3 (backward compatibility)
1385 !double check engine file with /ALE/MUSCL/OFF
1386 ENDIF
1387 ENDIF
1388
1389 IF(JALE+JEUL/=0)THEN
1390.AND. IF(ALEMUSCL_Param%IALEMUSCL == 1 JUPW/=0 ) THEN !eta3 + muscl(law51) : conflict
1391 CALL ANCMSG(MSGID=1564, MSGTYPE=MSGWARNING, ANMODE=ANINFO)
1392.OR. ELSEIF(ALEMUSCL_Param%IALEMUSCL == 0 JUPW/=0)THEN
1393 WRITE (IOUT,5360)ALE%UPWIND%UPWMG,ALE%UPWIND%UPWOG !,UPWSM
1394 END IF
1395.OR. IF (ALEMUSCL_Param%IALEMUSCL == 1 ALEMUSCL_Param%IALEMUSCL==2) THEN
1396 WRITE (IOUT, 5504) ALEMUSCL_Param%BETA,ALEMUSCL_Param%IALEMUSCL-1
1397 ENDIF
1398 ENDIF
1399
1400 WRITE (IOUT,'(//,a,i10)') TITRE(130)(1:57),NANALY
1401
1402! for print out
1403 IHBE_DS= DEFAULTS%SOLID%ISOLID
1404 ISST_DS= DEFAULTS%SOLID%ISMSTR
1405 ICPRE_D= DEFAULTS%SOLID%ICPRE
1406 ITET4_D= DEFAULTS%SOLID%ITETRA4
1407 ITET10_D= DEFAULTS%SOLID%ITETRA10
1408 IFRAME_DS = DEFAULTS%SOLID%IFRAME
1409 IMAS_DS= DEFAULTS%SOLID%IMAS
1410!
1411 IOFFSET_D= DEFAULTS%SHELL%ioffset !< offset support contact
1412 IHBE_D = DEFAULTS%SHELL%ishell
1413 ISH3N_D= DEFAULTS%SHELL%ish3n
1414 ISST_D = DEFAULTS%SHELL%ismstr
1415 IPLA_D = DEFAULTS%SHELL%iplas
1416 ITHK_D = DEFAULTS%SHELL%ithick
1417 IDRIL_D= DEFAULTS%SHELL%idrill
1418
1419 ICONTROL_D= DEFAULTS%SOLID%ICONTROL
1420 IF(N2D==0)THEN
1421.AND. IF(NUMELQ/=0. OR. (NUMELTG/=0N2D/=0) )THEN
1422 CALL ANCMSG(MSGID = 286,MSGTYPE = MSGERROR,ANMODE = ANINFO)
1423 ENDIF
1424 ENDIF
1425C 012
1426 WRITE(IOUT,5500)INTEG8,IPARITH,USER_WINDOWS%HAS_USER_WINDOW,IHBE_DS,
1427 . ITET4_D,ITET10_D,ISST_DS,ICPRE_D,IHBE_D,ISST_D,ITHK_D,
1428 . IPLA_D,ISTR_D,ISHEA_D,INSH,ISH3N_D, NPTS_D, IFRAME_DS,
1429 . IOFFSET_D,
1430 . ICONTROL_D
1431 WRITE(IOUT,5501)ISHFRAM
1432 IF(ANALY_TEMP /= 0)WRITE(IOUT,5505)ANALY_TEMP
1433 IF(ISH3NFRAM>0)WRITE(IOUT,5901)ISH3NFRAM
1434.AND. IF(JALE/=0 ALEFVM_Param%IEnabled/=0)WRITE(IOUT,5502)ALEFVM_Param%ISOLVER
1435.AND. IF(JALE/=0 ALE%GLOBAL%ISFINT/=0) WRITE(IOUT,5503)ALE%GLOBAL%ISFINT
1436 WRITE(IOUT,5700)LAGM_TOL
1437 WRITE(IOUT,5800)IMAS_DS
1438.AND. IF ((NUMSPH>0)(NSPHSOL==0)) WRITE (IOUT,5600) SPASORT,LVOISPH,KVOISPH
1439.AND. IF ((NUMSPH>0)(NSPHSOL>0)) THEN
1440 IF (ITSOL2SPH==1) WRITE (IOUT,5610) SPASORT,LVOISPH,KVOISPH,ITSOL2SPH
1441 IF (ITSOL2SPH==2) WRITE (IOUT,5620) SPASORT,LVOISPH,KVOISPH,ITSOL2SPH
1442 ENDIF
1443C-------------------------------------------------------------------
1444 WRITE(IOUT,1000)
1445 IF(IEXPM==1) THEN
1446 ELSE IF(IMOT/=0) THEN
1447 WRITE(IOUT,*)'memory request not efficient on this computer'
1448 ENDIF
1449 IF(ICRAY<2) THEN
1450C
1451 IPCT=NINT(REEL*100)
1452c WRITE(IOUT,3000) LMA,LAM,IPCT
1453 ELSE IF(ICRAY==2) THEN
1454C MasPar Special
1455c WRITE(IOUT,3002) LMA,LAM
1456 ENDIF
1457
1458 IF(NTHREAD_S>1)THEN
1459 STR_NBTHREADS = 'threads'
1460 ELSE
1461 STR_NBTHREADS = 'thread'
1462 ENDIF
1463 IF(GOT_INSPIRE_ALM == 1)THEN
1464 WRITE(IOUT,4001) NTHREAD_S,STR_NBTHREADS,NSPMD,NTHREAD,IARCH,ARCHN(IARCH),NVSIZ
1465 ELSE
1466 WRITE(IOUT,4000) NTHREAD_S,STR_NBTHREADS,NSPMD,NTHREAD,IARCH,ARCHN(IARCH),NVSIZ
1467 ENDIF
1468C
1469.OR. IF(IGNORE_SPMD==1IGNORE_THREADS==1)THEN
1470 WRITE(IOUT,'(a)') ' '
1471 WRITE(IOUT,'(a)') ' info : number of spmd domain and threads defined in command line'
1472 WRITE(IOUT,'(a)') ' /spmd card PARAMETER are ignored'
1473 ENDIF
1474 IF(GOT_VARIABLE==1)THEN
1475 WRITE(IOUT,'(a)') ' '
1476 WRITE(IOUT,*) ' info : omp_num_threads set, default setting ignored'
1477 WRITE(IOUT,*)' '
1478 ENDIF
1479
1480 IF(OLD_RSB==1)THEN
1481 WRITE(IOUT,'(a)') ' '
1482 WRITE(IOUT,'(a)') ' info : /spmd option, dectyp=2 '
1483 WRITE(IOUT,'(a)') ' rsb domain decomposition deprecated, changing to default VALUE'
1484 ENDIF
1485
1486
1487 IF (USERL_AVAIL==1)THEN
1488 WRITE(IOUT,4500)
1489 IF(GOT_INSPIRE_ALM == 1)THEN
1490 WRITE(IOUT,4601) DLIBFILE(1:DLIBFILE_SIZE),DLIBTKVERS
1491 ELSE
1492 WRITE(IOUT,4600) DLIBFILE(1:DLIBFILE_SIZE),DLIBTKVERS
1493 ENDIF
1494 ENDIF
1495C
1496C--------------------------------------------------------------------
1497C DEALLOCATE
1498C--------------------------------------------------------------------
1499 IF(ALLOCATED(IXS)) DEALLOCATE(IXS)
1500 IF(ALLOCATED(IGEO)) DEALLOCATE(IGEO)
1501 IF(ALLOCATED(IPART))DEALLOCATE(IPART)
1502C--------------------------------------------------------------------
1503 1000 FORMAT(//
1504 & 4X,'speed parameters '/
1505 & 4X,'---------------- '/)
1506c 2000 FORMAT(
1507c & 4X,'MEMORY REQUESTED BY USER (KWORDS). . . . . . . . . .',I10)
1508c 3000 FORMAT(
1509c & 4X,'MEMORY AVAILABLE FOR INTEGERS . . . . . . . . . . . .',I10/
1510c & 4X,'MEMORY AVAILABLE FOR REALS. . . . . . . . . . . . . .',I10/
1511c & 4X,'PERCENTAGE OF MEMORY FOR REALS . . . . . . . . . . .',I10)
1512c 3002 FORMAT(
1513c & 4X,'MEMORY AVAILABLE FOR INTEGERS . . . . . . . . . . . .',I10/
1514c & 4X,'MEMORY AVAILABLE FOR REALS. . . . . . . . . . . . . .',I10)
1515 4000 FORMAT(
1516 & 4X,'starter running on. . . . . . . . . . . . . . . . . .',I10,
1517 . ' ',A20/
1518 & 4X,'number of spmd domains. . . . . . . . . . . . . . . .',I10/
1519 & 4X,'number of threads per domain. . . . . . . . . . . . .',I10/
1520 & 4X,'architecture optimization . . . . . . . . . . . . . .',I10,
1521 . ', ',A20/
1522 & 4X,'SIZE of element buffer. . . . . . . . . . . . . . . .',I10)
1523 4001 FORMAT(
1524 & 4X,'solver running on . . . . . . . . . . . . . . . . . .',I10,
1525 . ' ',A20/
1526 & 4X,'number of spmd domains. . . . . . . . . . . . . . . .',I10/
1527 & 4X,'number of threads per domain. . . . . . . . . . . . .',I10/
1528 & 4X,'architecture optimization . . . . . . . . . . . . . .',I10,
1529 . ', ',A20/
1530 & 4X,'SIZE of element buffer. . . . . . . . . . . . . . . .',I10)
1531
1532 4500 FORMAT(//
1533 & 4X,'EXTERNAL library for users code INTERFACE '/
1534 & 4X,'----------------------------------------- '/)
1535 4600 FORMAT(
1536 & 4X,'library name . . . . . . . . . . . . . . . . . . . . ',A/
1537 & 4X,'radioss users code INTERFACE version . . . . . . . .',I10)
1538 4601 FORMAT(
1539 & 4X,'library name . . . . . . . . . . . . . . . . . . . . ',A/
1540 & 4X,'solver users code INTERFACE version . . . . . . . . .',I10)
1541
1542
1543 5000 FORMAT(
1544 & ' nvolu: number of monitored volumes . . . . . . . . .',I10)
1545 5050 FORMAT(
1546 & ' nr2rlnk: number of EXTERNAL coupling links . . . . . ',I10)
1547 5051 FORMAT(
1548 & ' nactiv: number of element deactivation groups . . . .',I10)
1549 5052 FORMAT(
1550 & ' ndamp: number of rayleigh damping groups . . . . . .',I10)
1551 5053 FORMAT(
1552 & ' ngjoint: number of gear TYPE joints . . . . . . . . .',I10)
1553 5054 FORMAT(
1554 & ' nummpc: number of multi-point constraints . . . . . .',I10)
1555 5055 FORMAT(
1556 & ' nsubdom: number of subdomains . . . . . .. . . . . . ',I10)
1557 5100 FORMAT(/
1558 & 4X,'nwale : ale grid velocity formulation . . . . . . . .',I10)
1559 5199 FORMAT(//
1560 & 4X,'ale grid smoothing formulation'/
1561 & 4X,'------------------------------'/
1562 & 5X,'donea grid velocity computation method '//
1563 & 5X,'alpha : donea coefficient. . . . . . . . . . ',1PG20.13/
1564 & 5X,'gamma : grid velocity limitation factor. . . ',1PG20.13/
1565 & 5X,'fscalex : x-grid velocity scale factor . . . . ',1PG20.13/
1566 & 5X,'fscaley : y-grid velocity scale factor . . . . ',1PG20.13/
1567 & 5X,'fscalez : z-grid velocity scale factor . . . . ',1PG20.13/
1568 & 5X,'volmin : minimum volume for element deletion. ',1PG20.13)
1569 5200 FORMAT(//
1570 & 4X,'ale grid smoothing formulation'/
1571 & 4X,'------------------------------'/
1572 & 5X,'altair average displacement grid formulation '//
1573 & 5X,'umax : maximum absolute grid velocity . . . . ',1PG20.13/
1574 & 5X,'vmin : minimum volume for element deletion. . ',1PG20.13)
1575 5300 FORMAT(//
1576 & 4X,'ale grid smoothing formulation'/
1577 & 4X,'------------------------------'/
1578 &5X,'altair spring method for grid velocity computation '//
1579 &5X,'dt0 : typical time step . . . . . . . . . . . . ',1PG20.13/
1580 &5X,'dt0* : effective time step. . . . . . . . . . . . ',1PG20.13/
1581 &5X,'gamma : non linearity factor . . . . . . . . . . . ',1PG20.13/
1582 &5X,'eta : damping coefficient . . . . . . . . . . . ',1PG20.13/
1583 &5X,'nu : shear factor . . . . . . . . . . . . . . . ',1PG20.13/
1584 &5X,'volmin: minimum volume for element deletion. . . . ',1PG20.13)
1585 5350 FORMAT(//
1586 & 4X,'ale grid smoothing formulation'/
1587 & 4X,'------------------------------'/
1588 & 5X,'grid velocity is not computed(quasi euler) ')
1589 5351 FORMAT(//
1590 & 4X,'ale grid smoothing formulation'/
1591 & 4X,'------------------------------'/
1592 & 5X,'altair standard method for grid velocity computation '//
1593 & 5X,'alpha : stability factor . . . . . . . . . . . . ',1PG20.13/
1594 & 5X,'gamma : non linearity factor . . . . . . . . . . ',1PG20.13/
1595 & 5X,'beta : damping coefficient. . . . . . . . . . . ',1PG20.13/
1596 & 5X,'lc : characteristic length. . . . . . . . . . ',1PG20.13)
1597 5353 FORMAT(//
1598 & 4X,'ale grid smoothing formulation'/
1599 & 4X,'------------------------------'/
1600 & 5X,'laplacian smoothing '//
1601 & 5X,'lambda:. . . . . . . . . . . . . . . . . . . . . ',1PG20.13/
1602 & 5X,'niter :. . . . . . . . . . . . . . . . . . . . . ',I10)
1603 5354 FORMAT(//
1604 & 4X,'ale grid smoothing formulation'/
1605 & 4X,'------------------------------'/
1606 & 5X,'volume smoothing ')
1607 5355 FORMAT(//
1608 & 4X,'ale grid smoothing formulation'/
1609 & 4X,'------------------------------'/
1610 & 5X,'flow-tracking(mass weighted averaged velocity)'//
1611 & 5X,'deformation enabled : . . . . . . . . . . . . . ',A3/
1612 & 5X,'rotation enabled : . . . . . . . . . . . . . . . ',A3/
1613 & 5X,'deformation scale factor : . . . . . . . . . . . ',1PG20.13/
1614 & 5X,'rotation scale factor: . . . . . . . . . . . . . ',1PG20.13/)
1615
1616
1617 5360 FORMAT(//
1618 & 4X,'ale upwind parameters'/
1619 & 4X,'---------------------'/
1620 & 5X,'upwind for momentum transport . . . . .=',1PG20.13/,
1621 & 5X,'upwind for other transport. . . . . . .=',1PG20.13/)
1622 5380 FORMAT(/
1623 & 4X,'caa fluid formulation activated')
1624 5500 FORMAT(//4X,'analysis options'/
1625 & 4X,'----------------'//
1626 & 4X,'integ8 : 8 gauss point condensed integration . . . . .',I10/
1627 & 4X,'iparith: parallel arithmetic flag(2 off, 1 0n). . . .',I10/
1628 & 4X,'iuserw : general user window flag. . . . . . . . . . .',I10/
1629 & 4X,'isolid : default brick formulation flag. . . . . . . .',I10/
1630 & 4X,'itet4 : default tetra4 formulation flag . . . . . . .',I10/
1631 & 4X,'itet10 : default tetra10 formulation flag. . . . . . .',I10/
1632 & 4X,'ismstr : default brick small strain flag . . . . . . .',I10/
1633 & 4X,'icpre : default solid constant pressure flag. . . . .',I10/
1634 & 4X,'ishell : default shell formulation flag. . . . . . . .',I10/
1635 & 4X,'isst : default shell small strain flag . . . . . . .',I10/
1636 & 4X,'ithk : default shell thickness variation flag. . . .',I10/
1637 & 4X,'ipla : default plane stress plasticity flag. . . . .',I10/
1638 & 4X,'istr : default shell strain computation flag . . . .',I10/
1639 & 4X,'ishea : default shell shear computation flag. . . . .',I10/
1640 & 4X,'insh : shell inertia flag. . . . . . . . . . . . . .',I10/
1641 & 4X,'ish3n : default 3 node shell formulation flag . . . .',I10/
1642 & 4X,'npts : shell properties default number of ',/
1643 & 4X,' integration points or layers. . . . . . . . .',I10/
1644 & 4X,'iframe : default solid frame formulation flag . . . . ',I10/
1645 & 4X,'ioffset: default shell offset flag. . . . . . . . . . ',I10/
1646 & 4X,'icontrol:default solid distortion control flag. . . . ',I10)
1647 5501 FORMAT(
1648 & 4X,'ishfram: local shell frame definition. . . . . . . . .',I10)
1649 5502 FORMAT(
1650 & 4X,'ialefvm: fvm for ale momentum equation. . . . . . . .',I10)
1651 5503 FORMAT(
1652 & 4X,'isfint : internal forces formulation . . . . . . . . .',I10)
1653 5504 FORMAT(//
1654 & 4X,'muscl(monotonic upstream-centered scheme for conservation laws)'/
1655 & 4X,'----------------------------------------------------------------'/
1656 & 5X,'compression coefficient(beta). . . . . . . . . . . : ',1PG20.13/
1657 & 5X,'formulation flag(iflag). . . . . . . . . . . . . . : ',I10)
1658 5505 FORMAT(
1659 & 4X,'itemp : temperature cutoff flag . . . . . . . . . . .',I10)
1660 5700 FORMAT(//
1661 & 4X,'lagrange multiplier options'/
1662 & 4X,'---------------------------'/
1663 & 4X,'lagm_tol:convergence criterion. . . . . . . . . . . .',
1664 & 1PG20.13)
1665 RETURN
1666 5600 FORMAT(//4X,'sph global parameters'/
1667 & 4X,'---------------------'//
1668 & 4X,'alpha sort :sorting security coefficient . . . . . .',
1669 & 1PG20.13/,
1670 & 4X,'lneigh :maximum number of computed neighbours. .',I10/,
1671 & 4X,'nneigh :maximum number of stored neighbours. . .',I10)
1672 5610 FORMAT(//4X,'sph global parameters'/
1673 & 4X,'---------------------'//
1674 & 4X,'alpha sort :sorting security coefficient . . . . . .',
1675 & 1pg20.13/,
1676 & 4x,'LNEIGH :MAXIMUM NUMBER OF COMPUTED NEIGHBOURS. .',i10/,
1677 & 4x,'NNEIGH :MAXIMUM NUMBER OF STORED NEIGHBOURS. . .',i10/,
1678 & 4x,'ITSOL2SPH :SOL2SPH PARTICLES ACTIVATION TYPE. . . .',i10/,
1679 & 4x,'(SOL2SPH PARTICLES ACTIVATION BASED ON PARTS)')
1680 5620 FORMAT(//4x,'SPH GLOBAL PARAMETERS'/
1681 & 4x,'---------------------'//
1682 & 4x,'ALPHA SORT :SORTING SECURITY COEFFICIENT . . . . . .',
1683 & 1pg20.13/,
1684 & 4x,'LNEIGH :MAXIMUM NUMBER OF COMPUTED NEIGHBOURS. .',i10/,
1685 & 4x,'NNEIGH :MAXIMUM NUMBER OF STORED NEIGHBOURS. . .',i10/,
1686 & 4x,'ITSOL2SPH :SOL2SPH PARTICLES ACTIVATION TYPE. . . .',i10/,
1687 & 4x,'(SOL2SPH PARTICLES ACTIVATION BASED ON SUBSETS)')
1688 5800 FORMAT(
1689 & //4x,'NODAL MASS DISTRIBUTION FLAG . . . . . . . . .',i10)
1690 5901 FORMAT(
1691 & 4x,'ISH3NFRAM: OLD LOCAL SH3N FRAME ACTIVATION . . . . . .',i10)
1692 999 CALL freerr(1)
1693 RETURN
1694 END
1695!||====================================================================
1696!|| find_dt1brick_engine ../starter/source/starter/contrl.F
1697!||--- called by ------------------------------------------------------
1698!|| contrl ../starter/source/starter/contrl.F
1699!||--- calls -----------------------------------------------------
1700!|| ancmsg ../starter/source/output/message/message.f
1701!||--- uses -----------------------------------------------------
1702!|| message_mod ../starter/share/message_module/message_mod.F
1703!||====================================================================
1705C-----------------------------------------------
1706C M o d u l e s
1707C-----------------------------------------------
1708 USE message_mod
1709 USE inoutfile_mod
1710C-----------------------------------------------
1711C I m p l i c i t T y p e s
1712C-----------------------------------------------
1713#include "implicit_f.inc"
1714C-----------------------------------------------
1715C C o m m o n B l o c k s
1716C-----------------------------------------------
1717#include "com04_c.inc"
1718#include "scr15_c.inc"
1719#include "scr17_c.inc"
1720C-----------------------------------------------
1721C L o c a l V a r i a b l e s
1722C-----------------------------------------------
1723 INTEGER IO_ERR1, NITER
1724 CHARACTER FILNAM*109, KEYA*80, KEYA2*80
1725
1726 INTEGER :: LEN_TMP_NAME
1727 CHARACTER(len=4096) :: TMP_NAME
1728C-----------------------------------------------
1729 io_err1=0
1730 idttsh=0
1731C-----------------------------------------------
1732C Reading data from the engine file
1733C-----------------------------------------------
1734 filnam=rootnam(1:rootlen)//'_0001.rad'
1735
1736 tmp_name=infile_name(1:infile_name_len)//filnam(1:rootlen+9)
1737 len_tmp_name = infile_name_len+rootlen+9
1738 OPEN(unit=71,file=tmp_name(1:len_tmp_name),
1739 . access='SEQUENTIAL',status='OLD',iostat=io_err1)
1740C
1741 IF (io_err1/=0) THEN
1742 filnam=rootnam(1:rootlen)//'D01'
1743 tmp_name=infile_name(1:infile_name_len)//filnam(1:rootlen+3)
1744 len_tmp_name = infile_name_len+rootlen+3
1745 OPEN(unit=71,file=tmp_name(1:len_tmp_name),
1746 . access='SEQUENTIAL',status='OLD',iostat=io_err1)
1747 ENDIF
1748
1749 IF (io_err1==0) THEN
1750C
1751 10 READ(71,'(A)',END=20) keya
1752C
1753 IF(keya(1:10)=='/DT1/BRICK') THEN
1754 idt1sol=1
1755 ELSEIF(keya(1:9)=='/DT1TET10') THEN
1756 niter=0
1757 READ(keya(11:20),'(I10)',err=30) niter
1758 30 CONTINUE
1759 IF(niter == 0)niter=1
1760 idt1tet10=niter+1
1761 ELSEIF(keya(1:6)=='/DTTSH') THEN
1762 idttsh=1
1763 ENDIF
1764C
1765 GOTO 10
1766C
1767 20 CONTINUE
1768
1769 CLOSE(71)
1770C
1771 ELSE
1772C
1773 IF(numtetra4/=0) CALL ancmsg(msgid=1589,
1774 . msgtype=msgwarning,
1775 . anmode=aninfo_blind_2,
1776 . c1=rootnam(1:rootlen)//'_0001.rad',
1777 . c2=rootnam(1:rootlen)//'D01')
1778C
1779 IF(numels10/=0) CALL ancmsg(msgid=1606,
1780 . msgtype=msgwarning,
1781 . anmode=aninfo_blind_2,
1782 . c1=rootnam(1:rootlen)//'_0001.rad',
1783 . c2=rootnam(1:rootlen)//'D01')
1784C
1785 ENDIF
1786C-------------------------------------------
1787 RETURN
1788 END
1789!||====================================================================
1790!|| ini_h3dtmax_engine ../starter/source/starter/contrl.F
1791!||--- called by ------------------------------------------------------
1792!|| lectur ../starter/source/starter/lectur.F
1793!||--- calls -----------------------------------------------------
1794!|| read_h3dtmax_key ../starter/source/starter/contrl.F
1795!||--- uses -----------------------------------------------------
1796!|| message_mod ../starter/share/message_module/message_mod.F
1797!||====================================================================
1798 SUBROUTINE ini_h3dtmax_engine(IPARG,IPART,IPARTS,IPARTC,IPARTG,IDDLEVEL)
1799C-----------------------------------------------
1800C M o d u l e s
1801C-----------------------------------------------
1802 USE message_mod
1803 USE inoutfile_mod
1804 USE outmax_mod
1805 USE names_and_titles_mod , ONLY : ncharline
1806C-----------------------------------------------
1807C I m p l i c i t T y p e s
1808C-----------------------------------------------
1809#include "implicit_f.inc"
1810C-----------------------------------------------
1811C C o m m o n B l o c k s
1812C-----------------------------------------------
1813#include "com01_c.inc"
1814#include "com04_c.inc"
1815#include "scr15_c.inc"
1816#include "scr17_c.inc"
1817#include "param_c.inc"
1818C-----------------------------------------------
1819C D u m m y A r g u m e n t s
1820C-----------------------------------------------
1821 INTEGER ,INTENT(IN) :: IDDLEVEL
1822 INTEGER, DIMENSION(NPARG,NGROUP) ,INTENT(IN):: IPARG
1823 INTEGER ,DIMENSION(LIPART1,NPART),INTENT(IN):: IPART
1824 INTEGER ,DIMENSION(NUMELS),INTENT(IN):: IPARTS
1825 INTEGER ,DIMENSION(NUMELC),INTENT(IN):: IPARTC
1826 INTEGER ,DIMENSION(NUMELTG),INTENT(IN):: IPARTG
1827C-----------------------------------------------
1828C L o c a l V a r i a b l e s
1829C-----------------------------------------------
1830 INTEGER I, J, K, N ,NELC , NELTG , IP , NPRT , IPRT
1831 INTEGER IH3D,NG,ITY,NFT,IKEY,K_LEN
1832
1833 INTEGER :: TMAX_IPART(NPART),NKPART(NPART+1,NKEYMAX+1)
1834 CHARACTER(LEN=NCHARLINE) :: CARTE
1835C-----------------------------------------------
1836 IF (ALLOCATED(ikeymax)) DEALLOCATE(ikeymax)
1837 IF (ALLOCATED(ipart_ok)) DEALLOCATE(ipart_ok)
1838 ALLOCATE(ikeymax(nkeymax),ipart_ok(ngroup,nkeymax))
1839 ikeymax =0
1840 ipart_ok = 0
1841 lmax_dis = 0
1842 lmax_vel = 0
1843 lmax_nsig = 0
1844 lmax_nstra = 0
1845 nkpart(1:npart+1,1:nkeymax+1) = 0
1846C-----------------------------------------------
1847C Reading data from the engine file
1848C-----------------------------------------------
1849 ih3d=1
1850 k_len = 19
1851 carte(1:k_len) = '/H3D/ELEM/VONM/TMAX'
1852 CALL read_h3dtmax_key(carte,k_len,ikey,nkpart(1,ih3d),ipart)
1853 IF (ikey >0) THEN
1854 ikeymax(ih3d) = 1
1855 ELSE
1856 k_len = 20
1857 carte(1:k_len) = '/H3D/SOLID/VONM/TMAX'
1858 CALL read_h3dtmax_key(carte,k_len,ikey,nkpart(1,ih3d),ipart)
1859 IF (ikey >0) ikeymax(ih3d) = 1
1860 carte(1:k_len) = '/H3D/SHELL/VONM/TMAX'
1861 CALL read_h3dtmax_key(carte,k_len,ikey,nkpart(1,ih3d),ipart)
1862 IF (ikey >0) ikeymax(ih3d) = 1
1863 END IF
1864 ih3d=2
1865 k_len = 20
1866 carte(1:k_len) = '/H3D/ELEM/SIGEQ/TMAX'
1867 CALL read_h3dtmax_key(carte,k_len,ikey,nkpart(1,ih3d),ipart)
1868 IF (ikey >0) THEN
1869 ikeymax(ih3d) = 1
1870 ELSE
1871 k_len = 21
1872 carte(1:k_len) = '/H3D/SOLID/SIGEQ/TMAX'
1873 CALL read_h3dtmax_key(carte,k_len,ikey,nkpart(1,ih3d),ipart)
1874 IF (ikey >0) ikeymax(ih3d) = 1
1875 carte(1:k_len) = '/H3D/SHELL/SIGEQ/TMAX'
1876 CALL read_h3dtmax_key(carte,k_len,ikey,nkpart(1,ih3d),ipart)
1877 IF (ikey >0) ikeymax(ih3d) = 1
1878 END IF
1879 ih3d=3
1880 k_len = 19
1881 carte(1:k_len) = '/H3D/ELEM/ENER/TMAX'
1882 CALL read_h3dtmax_key(carte,k_len,ikey,nkpart(1,ih3d),ipart)
1883 IF (ikey >0) THEN
1884 ikeymax(ih3d) = 1
1885 ELSE
1886 k_len = 20
1887 carte(1:k_len) = '/H3D/SOLID/ENER/TMAX'
1888 CALL read_h3dtmax_key(carte,k_len,ikey,nkpart(1,ih3d),ipart)
1889 IF (ikey >0) ikeymax(ih3d) = 1
1890 carte(1:k_len) = '/H3D/SHELL/ENER/TMAX'
1891 CALL read_h3dtmax_key(carte,k_len,ikey,nkpart(1,ih3d),ipart)
1892 IF (ikey >0) ikeymax(ih3d) = 1
1893 END IF
1894 ih3d=4
1895 k_len = 19
1896 carte(1:k_len) = '/H3D/ELEM/DAMA/TMAX'
1897 CALL read_h3dtmax_key(carte,k_len,ikey,nkpart(1,ih3d),ipart)
1898 IF (ikey >0) THEN
1899 ikeymax(ih3d) = 1
1900 ELSE
1901 k_len = 20
1902 carte(1:k_len) = '/H3D/SOLID/DAMA/TMAX'
1903 CALL read_h3dtmax_key(carte,k_len,ikey,nkpart(1,ih3d),ipart)
1904 IF (ikey >0) ikeymax(ih3d) = 1
1905 carte(1:k_len) = '/H3D/SHELL/DAMA/TMAX'
1906 CALL read_h3dtmax_key(carte,k_len,ikey,nkpart(1,ih3d),ipart)
1907 IF (ikey >0) ikeymax(ih3d) = 1
1908 END IF
1909 ih3d=5
1910 k_len = 26
1911 carte(1:k_len) = '/H3D/ELEM/TENS/STRESS/TMAX'
1912 CALL read_h3dtmax_key(carte,k_len,ikey,nkpart(1,ih3d),ipart)
1913 IF (ikey >0) THEN
1914 ikeymax(ih3d) = 1
1915 ELSE
1916 k_len = 27
1917 carte(1:k_len) = '/H3D/SOLID/TENS/STRESS/TMAX'
1918 CALL read_h3dtmax_key(carte,k_len,ikey,nkpart(1,ih3d),ipart)
1919 IF (ikey >0) ikeymax(ih3d) = 1
1920 carte(1:k_len) = '/H3D/SHELL/TENS/STRESS/TMAX'
1921 CALL read_h3dtmax_key(carte,k_len,ikey,nkpart(1,ih3d),ipart)
1922 IF (ikey >0) ikeymax(ih3d) = 1
1923 END IF
1924 ih3d=6
1925 k_len = 26
1926 carte(1:k_len) = '/H3D/ELEM/TENS/STRAIN/TMAX'
1927 CALL read_h3dtmax_key(carte,k_len,ikey,nkpart(1,ih3d),ipart)
1928 IF (ikey >0) THEN
1929 ikeymax(ih3d) = 1
1930 ELSE
1931 k_len = 27
1932 carte(1:k_len) = '/H3D/SOLID/TENS/STRAIN/TMAX'
1933 CALL read_h3dtmax_key(carte,k_len,ikey,nkpart(1,ih3d),ipart)
1934 IF (ikey >0) ikeymax(ih3d) = 1
1935 carte(1:k_len) = '/H3D/SHELL/TENS/STRAIN/TMAX'
1936 CALL read_h3dtmax_key(carte,k_len,ikey,nkpart(1,ih3d),ipart)
1937 IF (ikey >0) ikeymax(ih3d) = 1
1938 END IF
1939 ih3d=7 ! NKEYMAX+1
1940 k_len = 9
1941 carte(1:k_len) = '/H3D/PART'
1942 CALL read_h3dtmax_key(carte,k_len,ikey,nkpart(1,ih3d),ipart)
1943 IF (ikey == 0 ) nkpart(1:npart,ih3d)=1
1944 ih3d=8
1945 k_len =18
1946 carte(1:k_len) = '/H3D/NODA/DIS/TMAX'
1947 CALL read_h3dtmax_key(carte,k_len,ikey,tmax_ipart,ipart)
1948 IF (ikey > 0 ) lmax_dis = 3
1949 ih3d=9
1950 k_len =18
1951 carte(1:k_len) = '/H3D/NODA/VEL/TMAX'
1952 CALL read_h3dtmax_key(carte,k_len,ikey,tmax_ipart,ipart)
1953 IF (ikey > 0 ) lmax_vel = 3
1954 ih3d=10
1955 k_len =18
1956 carte(1:k_len) = '/H3D/NODA/GPS/TMAX'
1957 CALL read_h3dtmax_key(carte,k_len,ikey,tmax_ipart,ipart)
1958 IF (ikey > 0 ) lmax_nsig = 6
1959 ih3d=11
1960 k_len =23
1961 carte(1:k_len) = '/H3D/NODA/GPSTRAIN/TMAX'
1962 CALL read_h3dtmax_key(carte,k_len,ikey,tmax_ipart,ipart)
1963 IF (ikey > 0 ) lmax_nstra = 6
1964C
1965 ih3d = 0
1966 DO i=1,nkeymax
1967 ih3d = ih3d + ikeymax(i)
1968 END DO
1969 IF (ih3d>0) THEN
1970 DO i=1,nkeymax
1971 nkpart(1:npart,i)=nkpart(1:npart,nkeymax+1)*nkpart(1:npart,i)
1972 END DO
1973C
1974 DO ng=1,ngroup
1975 nft=iparg(3,ng)+1
1976 ity=iparg(5,ng)
1977C
1978 iprt = 0
1979 SELECT CASE (ity)
1980 CASE(1)
1981 iprt = iparts(nft)
1982 CASE(3)
1983 iprt = ipartc(nft)
1984 CASE(7)
1985 iprt = ipartg(nft)
1986 END SELECT
1987 IF(iprt>0) ipart_ok(ng,1:nkeymax) = nkpart(iprt,1:nkeymax)
1988 END DO
1989 END IF
1990C-------------------------------------------
1991 RETURN
1992 END
1993!||====================================================================
1994!|| read_h3dtmax_key ../starter/source/starter/contrl.F
1995!||--- called by ------------------------------------------------------
1996!|| ini_h3dtmax_engine ../starter/source/starter/contrl.F
1997!||--- uses -----------------------------------------------------
1998!|| message_mod ../starter/share/message_module/message_mod.F
1999!||====================================================================
2000 SUBROUTINE read_h3dtmax_key(KEY_TM,KEY_LEN,IFUND,NTM_PART,IPART)
2001C-----------------------------------------------
2002C M o d u l e s
2003C-----------------------------------------------
2004 USE message_mod
2005 USE inoutfile_mod
2006 USE names_and_titles_mod , ONLY : ncharline
2007C-----------------------------------------------
2008C I m p l i c i t T y p e s
2009C-----------------------------------------------
2010#include "implicit_f.inc"
2011C-----------------------------------------------
2012C C o m m o n B l o c k s
2013C-----------------------------------------------
2014#include "com01_c.inc"
2015#include "com04_c.inc"
2016#include "scr15_c.inc"
2017#include "scr17_c.inc"
2018#include "param_c.inc"
2019C-----------------------------------------------
2020C D u m m y A r g u m e n t s
2021C-----------------------------------------------
2022 INTEGER, INTENT(IN):: KEY_LEN
2023 CHARACTER(len=KEY_LEN) :: KEY_TM
2024 INTEGER ,DIMENSION(LIPART1,NPART),INTENT(IN):: IPART
2025 INTEGER, INTENT(OUT):: IFUND
2026 INTEGER ,DIMENSION(NPART),INTENT(INOUT):: NTM_PART
2027C-----------------------------------------------
2028C L o c a l V a r i a b l e s
2029C-----------------------------------------------
2030 INTEGER I, J, K, N ,NELC , NELTG , IP , NPRT , IPRT
2031 INTEGER IH3D,NG,ITY,NFT,IO_ERR1,LEN_C,IC
2032 CHARACTER FILNAM*109, KEYA*80, KEYA2*80
2033 CHARACTER(LEN=NCHARLINE) :: CARTE
2034
2035 INTEGER :: LEN_TMP_NAME,TMAX_IPART(NPART)
2036 CHARACTER(len=4096) :: TMP_NAME
2037C-----------------------------------------------
2038 ifund=0
2039 io_err1 = 0
2040 nprt = 0
2041C-----------------------------------------------
2042C Reading data from the engine file
2043C-----------------------------------------------
2044 filnam=rootnam(1:rootlen)//'_0001.rad'
2045
2046 tmp_name=infile_name(1:infile_name_len)//filnam(1:rootlen+9)
2047 len_tmp_name = infile_name_len+rootlen+9
2048 OPEN(unit=71,file=tmp_name(1:len_tmp_name),
2049 . access='SEQUENTIAL',status='OLD',iostat=io_err1)
2050
2051 DO WHILE (io_err1 == 0 .AND. ifund==0)
2052C
2053 READ(71,fmt='(A)',END=20) keya
2054 IF(keya(1:key_len) == key_tm ) THEN
2055C---- read ipart_id if there are
2056 ifund = 1
2057 ic = 1
2058 nprt = npart
2059 DO WHILE(ic == 1)
2060 READ(71,fmt='(A)',err=20,END=20) carte
2061 IF(carte(1:1) == '#' .OR. carte(1:1) == '$') cycle
2062 ic = 0
2063 len_c = len_trim(carte)
2064 IF(carte(len_c:len_c)==char(13)) len_c = len_c - 1
2065 IF (carte(1:1) == '/' .OR. len_c==0) THEN
2066 ELSE
2067 j=1
2068 nprt = 0
2069 DO WHILE(carte(1:1) /= '/' .AND. carte(1:1) /= '#' .AND.
2070 . carte(1:1) /= '$' .AND. len_c /= 0)
2071 DO WHILE (j <= len_c)
2072 IF(carte(j:j) /= ' ') THEN
2073 k=j
2074 DO WHILE(carte(k:k) /= ' ' .AND. k < len_c)
2075 k=k+1
2076 ENDDO
2077 nprt = nprt + 1
2078 READ(carte(j:k),'(I10)') iprt
2079 tmax_ipart(nprt) = iprt
2080 j = k
2081 ENDIF
2082 j = j +1
2083 END DO
2084 READ(71,fmt='(A)',err=20,END=20) carte
2085 len_c = len_trim(carte)
2086 IF(carte(len_c:len_c)==char(13)) len_c = len_c - 1
2087 END DO
2088 IF (nprt==0) THEN
2089 nprt = npart
2090 ntm_part(1:nprt) = 1
2091 END IF
2092 END IF
2093 END DO !(CI == 1) Remove Comments
2094 END IF
2095C
2096 END DO
2097C
2098 20 CONTINUE
2099
2100 CLOSE(71)
2101C
2102 IF (ifund>0 .AND. (nprt == npart .OR.nprt ==0)) THEN
2103 ntm_part(1:nprt) = 1
2104 ELSEIF (ifund>0) THEN
2105 DO i=1,nprt
2106 ip=0
2107 iprt = tmax_ipart(i)
2108 DO j=1,npart
2109 IF(ipart(4,j)==iprt)ip=j
2110 END DO
2111 IF (ip > 0) ntm_part(ip)=1
2112 ip = 0
2113 DO j=1,npart
2114 ip = ip +ntm_part(j)
2115 END DO
2116 IF (ip==0) ntm_part(1:npart) = 1
2117 ENDDO
2118 END IF
2119C-------------------------------------------
2120 RETURN
2121 END
subroutine read_h3dtmax_key(key_tm, key_len, ifund, ntm_part, ipart)
Definition contrl.F:2001
subroutine find_dt1brick_engine()
Definition contrl.F:1705
subroutine contrl(multi_fvm, lsubmodel, is_dyna, detonators, user_windows, mat_elem, names_and_titles, lipart1, defaults, glob_therm, pblast, output)
Definition contrl.F:84
subroutine ini_h3dtmax_engine(iparg, ipart, iparts, ipartc, ipartg, iddlevel)
Definition contrl.F:1799
subroutine convec(ibcv, fconv, npc, tf, x, temp, nsensor, sensor_tab, fthe, iad, fthesky, python, glob_therm)
Definition convec.F:38
#define my_real
Definition cppsort.cpp:32
subroutine damping(nodft, nodlt, v, vr, a, ar, damp, ms, in, igrnod, dim, itask, weight, tagslv_rby, wfext)
Definition damping.F:882
subroutine detcord(detonator_cord, x, xc, yc, zc, vdet, vdet2, alt, bt, tb, has_detonator, iopt)
Definition detcord.F:34
subroutine eig(k_diag, k_lt, iadk, jdik, ms, in, nddl, ndof, nnzl, x, d, v, a, bufel, ixs, ixq, ixc, ixt, ixp, ixr, ixtg, pm, geo, cont, icut, skew, xcut, fint, itab, fext, fopt, anin, lpby, npby, nstrf, rwbuf, nprw, tani, elbuf_tab, matparam_tab, dd_iad, fr_iad, dd_front, cluster, weight, eani, ipart, rby, nom_opt, igrsurf, bufsf, idata, rdata, bufmat, bufgeo, kxx, ixx, kxsp, ixsp, nod2sp, spbuf, ixs10, ixs20, ixs16, vr, monvol, volmon, ipm, igeo, iparg, eigipm, eigibuf, eigrpm, ldiag, ljdik, ljdik2, ikc, maxncv, thke, nms, nint2, iint2, ipari, intbuf_tab, nodglob, iad_elem, fr_elem, fr_sec, fr_rby2, iad_rby2, fr_wall, inloc, iddl, partsav, fncont, ftcont, temp, err_thk_sh4, err_thk_sh3, irbe2, irbe3, lrbe2, lrbe3, fr_rbe2, fr_rbe3m, iad_rbe2, weight_md, fcluster, mcluster, xfem_tab, w, nv46, nercvois, nesdvois, lercvois, lesdvois, crkedge, indx_crk, xedge4n, xedge3n, stack, sph2sol, stifn, stifr, drape_q4, drape_t3, h3d_data, subset, igrnod, fcont_max, fncontp2, ftcontp2, ale_connectivity, glob_therm)
Definition eig.F:73
#define alpha
Definition eval.h:35
subroutine hm_elem_count(elem_type, hm_elem_number, is_dyna)
subroutine hm_get_intv(name, ival, is_available, lsubmodel)
subroutine hm_get_string(name, sval, size, is_available)
subroutine hm_option_count(entity_type, hm_option_number)
subroutine hm_option_next()
subroutine hm_option_start(entity_type)
subroutine hm_preread_node(unitab, lsubmodel, numnusr, is_dyna)
subroutine hm_read_analy(nanaly, iparith, ipari0, lsubmodel)
subroutine hm_read_caa(lsubmodel)
Definition hm_read_caa.F:36
subroutine hm_read_definter(hm_ninter_def, def_inter, lsubmodel)
subroutine hm_read_defshell(lsubmodel, defaults_shell)
subroutine hm_read_defsolid(lsubmodel, defaults_solid)
subroutine hm_read_implicit(lsubmodel)
subroutine hm_read_ioflag(lsubmodel)
subroutine hm_read_lagmul(lsubmodel)
subroutine hm_read_sms(lsubmodel)
Definition hm_read_sms.F:38
subroutine hm_read_spmd(lsubmodel)
subroutine hm_read_unit(unitab, lsubmodel)
subroutine inivel(v, vr, svr, itabm1)
Definition inivel.F:35
#define min(a, b)
Definition macros.h:20
#define max(a, b)
Definition macros.h:21
initmumps id
for(i8=*sizetab-1;i8 >=0;i8--)
type(ale_) ale
Definition ale_mod.F:253
type(alefvm_param_), target alefvm_param
Definition alefvm_mod.F:121
type(alemuscl_param_) alemuscl_param
logical grp_size_bool
integer grp_size
type(inivol_struct_), dimension(:), allocatable inivol
Definition inivol_mod.F:84
integer num_inivol
Definition inivol_mod.F:85
integer infile_name_len
character(len=infile_char_len) infile_name
integer, parameter ncharfield
integer, parameter ncharline
integer, dimension(:,:), allocatable ipart_ok
Definition outmax_mod.F:72
integer lmax_vel
Definition outmax_mod.F:61
integer lmax_nstra
Definition outmax_mod.F:63
integer lmax_dis
Definition outmax_mod.F:60
integer lmax_nsig
Definition outmax_mod.F:62
integer, dimension(:), allocatable ikeymax
Definition outmax_mod.F:71
integer, dimension(:), pointer iframe
type(unit_type_) unitab
integer, dimension(:), allocatable, target ipart
Definition restart_mod.F:60
integer, dimension(:), allocatable igeo
Definition restart_mod.F:83
subroutine nbadigemesh(lsubmodel, numnusr)
Definition nbadigemesh.F:45
subroutine nbadmesh(lsubmodel, numnusr, unitab)
Definition nbadmesh.F:43
subroutine radiation(ibcr, fradia, npc, tf, x, temp, nsensor, sensor_tab, fthe, iad, fthesky, python, glob_therm)
Definition radiation.F:38
program radioss
Definition radioss.F:34
subroutine ancmsg(msgid, msgtype, anmode, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, r1, r2, r3, r4, r5, r6, r7, r8, r9, c1, c2, c3, c4, c5, c6, c7, c8, c9, prmode)
Definition message.F:895
subroutine freerr(it)
Definition freform.F:501
subroutine arret(nn)
Definition arret.F:86
integer function istr(str)
Definition istr.F:31
program starter
Definition starter.F:39
subroutine static(v, vr, a, ar, ms, in, igrnod, weight_md, wfext)
Definition static.F:33
subroutine tmax_ipart(iparg, ipart, iparts, ipartc, ipartg, h3d_data)
Definition tmax_ipart.F:34
subroutine upwind(rho, vis, vdx, vdy, vdz, r, s, t, deltax, gam, nel)
Definition upwind.F:35
subroutine velocity(a, ar, v, vr, fzero, itab, nale)
Definition velocity.F:29