93 SUBROUTINE lech3d(OUTPUT,GEO,IGEO,IPM,IPART,H3D_DATA,MULTI_FVM,IPARI,IPARG,TAG_SKINS6,
94 . MDS_LABEL,MDS_OUTPUT_TABLE,MDS_NMAT,MAX_DEPVAR,MDS_NDEPSVAR,
95 . ELBUF_STR,STACK,IBCL,ILOADP,LLOADP,LOADS,MAT_PARAM,PBLAST,
96 . IGRPART,NPC,TF,SNPC,STF)
113 USE output_mod,
only : output_
117#include "implicit_f.inc"
121#include "com04_c.inc"
122#include "com08_c.inc"
123#include "param_c.inc"
124#include "scr17_c.inc"
126#include "com01_c.inc"
128#include "vect01_c.inc"
133 type(output_),
intent(inout) :: OUTPUT
134 my_real GEO(NPROPG,NUMGEO)
135 INTEGER IGEO(NPROPGI,NUMGEO),IPART(LIPART1,*),IPM(NPROPMI,NUMMAT),IPARI(NPARI,*),
136 . iparg(nparg,ngroup),tag_skins6(*),mds_output_table(max_depvar,mds_nmat),mds_nmat,
137 . max_depvar,mds_ndepsvar(*),ibcl(*),iloadp(*),lloadp(*)
139 TYPE (MULTI_FVM_STRUCT),
INTENT(IN) :: MULTI_FVM
140 CHARACTER*64 MDS_LABEL(1024,MDS_NMAT)
141 TYPE(elbuf_struct_),
TARGET,
DIMENSION(NGROUP) :: ELBUF_STR
142 TYPE (STACK_PLY) :: STACK
143 TYPE (LOADS_),
INTENT(IN) :: LOADS
144 TYPE (MATPARAM_STRUCT_) ,
DIMENSION(NUMMAT) ,
INTENT(INOUT) :: MAT_PARAM
145 TYPE (PBLAST_) :: PBLAST
146 TYPE(
group_) ,
DIMENSION(NGRPART) ,
INTENT(IN) :: IGRPART
147 INTEGER ,
INTENT(IN) :: SNPC,STF
148 INTEGER ,
INTENT(IN) :: NPC(SNPC)
149 my_real ,
INTENT(IN) :: tf(stf)
153 INTEGER I, J, JMAX, K, L, M, O, P, Q, R, CPT, NIP_MAX, NLAY_MAX, NPLY_MAX, NUVAR_MAX, ID_INPUT, N1, N2,
155 . NB_INTEGER,N,IR_MAX,IS_MAX,IT_MAX,
156 . nb_all,is_char_key2,is_char_key3,is_char_key4,is_char_key5,is_char_key6,is_char_key7,is_char_key8,
157 . is_empty_key2,is_empty_key3,is_empty_key4,is_empty_key5,is_empty_key6,is_empty_key7,is_empty_key8,
158 . is_ply_key4,is_ply_key5,is_ply_key6,is_ply_key7,is_ply_key8,is_all,is_upper,is_lower,is_def,
159 . is_layer_key4,is_layer_key5,is_layer_key6,is_layer_key7,is_layer_key8,is_ipt_key4,is_ipt_key5,
160 . is_ipt_key6,is_ipt_key7,is_ipt_key8,
161 . is_gauss_key4,is_gauss_key5,is_gauss_key6,is_gauss_key7,is_gauss_key8,is_ply,is_layer,is_ipt,is_gauss,
162 . is_ply_all,is_layer_all,is_layer_lower,is_layer_upper,is_layer_memb,is_layer_bend,
163 . is_ipt_all,is_ipt_lower,is_ipt_upper,is_ipt_memb,is_ipt_bend,
164 . is_gauss_all,ply,layer,ipt,gauss,iok_h3dkey,iok_h3dkey_combination,cpt_h3d,iuvar,is_uvar,
165 . is_uvar_all,is_uvar_key4,is_uvar_key5,is_uvar_key6,is_uvar_key7,is_uvar_key8,
166 . id_ply(numgeo+numply),mat_ply(numgeo+numply),
167 . ipt_ply(numgeo+numply),is_scalar,is_vector,is_tensor,is_torsor,
168 . ir,is_ir,is_ir_all,is_ir_lower,is_ir_upper ,
169 . is,is_is,is_is_all,is_is_lower,is_is_upper ,
170 . it,is_it,is_it_all,is_it_lower,is_it_upper,
171 . nb_key,cpt_key,nbmax,is_inter,inter,ninter_max,is_inter_all,ninterskid,is_sking,
172 . ishell_npt_check,icstr,nptr,npts,nptt,is_corner_data,ish_npt0,
173 . is_mdsvar_def,nmdsvar_max,is_mdsvar,is_mdsvar_all,imdsvar,
174 . is_model_npt,is_model_ply,is_model_layer,iskind,iouter,ipext,
176 . is_mode,mode,mode_max,is_mode_all,nfail,nip_ply_max,nip_elem_max,
177 . ityp,id_def,nbc,dum,ndef,is_memb,ok,dtfct,jj
178 INTEGER MLW, NEL, NG, JTURB, NLAY, NUVAR, IMAT, ISUBSTACK, ID_PLY_TMP
179 INTEGER CPT_MOD,NMOD,CPT_LAWID,SIZE_INPUT
184 INTEGER IBID1,IBID2,IBID3,IBID4
186 CHARACTER(LEN=NCHARKEY)::KEY0
187 CHARACTER(LEN=NCHARKEY)::KEY2
188 CHARACTER(LEN=NCHARKEY)::KEY3
189 CHARACTER(LEN=NCHARKEY)::KEY4
190 CHARACTER(LEN=NCHARKEY)::KEY5
191 CHARACTER(LEN=NCHARKEY)::KEY6
192 CHARACTER(LEN=NCHARKEY)::KEY7
193 CHARACTER(LEN=NCHARKEY)::KEY8
194 CHARACTER(LEN=NCHARKEY)::KEY2_READ
195 CHARACTER(LEN=NCHARLINE100)::KEY3_READ
196 CHARACTER(LEN=NCHARLINE100)::KEY3_GLOB
198 CHARACTER*64 MDS_LABEL_TMP
200 INTEGER,
DIMENSION(:),
ALLOCATABLE ::
201 . layer_input,ipt_input,ply_input,uvar_input,gauss_input,
202 . ir_input,is_input,it_input,is_available_key,inter_input,
203 . mdsvar_input,mdsvar_input1,mdsvar_input_tmp,mdsvar_input1_tmp,
204 . mdsvar_input2,mdsvar_input2_tmp,id_mat_mds,index_mat_mds,ids_input,
205 . irup_id_all,modes_input,irup_h3d
207 TYPE (H3D_KEYWORD) H3D_KEYWORD_SHELL, H3D_KEYWORD_SOLID, H3D_KEYWORD_QUAD, H3D_KEYWORD_ONED
209 TYPE (H3D_KEYWORD),
DIMENSION(:),
ALLOCATABLE :: H3D_KEYWORD_NODAL_SCALAR
210 TYPE (H3D_KEYWORD),
DIMENSION(:),
ALLOCATABLE :: H3D_KEYWORD_NODAL_VECTOR
211 TYPE (H3D_KEYWORD),
DIMENSION(:),
ALLOCATABLE :: H3D_KEYWORD_NODAL_TENSOR
212 TYPE (H3D_KEYWORD),
DIMENSION(:),
ALLOCATABLE :: H3D_KEYWORD_ONED_SCALAR
213 TYPE (H3D_KEYWORD),
DIMENSION(:),
ALLOCATABLE :: H3D_KEYWORD_ONED_VECTOR
214 TYPE (H3D_KEYWORD),
DIMENSION(:),
ALLOCATABLE :: H3D_KEYWORD_ONED_TENSOR
215 TYPE (H3D_KEYWORD),
DIMENSION(:),
ALLOCATABLE :: H3D_KEYWORD_ONED_TORSOR
216 TYPE (H3D_KEYWORD),
DIMENSION(:),
ALLOCATABLE :: H3D_KEYWORD_SHELL_SCALAR
217 TYPE (H3D_KEYWORD),
DIMENSION(:),
ALLOCATABLE :: H3D_KEYWORD_SHELL_VECTOR
218 TYPE (H3D_KEYWORD),
DIMENSION(:),
ALLOCATABLE :: H3D_KEYWORD_SHELL_TENSOR
219 TYPE (H3D_KEYWORD),
DIMENSION(:),
ALLOCATABLE :: H3D_KEYWORD_SOLID_SCALAR
220 TYPE (H3D_KEYWORD),
DIMENSION(:),
ALLOCATABLE :: H3D_KEYWORD_SOLID_VECTOR
221 TYPE (H3D_KEYWORD),
DIMENSION(:),
ALLOCATABLE :: H3D_KEYWORD_SOLID_TENSOR
222 TYPE (H3D_KEYWORD),
DIMENSION(:),
ALLOCATABLE :: H3D_KEYWORD_SPH_SCALAR
223 TYPE (H3D_KEYWORD),
DIMENSION(:),
ALLOCATABLE :: H3D_KEYWORD_SPH_TENSOR
224 TYPE (H3D_KEYWORD),
DIMENSION(:),
ALLOCATABLE :: H3D_KEYWORD_QUAD_SCALAR
225 TYPE (H3D_KEYWORD),
DIMENSION(:),
ALLOCATABLE :: H3D_KEYWORD_QUAD_VECTOR
226 TYPE (H3D_KEYWORD),
DIMENSION(:),
ALLOCATABLE :: H3D_KEYWORD_QUAD_TENSOR
228 TYPE (H3D_NUMBER_OF_KEY) :: H3D_NUM_KEY
232 INTEGER,
DIMENSION(:,:),
ALLOCATABLE :: IS_LAYER_MAT
234 CHARACTER*64 TEST_CHAIN
235 CHARACTER(LEN=NCHARTITLE),
DIMENSION(:),
ALLOCATABLE :: FAIL_NAME
236 CHARACTER(LEN=NCHARTITLE),
DIMENSION(:,:),
ALLOCATABLE :: MODNAME
238 my_real,
EXTERNAL :: finter
240 IF(h3d_data%NB_H3D_FRAME >0.AND.h3d_data%DTH3D_FCT_ID==0)
THEN
241 IF(h3d_data%TH3D_STOP0 >zero.AND.h3d_data%TH3D_STOP0 /= ep20.AND.h3d_data%TH3D0 > zero)
THEN
242 h3d_data%DTH3D0 = (h3d_data%TH3D_STOP0 - h3d_data%TH3D0) / h3d_data%NB_H3D_FRAME
243 ELSEIF(h3d_data%TH3D_STOP0 >zero.AND. h3d_data%TH3D_STOP0 /= ep20)
THEN
244 h3d_data%DTH3D0 = (h3d_data%TH3D_STOP0-tt) / h3d_data%NB_H3D_FRAME
245 ELSEIF(h3d_data%TH3D0 >zero)
THEN
246 h3d_data%DTH3D0 = (tstop-h3d_data%TH3D0) / h3d_data%NB_H3D_FRAME
248 h3d_data%DTH3D0 = (tstop-tt) / h3d_data%NB_H3D_FRAME
251 IF (h3d_data%DTH3D0 <= zero)
THEN
252 CALL ancmsg(msgid=293,anmode=aninfo,c1=
'H3D',c2=
'H3D')
259 IF (h3d_data%DTH3D_FCT_ID > 0)
THEN
261 IF(h3d_data%DTH3D_FCT_ID == npc(nfunct+2+jj-1))
THEN
270 . anmode=aninfo_blind_1,
272 . i2=h3d_data%DTH3D_FCT_ID)
274 IF (ok >0) h3d_data%DTH3D_FCT_ID = dtfct
276 IF(h3d_data%DTH3D_FCT_ID > 0)
THEN
277 h3d_data%DTH3D0 = finter(h3d_data%DTH3D_FCT_ID,zero,npc,tf,dydx)
280 IF (h3d_data%DTH3D0 <= zero)
THEN
281 CALL ancmsg(msgid=293,anmode=aninfo,c1=
'H3D',c2=
'H3D')
286 IF(h3d_data%TH3D0 /= zero) h3d_data%TH3D = h3d_data%TH3D0
287 IF(h3d_data%TH3D_STOP0/=zero .AND. h3d_data%TH3D_STOP0 /= ep20) h3d_data%TH3D_STOP = h3d_data%TH3D_STOP0
288 IF(h3d_data%DTH3D0 > zero) h3d_data%DTH3D= h3d_data%DTH3D0
289 IF(h3d_data%DTH3D <= zero)
THEN
291 h3d_data%TH3D_STOP = zero
293 IF (h3d_data%TH3D < tt-dt2 .AND. h3d_data%DTH3D > zero) h3d_data%TH3D = h3d_data%TH3D
294 . + int((tt-dt2-h3d_data%TH3D)/h3d_data%DTH3D)*h3d_data%DTH3D
295 IF (h3d_data%TH3D < tt-dt2)h3d_data%TH3D = h3d_data%TH3D+h3d_data%DTH3D
296 output%DATA%H3D_HAS_NODA_PEXT = 0
314 ALLOCATE(modname(1,1))
319 h3d_data%IPART_SELECT = 0
329 ALLOCATE(h3d_data%N_SKID_INTER(ninter))
330 h3d_data%N_SKID_INTER(1:ninter) = 0
333 ALLOCATE(h3d_data%N_CSE_FRIC_INTER(ninter))
334 h3d_data%N_CSE_FRIC_INTER(1:ninter) = 0
335 output%DATA%NINEFRIC = 0
341 ALLOCATE(h3d_keyword_nodal_scalar(nbmax))
342 h3d_keyword_nodal_scalar(1:nbmax)%KEY3=
''
343 h3d_keyword_nodal_scalar(1:nbmax)%KEY4=
''
344 h3d_keyword_nodal_scalar(1:nbmax)%KEY5=
''
345 h3d_keyword_nodal_scalar(1:nbmax)%KEY6=
''
346 h3d_keyword_nodal_scalar(1:nbmax)%COMMENT=
''
347 ALLOCATE(h3d_keyword_nodal_vector(nbmax))
348 h3d_keyword_nodal_vector(1:nbmax)%KEY3=
''
349 h3d_keyword_nodal_vector(1:nbmax)%KEY4=
''
350 h3d_keyword_nodal_vector(1:nbmax)%KEY5=
''
351 h3d_keyword_nodal_vector(1:nbmax)%KEY6=
''
352 h3d_keyword_nodal_vector(1:nbmax)%COMMENT=
''
353 ALLOCATE(h3d_keyword_nodal_tensor(nbmax))
354 h3d_keyword_nodal_tensor(1:nbmax)%KEY3=
''
355 h3d_keyword_nodal_tensor(1:nbmax)%KEY4=
''
356 h3d_keyword_nodal_tensor(1:nbmax)%KEY5=
''
357 h3d_keyword_nodal_tensor(1:nbmax)%KEY6=
''
358 h3d_keyword_nodal_tensor(1:nbmax)%COMMENT=
''
359 ALLOCATE(h3d_keyword_oned_scalar(nbmax))
360 h3d_keyword_oned_scalar(1:nbmax)%KEY3=
''
361 h3d_keyword_oned_scalar(1:nbmax)%KEY4=
''
362 h3d_keyword_oned_scalar(1:nbmax)%KEY5=
''
363 h3d_keyword_oned_scalar(1:nbmax)%KEY6=
''
364 h3d_keyword_oned_scalar(1:nbmax)%COMMENT=
''
365 ALLOCATE(h3d_keyword_oned_vector(nbmax))
366 h3d_keyword_oned_vector(1:nbmax)%KEY3=
''
367 h3d_keyword_oned_vector(1:nbmax)%KEY4=
''
368 h3d_keyword_oned_vector(1:nbmax)%KEY5=
''
369 h3d_keyword_oned_vector(1:nbmax)%KEY6=
''
370 h3d_keyword_oned_vector(1:nbmax)%COMMENT=
''
371 ALLOCATE(h3d_keyword_oned_tensor(nbmax))
372 h3d_keyword_oned_tensor(1:nbmax)%KEY3=
''
373 h3d_keyword_oned_tensor(1:nbmax)%KEY4=
''
374 h3d_keyword_oned_tensor(1:nbmax)%KEY5=
''
375 h3d_keyword_oned_tensor(1:nbmax)%KEY6=
''
376 h3d_keyword_oned_tensor(1:nbmax)%COMMENT=
''
377 ALLOCATE(h3d_keyword_oned_torsor(nbmax))
378 h3d_keyword_oned_torsor(1:nbmax)%KEY3=
''
379 h3d_keyword_oned_torsor(1:nbmax)%KEY4=
''
380 h3d_keyword_oned_torsor(1:nbmax)%KEY5=
''
381 h3d_keyword_oned_torsor(1:nbmax)%KEY6=
''
382 h3d_keyword_oned_torsor(1:nbmax)%COMMENT=
''
383 ALLOCATE(h3d_keyword_shell_scalar(nbmax))
384 h3d_keyword_shell_scalar(1:nbmax)%KEY3=
''
385 h3d_keyword_shell_scalar(1:nbmax)%KEY4=
''
386 h3d_keyword_shell_scalar(1:nbmax)%KEY5=
''
387 h3d_keyword_shell_scalar(1:nbmax)%KEY6=
''
388 h3d_keyword_shell_scalar(1:nbmax)%COMMENT=
''
389 ALLOCATE(h3d_keyword_shell_vector(nbmax))
390 h3d_keyword_shell_vector(1:nbmax)%KEY3=
''
391 h3d_keyword_shell_vector(1:nbmax)%KEY4=
''
392 h3d_keyword_shell_vector(1:nbmax)%KEY5=
''
393 h3d_keyword_shell_vector(1:nbmax)%KEY6=
''
394 h3d_keyword_shell_vector(1:nbmax)%COMMENT=
''
395 ALLOCATE(h3d_keyword_shell_tensor(nbmax))
396 h3d_keyword_shell_tensor(1:nbmax)%KEY3=
''
397 h3d_keyword_shell_tensor(1:nbmax)%KEY4=
''
398 h3d_keyword_shell_tensor(1:nbmax)%KEY5=
''
399 h3d_keyword_shell_tensor(1:nbmax)%KEY6=
''
400 h3d_keyword_shell_tensor(1:nbmax)%COMMENT=
''
401 ALLOCATE(h3d_keyword_solid_scalar(nbmax))
402 h3d_keyword_solid_scalar(1:nbmax)%KEY3=
''
403 h3d_keyword_solid_scalar(1:nbmax)%KEY4=
''
404 h3d_keyword_solid_scalar(1:nbmax)%KEY5=
''
405 h3d_keyword_solid_scalar(1:nbmax)%KEY6=
''
406 h3d_keyword_solid_scalar(1:nbmax)%COMMENT=
''
407 ALLOCATE(h3d_keyword_solid_vector(nbmax))
408 h3d_keyword_solid_vector(1:nbmax)%KEY3=
''
409 h3d_keyword_solid_vector(1:nbmax)%KEY4=
''
410 h3d_keyword_solid_vector(1:nbmax)%KEY5=
''
411 h3d_keyword_solid_vector(1:nbmax)%KEY6=
''
412 h3d_keyword_solid_vector(1:nbmax)%COMMENT=
''
413 ALLOCATE(h3d_keyword_solid_tensor(nbmax))
414 h3d_keyword_solid_tensor(1:nbmax)%KEY3=
''
415 h3d_keyword_solid_tensor(1:nbmax)%KEY4=
''
416 h3d_keyword_solid_tensor(1:nbmax)%KEY5=
''
417 h3d_keyword_solid_tensor(1:nbmax)%KEY6=
''
418 h3d_keyword_solid_tensor(1:nbmax)%COMMENT=
''
419 ALLOCATE(h3d_keyword_sph_scalar(nbmax))
420 h3d_keyword_sph_scalar(1:nbmax)%KEY3=
''
421 h3d_keyword_sph_scalar(1:nbmax)%KEY4=
''
422 h3d_keyword_sph_scalar(1:nbmax)%KEY5=
''
423 h3d_keyword_sph_scalar(1:nbmax)%KEY6=
''
424 h3d_keyword_sph_scalar(1:nbmax)%COMMENT=
''
425 ALLOCATE(h3d_keyword_sph_tensor(nbmax))
426 h3d_keyword_sph_tensor(1:nbmax)%KEY3=
''
427 h3d_keyword_sph_tensor(1:nbmax)%KEY4=
''
428 h3d_keyword_sph_tensor(1:nbmax)%KEY5=
''
429 h3d_keyword_sph_tensor(1:nbmax)%KEY6=
''
430 h3d_keyword_sph_tensor(1:nbmax)%COMMENT=
''
431 ALLOCATE(h3d_keyword_quad_scalar(nbmax))
432 h3d_keyword_quad_scalar(1:nbmax)%KEY3=
''
433 h3d_keyword_quad_scalar(1:nbmax)%KEY4=
''
434 h3d_keyword_quad_scalar(1:nbmax)%KEY5=
''
435 h3d_keyword_quad_scalar(1:nbmax)%KEY6=
''
436 h3d_keyword_quad_scalar(1:nbmax)%COMMENT=
''
437 ALLOCATE(h3d_keyword_quad_vector(nbmax))
438 h3d_keyword_quad_vector(1:nbmax)%KEY3=
''
439 h3d_keyword_quad_vector(1:nbmax)%KEY4=
''
440 h3d_keyword_quad_vector(1:nbmax)%KEY5=
''
441 h3d_keyword_quad_vector(1:nbmax)%KEY6=
''
442 h3d_keyword_quad_vector(1:nbmax)%COMMENT=
''
443 ALLOCATE(h3d_keyword_quad_tensor(nbmax))
444 h3d_keyword_quad_tensor(1:nbmax)%KEY3=
''
445 h3d_keyword_quad_tensor(1:nbmax)%KEY4=
''
446 h3d_keyword_quad_tensor(1:nbmax)%KEY5=
''
447 h3d_keyword_quad_tensor(1:nbmax)%KEY6=
''
448 h3d_keyword_quad_tensor(1:nbmax)%COMMENT=
''
450 ALLOCATE(id_mat_mds(
max(1,mds_nmat)))
451 id_mat_mds(1:
max(1,mds_nmat)) = 0
452 ALLOCATE(index_mat_mds(
max(1,mds_nmat)))
453 index_mat_mds(1:
max(1,mds_nmat)) = 0
487 CALL h3d_list_quad_scalar(h3d_keyword_quad_scalar, geo, igeo, multi_fvm, h3d_num_key%QUAD_SCALAR)
495 IF ((numsphg > 0).and.(h3d_data%DTH3D0 > zero))
THEN
498 DO id_input=1,h3d_data%N_INPUT_H3D
499 key2 = h3d_data%INPUT_LIST(id_input)%KEY2
500 key3 = h3d_data%INPUT_LIST(id_input)%KEY3
501 IF ((key2==
'ELEM').or.(key2==
'SPH').AND.(key3==
'DIAMETER')) ndef = 1
508 ELSEIF (id_def==2)
THEN
516 CALL create_h3d_input(h3d_data,dum,dum,dum,nbc,key0,key2,key3,key4,key5,key6,key7,key8)
524 DO id_input=1,h3d_data%N_INPUT_H3D
528 iok_h3dkey_combination = 0
531 key2 = h3d_data%INPUT_LIST(id_input)%KEY2
532 key3 = h3d_data%INPUT_LIST(id_input)%KEY3
533 key4 = h3d_data%INPUT_LIST(id_input)%KEY4
534 key5 = h3d_data%INPUT_LIST(id_input)%KEY5
535 key6 = h3d_data%INPUT_LIST(id_input)%KEY6
536 key7 = h3d_data%INPUT_LIST(id_input)%KEY7
537 key8 = h3d_data%INPUT_LIST(id_input)%KEY8
609 IF ( key3==
'PEXT'.OR.key4==
'PEXT') ipext=1
610 IF ( key4==
'OUTER'.OR.key5==
'OUTER') iouter=1
615 IF ( key3(i:i) ==
'=' ) is_char_key3 = 0
616 IF ( key3(i:i) /=
' ' ) is_empty_key3 = 0
617 IF ( key4(i:i) ==
'=' ) is_char_key4 = 0
618 IF ( key4(i:i) /=
' ' ) is_empty_key4 = 0
619 IF ( key5(i:i) ==
'=' ) is_char_key5 = 0
620 IF ( key5(i:i) /=
' ' ) is_empty_key5 = 0
621 IF ( key6(i:i) ==
'=' ) is_char_key6 = 0
622 IF ( key6(i:i) /=
' ' ) is_empty_key6 = 0
623 IF ( key7(i:i) ==
'=' ) is_char_key7 = 0
624 IF ( key7(i:i) /=
' ' ) is_empty_key7 = 0
625 IF ( key8(i:i) ==
'=' ) is_char_key8 = 0
626 IF ( key8(i:i) /=
' ' ) is_empty_key8 = 0
637 . key7 ,key8 ,is_all ,is_lower ,is_upper ,
638 .
'PLY' ,3 ,is_ply ,ply ,
639 . is_ply_all ,ibid1 ,ibid2 ,is_def ,
640 . ibid3 ,is_memb ,ibid4 )
650 . key7 ,key8 ,is_all ,is_lower ,is_upper ,
651 .
'LAYER' ,5 ,is_layer ,layer ,
652 . is_layer_all,is_layer_lower,is_layer_upper ,is_def ,
653 . ibid1 ,is_memb ,ibid2 )
663 . key7 ,key8 ,is_all ,is_lower ,is_upper ,
664 .
'NPT' ,3 ,is_ipt ,ipt ,
665 . is_ipt_all ,is_ipt_lower,is_ipt_upper,is_def ,
666 . ibid1 ,is_memb ,is_ipt_memb)
676 . key7 ,key8 ,is_all ,is_lower ,is_upper ,
677 .
'UVAR' ,4 ,is_uvar ,iuvar ,
678 . is_uvar_all,ibid1 ,ibid2 ,is_def ,
679 . ibid3 ,is_memb ,ibid4 )
689 . key7 ,key8 ,is_all ,is_lower ,is_upper ,
690 .
'MDS_VAR' ,7 ,is_mdsvar ,imdsvar ,
691 . is_mdsvar_all,ibid1 ,ibid2 ,is_def ,
692 . is_mdsvar_def,is_memb ,ibid3 )
702 . key7 ,key8 ,is_all ,is_lower ,is_upper ,
703 .
'IR' ,2 ,is_ir ,ir ,
704 . is_ir_all ,is_ir_lower ,is_ir_upper,is_def ,
705 . ibid1 ,is_memb ,ibid2 )
715 . key7 ,key8 ,is_all ,is_lower ,is_upper ,
716 .
'IS' ,2 ,is_is ,is ,
717 . is_is_all ,is_is_lower ,is_is_upper ,is_def ,
718 . ibid1 ,is_memb ,ibid2 )
728 . key7 ,key8 ,is_all ,is_lower ,is_upper ,
729 .
'IT' ,2 ,is_it ,it ,
730 . is_it_all ,is_it_lower ,is_it_upper ,is_def ,
731 . ibid1 ,is_memb ,ibid2 )
741 . key7 ,key8 ,is_all ,is_lower ,is_upper ,
742 .
'INTER' ,5 ,is_inter ,inter ,
743 . is_inter_all,ibid1 ,ibid2 ,is_def ,
744 . ibid3 ,is_memb ,ibid4 )
754 . key7 ,key8 ,is_all ,is_lower ,is_upper ,
755 .
'ID' ,2 ,is_id ,
id ,
757 . ibid3 ,is_memb ,ibid4 )
767 . key7 ,key8 ,is_all ,is_lower ,is_upper ,
768 .
'MODE' ,4 ,is_mode ,mode ,
769 . is_mode_all,ibid1 ,ibid2 ,is_def ,
770 . ibid3 ,is_memb ,ibid4 )
773 IF ( is_char_key3 == 1 .AND. is_empty_key3 == 0)
THEN
775 IF ( key3(i:i) /=
' ' )
THEN
777 key3_glob(cpt:cpt) = key3(i:i)
781 IF ( is_char_key4 == 1 .AND. is_empty_key4 == 0 )
THEN
783 key3_glob(cpt:cpt) =
'/'
785 IF ( key4(i:i) /=
' ' )
THEN
787 key3_glob(cpt:cpt) = key4(i:i)
791 IF ( is_char_key5 == 1 .AND. is_empty_key5 == 0 )
THEN
793 key3_glob(cpt:cpt) =
'/'
795 IF ( key5(i:i) /=
' ' )
THEN
797 key3_glob(cpt:cpt) = key5(i:i)
801 IF ( is_char_key6 == 1 .AND. is_empty_key6 == 0 )
THEN
803 key3_glob(cpt:cpt) =
'/'
805 IF ( key6(i:i) /=
' ' )
THEN
807 key3_glob(cpt:cpt) = key6(i:i)
811 IF ( is_char_key7 == 1 .AND. is_empty_key7 == 0 )
THEN
813 key3_glob(cpt:cpt) =
'/'
815 IF ( key7(i:i) /=
' ' )
THEN
817 key3_glob(cpt:cpt) = key7(i:i)
821 IF ( is_char_key8 == 1 .AND. is_empty_key8 == 0 )
THEN
823 key3_glob(cpt:cpt) =
'/'
825 IF ( key8(i:i) /=
' ' )
THEN
827 key3_glob(cpt:cpt) = key8(i:i)
836 IF(igeo(11,k) == 9 .OR. igeo(11,k) == 11 .OR. igeo(11,k) == 16)
838 IF(igeo(11,k) == 10 .OR. igeo(11,k) == 11 .OR. igeo(11,k) == 16)
840 IF(igeo(11,k) == 17 .OR. igeo(11,k) == 51 .OR. igeo(11,k) == 52)
846 IF (ipm(2,k) == 200)
THEN
848 id_mat_mds(cpt) = ipm(1,k)
849 index_mat_mds(cpt) = k
857 key3_read = key3_glob
860 DO WHILE (cpt_key <= nb_key)
861 CALL h3d_gene_keyword(key2_read,key2,key3_read,key3_glob,nb_key,cpt_key,multi_fvm,
862 . is_model_npt,is_model_layer,is_model_ply,is_mdsvar,is_mdsvar_def,
863 . is_ply_all,is_layer_all,is_ipt,is_layer,is_ply,is_id)
866 IF(key2 ==
'PART')
THEN
869 h3d_data%IPART_SELECT = 1
870 iok_h3dkey_combination = 1
874 IF(key2 ==
'NODA')
THEN
877 IF (is_inter_all == 1) ninter_max = ninter
878 ALLOCATE (inter_input(
max(1,ninter_max)))
879 ALLOCATE (is_available_key(
max(1,ninter_max)))
881 jmax=
max(h3d_num_key%NODAL_SCALAR, h3d_num_key%NODAL_VECTOR, h3d_num_key%NODAL_TENSOR)
888 IF ( key3_glob == h3d_keyword_nodal_scalar(j)%KEY3) is_scalar = 1
889 IF ( key3_glob == h3d_keyword_nodal_vector(j)%KEY3) is_vector = 1
890 IF ( key3_glob == h3d_keyword_nodal_tensor(j)%KEY3) is_tensor = 1
891 IF ( is_scalar == 1 .OR. is_vector == 1 .OR. is_tensor == 1) iok_h3dkey = 1
893 IF ( is_scalar == 1 )
THEN
894 IF(h3d_keyword_nodal_scalar(j)%IS_INTER /= 0 )
THEN
895 IF(is_inter_all == 0 )
THEN
896 cpt_h3d = cpt_h3d + 1
897 inter_input(cpt_h3d) = 0
898 is_available_key(cpt_h3d) = 1
899 IF(h3d_keyword_nodal_scalar(j)%IS_INTER == 1)
THEN
902 IF(ipari(15,k) == inter)
THEN
904 inter_input(cpt_h3d) = k
905 IF(key3_glob(1:4) ==
'SKID' )
THEN
906 ninterskid = ninterskid +1
907 h3d_data%N_SCAL_SKID = ninterskid
908 h3d_data%N_SKID_INTER(k) = ninterskid
909 ELSEIF(key3_glob(1:8) ==
'CSE_FRIC' )
THEN
910 IF(output%DATA%NINEFRIC == 0) output%DATA%NINEFRIC = output%DATA%NINEFRIC +1
911 h3d_data%N_SCAL_CSE_FRICINT = output%DATA%NINEFRIC
912 h3d_data%N_CSE_FRIC_INTER(k) = output%DATA%NINEFRIC
917 h3d_data%N_SCAL_CSE_FRIC = 1
921 IF(ninter_max /= 0)
THEN
922 output%DATA%NINEFRIC = 0
924 IF(key3_glob(1:4) ==
'SKID' )
THEN
925 cpt_h3d = cpt_h3d + 1
927 inter_input(cpt_h3d) = k
928 is_available_key(cpt_h3d) = 1
929 h3d_data%N_SKID_INTER(k) = k
930 ELSEIF(key3_glob(1:8) ==
'CSE_FRIC' )
THEN
933 IF(h3d_data%N_CSE_FRIC_INTER(k) ==0)
THEN
934 output%DATA%NINEFRIC = output%DATA%NINEFRIC +1
935 cpt_h3d = cpt_h3d + 1
937 inter_input(cpt_h3d) = k
938 is_available_key(cpt_h3d) = 1
939 h3d_data%N_CSE_FRIC_INTER(k) = k
941 ELSEIF(n19 > 0 )
THEN
942 IF(h3d_data%N_CSE_FRIC_INTER(n19) ==0)
THEN
943 output%DATA%NINEFRIC = output%DATA%NINEFRIC +1
944 cpt_h3d = cpt_h3d + 1
946 inter_input(cpt_h3d) = n19
947 is_available_key(cpt_h3d) = 1
948 h3d_data%N_CSE_FRIC_INTER(k) = n19
950 h3d_data%N_CSE_FRIC_INTER(k) = n19
955 IF(key3_glob(1:4) ==
'SKID' ) h3d_data%N_SCAL_SKID = ninter
956 IF(key3_glob(1:8) ==
'CSE_FRIC' ) h3d_data%N_SCAL_CSE_FRICINT = output%DATA%NINEFRIC
960 cpt_h3d = cpt_h3d + 1
961 inter_input(cpt_h3d) = 0
963 is_available_key(cpt_h3d) = 1
965 IF(key3_glob(1:4) ==
'PEXT')
THEN
966 output%DATA%H3D_HAS_NODA_PEXT = 1
969 IF ( is_scalar == 1 )
THEN
971 IF (is_available_key(k) == 1 .AND. is_scalar == 1)
THEN
973 . trim(h3d_keyword_nodal_scalar(j)%TEXT1),len_trim(h3d_keyword_nodal_scalar(j)%TEXT1),
974 . h3d_keyword_nodal_scalar(j)%COMMENT,80,ipart,key3_glob,
975 . inter_input(k),igrpart)
976 iok_h3dkey_combination = 1
980 IF ( key3_glob == h3d_keyword_nodal_vector(j)%KEY3 )
THEN
982 . trim(h3d_keyword_nodal_vector(j)%TEXT1),
983 . len_trim(h3d_keyword_nodal_vector(j)%TEXT1),
984 . h3d_keyword_nodal_vector(j)%COMMENT,80,ipart,key3_glob,
986 iok_h3dkey_combination = 1
988 IF ( key3_glob == h3d_keyword_nodal_tensor(j)%KEY3 )
THEN
990 . trim(h3d_keyword_nodal_tensor(j)%TEXT1),
991 . len_trim(h3d_keyword_nodal_tensor(j)%TEXT1),
992 . h3d_keyword_nodal_tensor(j)%COMMENT,80,ipart,key3_glob,
994 iok_h3dkey_combination = 1
1000 DEALLOCATE (inter_input)
1001 DEALLOCATE (is_available_key)
1015 IF(key2 ==
'SHELL' .OR. key2 ==
'ELEM'.OR. key2 ==
'SOLID' .OR.
1016 . key2 ==
'BRICK' .OR. key2 ==
'QUAD'.OR. key2 ==
'BEAM ' .OR.
1017 . key2 ==
'SPRING'.OR. key2 ==
'TRUSS'.OR. key2 ==
'SPH')
THEN
1029 IF (is_layer_all == 1)
THEN
1031 IF(igeo(11,k) == 10 .OR. igeo(11,k) == 11 .OR. igeo(11,k) == 16)
THEN
1032 nlay_max =
max(nlay_max,igeo(4,k))
1033 ELSEIF(igeo(11,k) == 20 .OR. igeo(11,k) == 21 .OR. igeo(11,k) == 22)
THEN
1034 nlay_max =
max(nlay_max,
max(1,igeo(30,k)))
1042 IF(igeo(11,k) == 1 .OR. igeo(11,k) == 9)
THEN
1043 nip_elem_max =
max(nip_elem_max,igeo(4,k))
1044 IF (igeo(4,k)==0)
THEN
1046 nip_elem_max = nip_elem_max + 1
1048 ELSEIF(igeo(11,k) == 18)
THEN
1049 nip_elem_max =
max(nip_elem_max,igeo(3,k))
1052 IF(is_ipt_all == 1 .AND. nip_elem_max == 0) ishell_npt_check = 1
1055 id_ply(1:numgeo+numply) = 0
1056 ipt_ply(1:numgeo+numply) = 0
1057 mat_ply(1:numgeo+numply) = 0
1058 IF (is_ply_all == 1)
THEN
1060 IF(igeo(11,k) == 19)
THEN
1061 nply_max = nply_max + 1
1062 id_ply(nply_max) = igeo(1,k)
1063 ipt_ply(nply_max) = igeo(4,k)
1064 mat_ply(nply_max) = igeo(101,k)
1065 nip_ply_max =
max(nip_ply_max,igeo(44,k))
1069 nply_max = nply_max + 1
1078 IF (mat_ply(k) == imat)
THEN
1079 mat_ply(k) = mat_param(imat)%MAT_ID
1085 nip_max =
max(nip_elem_max,nip_ply_max)
1087 IF (is_uvar_all == 1)
THEN
1089 nuvar_max =
max(nuvar_max,ipm(8,k))
1092 IF (is_mdsvar_all == 1)
THEN
1093 IF(key3_glob(1:3) ==
'MDS' )
THEN
1095 nmdsvar_max = nmdsvar_max + mds_ndepsvar(k)
1100 IF (is_mdsvar_def == 1)
THEN
1101 IF(key3_glob(1:3) ==
'MDS' )
THEN
1103 DO l=1,mds_ndepsvar(k)
1104 nmdsvar_max = nmdsvar_max+mds_output_table(l,k)
1111 IF (is_ir_all == 1)
THEN
1113 IF(igeo(11,k) == 6 .OR. igeo(11,k) == 14 .OR. igeo(11,k) == 20 .OR.
1114 . igeo(11,k) == 21 .OR. igeo(11,k) == 22)
THEN
1115 IF(igeo(4,k) == 1 .OR. igeo(10,k)==15)
THEN
1117 ELSEIF(igeo(4,k) == 8)
THEN
1120 nptr=
max(2,igeo(4,k)/100)
1121 ir_max =
max(ir_max,nptr)
1124 IF(igeo(4,k) == 4)
THEN
1130 ELSEIF(igeo(11,k) == 43)
THEN
1131 ir_max =
max(ir_max,4)
1137 IF (is_is_all == 1)
THEN
1139 IF(igeo(11,k) == 6 .OR. igeo(11,k) == 14 .OR. igeo(11,k) == 20 .OR.
1140 . igeo(11,k) == 21 .OR. igeo(11,k) == 22)
THEN
1142 IF(igeo(10,k)==15)
THEN
1143 is_max =
max(is_max,igeo(4,k))
1144 ELSEIF(igeo(4,k) == 1)
THEN
1146 ELSEIF(igeo(4,k) == 8)
THEN
1149 npts=
max(2,mod(igeo(4,k)/10,10))
1150 is_max =
max(is_max,npts)
1153 IF(igeo(4,k) == 4)
THEN
1159 ELSEIF(igeo(11,k) == 43)
THEN
1160 is_max =
max(is_max,1)
1166 IF (is_it_all == 1)
THEN
1168 IF(igeo(11,k) == 6 .OR. igeo(11,k) == 14 .OR. igeo(11,k) == 20 .OR.
1169 . igeo(11,k) == 21 .OR. igeo(11,k) == 22)
THEN
1170 IF(igeo(4,k) == 1 .OR. igeo(10,k)==15)
THEN
1172 ELSEIF(igeo(4,k) == 8)
THEN
1175 nptt=
max(2,mod(igeo(4,k),10))
1176 it_max =
max(it_max,nptt)
1178 ELSEIF(igeo(11,k) == 43)
THEN
1179 it_max =
max(it_max,1)
1187 IF ((is_ir_all + is_is_all+is_it_all)>0)
THEN
1189 IF(igeo(10,k)==14.AND. (igeo(11,k) == 20 .OR.
1190 . igeo(11,k) == 21 .OR. igeo(11,k) == 22))
THEN
1198 IF (nptt==0) nptt= igeo(15,k)
1200 IF (npts==0) npts= igeo(15,k)
1202 IF (nptr==0) nptr= igeo(15,k)
1204 IF (is_ir_all == 1) ir_max =
max(ir_max,nptr)
1205 IF (is_is_all == 1) is_max =
max(is_max,npts)
1206 IF (is_it_all == 1) it_max =
max(it_max,nptt)
1212 IF (numels10g>0)
THEN
1213 IF (is_ir_all == 1) ir_max =
max(ir_max,2)
1214 IF (is_is_all == 1) is_max =
max(is_max,2)
1215 IF (is_it_all == 1) it_max =
max(it_max,2)
1219 IF (is_id_all == 1)
THEN
1221 IF (ipm(2,k) == 36)
THEN
1223 ELSEIF (ipm(2,k) == 78)
THEN
1225 ELSEIF (ipm(2,k) == 87)
THEN
1238 IF (key3_glob(1:7) ==
'FAILURE')
THEN
1244 IF ((is_mode > 0).OR.(is_mode_all > 0))
THEN
1247 IF (is_id_all > 0)
THEN
1250 IF (
ALLOCATED(modname))
DEALLOCATE(modname)
1251 IF (
ALLOCATED(fail_name))
DEALLOCATE(fail_name)
1252 IF (
ALLOCATED(irup_id_all))
DEALLOCATE(irup_id_all)
1255 nfail = mat_param(imat)%NFAIL
1258 nmod = mat_param(imat)%FAIL(j)%NMOD
1259 IF (mat_param(imat)%FAIL(j)%FAIL_ID > 0 .AND. nmod > 0)
THEN
1260 cpt_irup = cpt_irup + 1
1261 cpt_mod =
max(cpt_mod,nmod)
1268 ALLOCATE(fail_name(cpt_irup))
1269 ALLOCATE(irup_id_all(cpt_irup))
1270 ALLOCATE(modname(cpt_irup,cpt_mod))
1271 irup_id_all(1:cpt_irup) = 0
1275 nfail = mat_param(imat)%NFAIL
1278 nmod = mat_param(imat)%FAIL(j)%NMOD
1279 IF (mat_param(imat)%FAIL(j)%FAIL_ID > 0)
THEN
1280 cpt_irup = cpt_irup + 1
1282 fail_name(cpt_irup) = mat_param(imat)%FAIL(j)%KEYWORD
1283 irup_id_all(cpt_irup) = mat_param(imat)%FAIL(j)%FAIL_ID
1284 modname(cpt_irup,1:nmod) = mat_param(imat)%FAIL(j)%MODE(1:nmod)
1285 IF (is_mode_all > 0)
THEN
1286 cpt_mod =
max(cpt_mod,nmod)
1287 ELSEIF (is_mode > 0)
THEN
1300 IF (cpt_irup == 0)
THEN
1301 IF (ispmd == 0)
THEN
1302 WRITE(test_chain,
'(10A)')
"/H3D/",trim(key2),
"/",
1303 . trim(key3),
"/",trim(key4),
"/",
1304 . trim(key5),
"/",trim(key6)
1316 IF (cpt_mod == 0)
THEN
1317 IF (ispmd == 0)
THEN
1318 WRITE(test_chain,
'(10A)')
"/H3D/",trim
"/"
1319 . trim(key3),
"/",trim(key4),
"/",
1320 . trim(key5),
"/",trim(key6)
1330 ELSEIF (is_id > 0)
THEN
1332 IF (
ALLOCATED(modname))
DEALLOCATE(modname)
1333 IF (
ALLOCATED(fail_name))
DEALLOCATE(fail_name)
1335 nfail = mat_param(imat)%NFAIL
1338 IF (mat_param(imat)%FAIL(j)%FAIL_ID ==
id)
THEN
1339 nmod = mat_param(imat)%FAIL(j)%NMOD
1341 ALLOCATE(modname(1,nmod))
1342 modname(1,1:nmod) = mat_param(imat)%FAIL(j)%MODE(1:nmod)
1343 IF (is_mode_all > 0)
THEN
1345 ELSEIF (is_mode > 0)
THEN
1350 ALLOCATE(fail_name(1))
1351 fail_name(1) = mat_param(imat)%FAIL(j)%KEYWORD
1359 IF (cpt_irup == 0)
THEN
1360 IF (ispmd == 0)
THEN
1361 WRITE(test_chain,
'(10A)')
"/H3D/",trim(key2),
"/",
1362 . trim(key3),
"/",trim(key4),
"/",
1363 . trim(key5),
"/",trim(key6)
1373 IF (cpt_mod == 0)
THEN
1374 IF (ispmd == 0)
THEN
1375 WRITE(test_chain,
'(10A)')
"/H3D/",trim(key2),
"/",
1376 . trim(key3),
"/",trim(key4),
"/",
1377 . trim(key5),
"/",trim(key6)
1391 IF (is_id_all > 0)
THEN
1394 IF (
ALLOCATED(fail_name))
DEALLOCATE(fail_name)
1395 IF (
ALLOCATED(irup_id_all))
DEALLOCATE(irup_id_all)
1398 nfail = mat_param(imat)%NFAIL
1401 IF (mat_param(imat)%FAIL(j)%FAIL_ID > 0)
THEN
1402 cpt_irup = cpt_irup + 1
1409 ALLOCATE(fail_name(cpt_irup))
1410 ALLOCATE(irup_id_all(cpt_irup))
1411 irup_id_all(1:cpt_irup) = 0
1414 nfail = mat_param(imat)%NFAIL
1417 IF (mat_param(imat)%FAIL(j)%FAIL_ID > 0)
THEN
1418 cpt_irup = cpt_irup + 1
1419 fail_name(cpt_irup) = mat_param(imat)%FAIL(j)%KEYWORD
1420 irup_id_all(cpt_irup) = mat_param(imat)%FAIL(j)%FAIL_ID
1430 IF (cpt_irup == 0)
THEN
1431 IF (ispmd == 0)
THEN
1432 WRITE(test_chain,
'(10A)')
"/H3D/",trim(key2),
"/",
1433 . trim(key3),
"/",trim(key4),
"/",
1434 . trim(key5),
"/",trim(key6)
1443 ELSEIF (is_id > 0)
THEN
1447 IF (
ALLOCATED(fail_name))
DEALLOCATE(fail_name)
1449 nfail = mat_param(imat)%NFAIL
1452 IF (mat_param(imat)%FAIL(j)%FAIL_ID ==
id)
THEN
1453 ALLOCATE(fail_name(1))
1455 fail_name(1) = mat_param(imat)%FAIL(j)%KEYWORD
1462 IF (cpt_irup == 0)
THEN
1463 IF (ispmd == 0)
THEN
1464 WRITE(test_chain,
'(10A)')
"/H3D/",trim(key2),
"/",
1465 . trim(key3),
"/",trim(key4),
"/",
1466 . trim(key5),
"/",trim(key6)
1484 IF ((key3_glob(1:4) ==
'DAMG').AND.((is_mode > 0).OR.(is_mode_all > 0)))
THEN
1491 IF (
ALLOCATED(modname))
DEALLOCATE(modname)
1493 IF (mat_param(imat)%MAT_ID ==
id)
THEN
1495 nmod = mat_param(imat)%NMOD
1496 ALLOCATE(modname(1,nmod))
1497 modname(1,1:nmod) = mat_param(imat)%MODE(1:nmod)
1498 mlw = mat_param(imat)%ILAW
1499 IF (is_mode_all > 0)
THEN
1501 ELSEIF (is_mode > 0)
THEN
1504 IF ((nmod > 0).AND.(mode <= nmod)) cpt_mod = 1
1508 IF (cpt_lawid == 0)
THEN
1509 IF (ispmd == 0)
THEN
1510 WRITE(test_chain,
'(10A)')
"/H3D/",trim(key2),
"/",
1511 . trim(key3),
"/",trim(key4),
"/",
1512 . trim(key5),
"/",trim(key6)
1522 IF (cpt_mod == 0)
THEN
1523 IF (ispmd == 0)
THEN
1524 WRITE(test_chain,
'(10A)')
"/H3D/",trim(key2),
"/"
1525 . trim(key3),
"/",trim(key4),
"/",
1526 . trim(key5),
"/",trim(key6)
1538 IF (ispmd == 0)
THEN
1539 WRITE(test_chain,
'(10A)')
"/H3D/",trim(key2),
"/",
1540 . trim(key3),
"/",trim(key4),
"/",
1541 . trim(key5),
"/",trim(key6)
1550 ELSEIF ((key3_glob(1:4) ==
'DAMG').AND.(is_id > 0))
THEN
1553 IF (mat_param(imat)%MAT_ID ==
id)
THEN
1554 mlw = mat_param(imat)%ILAW
1558 IF (cpt_lawid == 0)
THEN
1559 IF (ispmd == 0)
THEN
1560 WRITE(test_chain,
'(10A)')
"/H3D/",trim(key2),
"/",
1561 . trim(key3),
"/",trim(key4),
"/",
1562 . trim(key5),
"/",trim(key6)
1575 size_input =
max(1,nlay_max)*
max(1,nip_max)*
max(1,nply_max)*
max(1,nuvar_max)*
1576 .
max(1,ir_max)*
max(1,is_max)*
max(1,it_max)*
max(1,nmdsvar_max)*
max(1,id_max)*
1578 ALLOCATE (layer_input(size_input))
1579 ALLOCATE (ipt_input(size_input))
1580 ALLOCATE (ply_input(size_input))
1581 ALLOCATE (uvar_input(size_input))
1582 ALLOCATE (gauss_input(size_input))
1583 ALLOCATE (ir_input(size_input))
1584 ALLOCATE (is_input(size_input))
1585 ALLOCATE (it_input(size_input))
1586 ALLOCATE (is_available_key(size_input))
1587 ALLOCATE (mdsvar_input(size_input))
1588 ALLOCATE (mdsvar_input1(size_input))
1589 ALLOCATE (mdsvar_input2(size_input))
1590 ALLOCATE (ids_input(size_input))
1591 ALLOCATE (irup_h3d(size_input))
1592 ALLOCATE (modes_input(size_input))
1595 ALLOCATE (mdsvar_input_tmp(
max(1,nmdsvar_max)))
1596 ALLOCATE (mdsvar_input1_tmp(
max(1,nmdsvar_max)))
1597 ALLOCATE (mdsvar_input2_tmp(
max(1,nmdsvar_max)))
1607 is_available_key(:) = 0
1609 mdsvar_input1(:) = 0
1610 mdsvar_input2(:) = 0
1615 IF (is_mdsvar_all == 1)
THEN
1616 IF(key3_glob(1:3) ==
'MDS' )
THEN
1618 DO l=1,mds_ndepsvar(k)
1620 mdsvar_input_tmp(cpt) = k
1621 mdsvar_input1_tmp(cpt) = l
1622 mdsvar_input2_tmp(cpt) = id_mat_mds(k)
1627 IF (is_mdsvar_def == 1)
THEN
1628 IF(key3_glob(1:3) ==
'MDS' )
THEN
1630 DO l=1,mds_ndepsvar(k)
1631 IF(mds_output_table(l,k) /= 0)
THEN
1633 mdsvar_input_tmp(cpt) = k
1634 mdsvar_input1_tmp(cpt) = l
1635 mdsvar_input2_tmp(cpt) = id_mat_mds(k)
1645 IF(.NOT.
ALLOCATED(is_layer_mat))
ALLOCATE(is_layer_mat(
max(1,nummat),
max(1,nlay_max)))
1646 is_layer_mat(1:
max(1,nummat),
max(1,nlay_max)) = 0
1648 IF(is_mdsvar == 1)
THEN
1653 2 mlw ,nel ,nft ,iad ,ity ,
1654 3 npt ,jale ,ismstr ,jeul ,jturb ,
1656 5 nvaux ,jpor ,jcvt ,jclose ,jplasol ,
1657 6 irep ,iint ,igtyp ,israt ,isrot ,
1658 7 icsen ,isorth ,isorthg ,ifailure,jsms )
1660 nlay = elbuf_str(ng)%NLAY
1661 isubstack = iparg(71,ng)
1663 nuvar = elbuf_str(ng)%BUFLY(j)%NVAR_MAT
1664 IF(iuvar <= nuvar)
THEN
1666 IF (igtyp == 17 .OR. igtyp == 51)
THEN
1667 id_ply_tmp = igeo(1,stack%IGEO(2+j,isubstack))
1669 id_ply_tmp =
ply_info(1,stack%IGEO(2+j,isubstack)-numstack)
1672 imat = elbuf_str(ng)%BUFLY(j)%IMAT
1674 is_layer_mat(imat,j) = 1
1681 IF(key2 ==
'SHELL' .OR. key2 ==
'ELEM')
THEN
1684 jmax=
max(h3d_num_key%SHELL_SCALAR, h3d_num_key%SHELL_VECTOR, h3d_num_key%SHELL_TENSOR)
1690 IF ( key3_glob == h3d_keyword_shell_scalar(j)%KEY3) is_scalar = 1
1691 IF ( key3_glob == h3d_keyword_shell_vector(j)%KEY3) is_vector = 1
1692 IF ( key3_glob == h3d_keyword_shell_tensor(j)%KEY3) is_tensor = 1
1693 IF ( is_scalar == 1 .OR. is_vector == 1 .OR. is_tensor == 1) iok_h3dkey = 1
1695 IF ( is_scalar == 1 .OR. is_vector == 1 .OR. is_tensor == 1 )
THEN
1696 IF(is_scalar == 1) h3d_keyword_shell = h3d_keyword_shell_scalar(j)
1697 IF(is_vector == 1) h3d_keyword_shell = h3d_keyword_shell_vector(j)
1698 IF(is_tensor == 1) h3d_keyword_shell = h3d_keyword_shell_tensor(j)
1699 IF(h3d_keyword_shell%IS_LAYER /= 0 .OR.
1700 . h3d_keyword_shell%IS_IPT /= 0 .OR.
1701 . h3d_keyword_shell%IS_PLY /= 0 .OR.
1702 . h3d_keyword_shell%IS_UVAR /= 0 .OR.
1703 . h3d_keyword_shell%IS_MDSVAR /= 0 .OR.
1704 . h3d_keyword_shell%IS_ID /= 0 .OR.
1705 . h3d_keyword_shell%IS_MODE /= 0 )
THEN
1707 IF(is_layer_all == 0 .AND. is_ipt_all == 0 .AND. is_ply_all == 0 .AND. is_uvar_all == 0 .AND.
1708 . is_mdsvar_all == 0 .AND. is_mdsvar_def ==0 .AND. is_id_all ==0 .AND. is_mode_all ==0)
THEN
1710 cpt_h3d = cpt_h3d + 1
1711 layer_input(cpt_h3d) = -1
1712 ipt_input(cpt_h3d) = -1
1713 ids_input(cpt_h3d) = -1
1714 ply_input(cpt_h3d) = -1
1715 uvar_input(cpt_h3d)= -1
1716 gauss_input(cpt_h3d) = -1
1717 mdsvar_input(cpt_h3d)= -1
1718 mdsvar_input1(cpt_h3d)= -1
1719 mdsvar_input2(cpt_h3d)= -1
1720 modes_input(cpt_h3d)= -1
1721 is_available_key(cpt_h3d) = 1
1723 IF(h3d_keyword_shell%IS_LAYER == 1)
THEN
1724 IF(layer /= 0) layer_input(cpt_h3d) = layer
1725 IF(is_layer_lower == 1) layer_input(cpt_h3d) = -2
1726 IF(is_layer_upper == 1) layer_input(cpt_h3d) = -3
1729 IF(h3d_keyword_shell%IS_IPT == 1)
THEN
1730 IF(ipt /= 0) ipt_input(cpt_h3d) = ipt
1731 IF(is_ipt_lower == 1 )ipt_input(cpt_h3d) = -2
1732 IF(is_ipt_upper == 1 )ipt_input(cpt_h3d) = -3
1733 IF(is_ipt_memb == 1 )ipt_input(cpt_h3d) = -4
1736 IF(h3d_keyword_shell%IS_PLY == 1)
THEN
1737 IF(ply /= 0) ply_input(cpt_h3d) = ply
1740 IF(h3d_keyword_shell%IS_UVAR == 1)
THEN
1741 IF(iuvar /= 0) uvar_input(cpt_h3d) = iuvar
1744 IF(h3d_keyword_shell%IS_ID == 1)
THEN
1745 IF(
id /= 0) ids_input(cpt_h3d) =
id
1746 IF ((key3_glob(1:7) ==
'FAILURE').AND.(cpt_irup > 0))
THEN
1747 irup_h3d(cpt_h3d) = 1
1751 IF(h3d_keyword_shell%IS_MDSVAR == 1)
THEN
1752 IF(imdsvar /= 0)
THEN
1753 mdsvar_input(cpt_h3d) = ((imdsvar-1) * mds_nmat /nmdsvar_max)+1
1754 mdsvar_input1(cpt_h3d) = imdsvar-(mdsvar_input(cpt_h3d)-1)*nmdsvar_max/mds_nmat
1755 mdsvar_input2(cpt_h3d) = id_mat_mds(mdsvar_input(cpt_h3d))
1759 IF(h3d_keyword_shell%IS_MODE == 1)
THEN
1760 IF(mode /= 0) modes_input(cpt_h3d) = mode
1764 IF(nlay_max +
max(1,nip_max) + nply_max + nuvar_max + nmdsvar_max + id_max + mode_max /= 0)
THEN
1765 DO k=1,
max(1,is_layer_all*
max(nlay_max,1))
1766 DO l=1,
max(1,is_ipt_all*
max(nip_max,1))
1767 DO m=1,
max(1,is_ply_all*
max(nply_max,1))
1768 DO n=1,
max(1,is_uvar_all*
max(nuvar_max,1))
1769 DO o=1,
max(1,
max(is_mdsvar_all,is_mdsvar_def)*
max(nmdsvar_max,1))
1770 DO p=1,
max(1,is_id_all*
max(id_max,1))
1771 DO q=1,
max(1,is_mode_all*
max(mode_max
1776 IF (key3_glob(1:7) ==
"FAILURE")
THEN
1777 IF (nply_max > 0)
THEN
1781 IF (mat_param(imat)%MAT_ID == mat_ply(m))
THEN
1783 nfail = mat_param(imat)%NFAIL
1787 IF (is_id_all == 1
THEN
1792 IF (mat_param(imat)%FAIL(ifail)%FAIL_ID ==
id)
THEN
1802 IF (.NOT.found) cycle
1805 ELSEIF (key3_glob(1:4) ==
"DAMG")
THEN
1806 IF ((nply_max > 0).AND.(
id > 0))
THEN
1808 IF (
id /= mat_ply(m)) cycle
1812 cpt_h3d = cpt_h3d + 1
1814 layer_input(cpt_h3d) = -1
1815 IF (nlay_max /= 0 .AND. is_layer_all == 1) layer_input(cpt_h3d) = k
1816 IF (is_layer_all == 0 .AND. layer >= 1) layer_input(cpt_h3d) = layer
1818 ipt_input(cpt_h3d) = -1
1819 IF (nip_elem_max > 0)
THEN
1820 IF (is_ipt_all == 1) ipt_input(cpt_h3d) = l
1821 IF (is_ipt_all == 0 .AND. ipt >= 1) ipt_input(cpt_h3d) = ipt
1822 IF (is_ipt_lower == 1) ipt_input(cpt_h3d) = -2
1823 IF (is_ipt_upper == 1) ipt_input(cpt_h3d) = -3
1824 IF (is_ipt_memb == 1) ipt_input(cpt_h3d) = -4
1827 ply_input(cpt_h3d) = -1
1828 IF (nply_max /= 0 .AND. is_ply_all == 1)
THEN
1829 ply_input(cpt_h3d) = id_ply(m)
1830 IF (is_ipt_all == 1)
THEN
1831 ipt_input(cpt_h3d) = l
1832 ELSEIF (is_ipt_all == 0 .AND. ipt >= 1)
THEN
1833 ipt_input(cpt_h3d) = ipt
1834 ELSEIF (is_ipt_lower == 1)
THEN
1835 ipt_input(cpt_h3d) = -2
1836 ELSEIF (is_ipt_upper == 1)
THEN
1837 ipt_input(cpt_h3d) = -3
1838 ELSEIF (is_ipt_memb == 1)
THEN
1839 ipt_input(cpt_h3d) = -4
1841 ipt_input(cpt_h3d) = -1
1843 ELSEIF (is_ply_all == 0 .AND. ply >= 1)
THEN
1844 ply_input(cpt_h3d) = ply
1845 IF (is_ipt_all == 1)
THEN
1846 ipt_input(cpt_h3d) = l
1847 ELSEIF (is_ipt_all == 0 .AND. ipt >= 1)
THEN
1848 ipt_input(cpt_h3d) = ipt
1849 ELSEIF (is_ipt_lower == 1)
THEN
1850 ipt_input(cpt_h3d) = -2
1851 ELSEIF (is_ipt_upper == 1)
THEN
1853 ELSEIF (is_ipt_memb == 1)
THEN
1854 ipt_input(cpt_h3d) = -4
1856 ipt_input(cpt_h3d) = -1
1860 uvar_input(cpt_h3d) = -1
1861 IF (nuvar_max /= 0 .AND. is_uvar_all == 1)
THEN
1862 uvar_input(cpt_h3d) = n
1864 IF (is_uvar_all == 0 .AND. iuvar >= 1) uvar_input(cpt_h3d) = iuvar
1866 mdsvar_input(cpt_h3d) = -1
1867 mdsvar_input1(cpt_h3d) = -1
1868 IF (nmdsvar_max /= 0 .AND. is_mdsvar_all == 1 .AND.
1869 . key3_glob(1:3) ==
'MDS' .AND. mds_nmat /= 0)
THEN
1870 mdsvar_input(cpt_h3d) = ((o
1871 mdsvar_input1(cpt_h3d) = o-(mdsvar_input(cpt_h3d)-1)*nmdsvar_max/mds_nmat
1872 mdsvar_input2(cpt_h3d) = id_mat_mds(mdsvar_input(cpt_h3d))
1875 IF (is_mdsvar_all == 0 .AND. is_mdsvar_def == 0 .AND. imdsvar >= 1)
THEN
1876 mdsvar_input(cpt_h3d) = mdsvar_input_tmp(o)
1877 mdsvar_input1(cpt_h3d) = mdsvar_input1_tmp(o)
1878 mdsvar_input2(cpt_h3d) = mdsvar_input2_tmp(o)
1881 IF (nmdsvar_max /= 0 .AND. is_mdsvar_def == 1 .AND.
1882 . key3_glob(1:3) ==
'MDS' .AND. mds_nmat /= 0)
THEN
1883 mdsvar_input(cpt_h3d) = mdsvar_input_tmp(o)
1884 mdsvar_input1(cpt_h3d) = mdsvar_input1_tmp(o)
1885 mdsvar_input2(cpt_h3d) = mdsvar_input2_tmp(o)
1888 ids_input(cpt_h3d) = -1
1889 IF (is_id_all == 1) ids_input(cpt_h3d) = p
1890 IF (is_id_all == 0 .AND.
id >= 1) ids_input(cpt_h3d) =
id
1893 IF ((key3_glob(1:7) ==
'FAILURE').AND.(cpt_irup
THEN
1894 IF (is_id_all == 1)
THEN
1895 ids_input(cpt_h3d) = irup_id_all(p)
1896 irup_h3d(cpt_h3d) = p
1898 irup_h3d(cpt_h3d) = 1
1902 modes_input(cpt_h3d) = -1
1903 IF (is_mode_all == 1) modes_input(cpt_h3d) = q
1904 IF (is_mode_all == 0 .AND. mode >= 1) modes_input(cpt_h3d) = mode
1906 gauss_input(cpt_h3d) = -1
1908 is_available_key(cpt_h3d) = 1
1909 IF( is_ply_all == 1)
THEN
1910 IF (l > ipt_ply(m) ) is_available_key(cpt_h3d) = 0
1912 IF(layer_input(cpt_h3d) /= -1) ish_npt0=0
1914 IF (is_layer_all == 1 .AND. k > 0 .AND. mdsvar_input(cpt_h3d) > 0)
THEN
1915 IF(is_layer_mat(index_mat_mds(mdsvar_input(cpt_h3d)),k) == 0)
THEN
1916 layer_input(cpt_h3d) = -
1917 ipt_input(cpt_h3d) = -1
1918 ids_input(cpt_h3d) = -1
1919 ply_input(cpt_h3d) = -1
1920 uvar_input(cpt_h3d)= -1
1921 gauss_input(cpt_h3d) = -1
1922 mdsvar_input(cpt_h3d)= -1
1923 mdsvar_input1(cpt_h3d)= -1
1924 mdsvar_input2(cpt_h3d)= -1
1925 modes_input(cpt_h3d)= -1
1926 is_available_key(cpt_h3d) = 1
1928 cpt_h3d = cpt_h3d - 1
1940 IF ((ish_npt0 == 1).AND.(key3_glob(1:7) /=
'FAILURE')
1941 . .AND.(key3_glob(1:4) /=
'DAMG'))
THEN
1942 IF (ipt_input(cpt_h3d)==1) ipt_input(cpt_h3d)=-2
1943 cpt_h3d = cpt_h3d + 1
1944 layer_input(cpt_h3d) = -1
1945 ipt_input(cpt_h3d) = -3
1946 ids_input(cpt_h3d) = -1
1947 ply_input(cpt_h3d) = -1
1948 uvar_input(cpt_h3d) = -1
1949 gauss_input(cpt_h3d) = -1
1950 is_available_key(cpt_h3d) = 1
1951 mdsvar_input(cpt_h3d) = -1
1952 mdsvar_input1(cpt_h3d) = -1
1953 mdsvar_input2(cpt_h3d) = -1
1954 modes_input(cpt_h3d)= -1
1960 ELSEIF(h3d_keyword_shell%IS_LAYER == 0 .AND. is_layer == 0 .AND.
1961 . h3d_keyword_shell%IS_IPT == 0 .AND. is_ipt == 0 .AND.
1962 . h3d_keyword_shell%IS_PLY == 0 .AND. is_ply == 0 .AND.
1963 . h3d_keyword_shell%IS_UVAR == 0 .AND. is_uvar == 0.AND.
1964 . h3d_keyword_shell%IS_MDSVAR == 0 .AND. is_mdsvar == 0 .AND.
1965 . h3d_keyword_shell%IS_ID == 0 .AND. is_id == 0 .AND.
1966 . h3d_keyword_shell%IS_MODE == 0 )
THEN
1967 cpt_h3d = cpt_h3d + 1
1968 layer_input(cpt_h3d) = -1
1969 ipt_input(cpt_h3d) = -1
1970 ply_input(cpt_h3d) = -1
1971 ids_input(cpt_h3d) = -1
1972 uvar_input(cpt_h3d)= -1
1973 mdsvar_input(cpt_h3d)= -1
1974 mdsvar_input1(cpt_h3d)= -1
1975 mdsvar_input2(cpt_h3d)= -1
1976 gauss_input(cpt_h3d) = -1
1977 modes_input(cpt_h3d)= -1
1978 is_available_key(cpt_h3d) = 1
1984 IF (is_available_key(k) == 1 .AND. is_scalar == 1)
THEN
1985 IF (is_mdsvar ==1) mds_label_tmp = mds_label(mdsvar_input1(k), mdsvar_input(k))
1987 IF (h3d_keyword_shell_scalar(j)%IS_SKIN == 1 )
THEN
1989 . trim(h3d_keyword_shell_scalar(j)%TEXT1),len_trim(h3d_keyword_shell_scalar(j)%TEXT1),
1990 . h3d_keyword_shell_scalar(j)%COMMENT,80,ipart,key3_glob,
1991 . layer_input(k),ir_input(k),is_input(k),it_input(k),
1992 . uvar_input(k),igrpart)
1999 IF ((key3_glob(1:7) ==
'FAILURE').AND.(cpt_irup > 0))
THEN
2001 IF (cpt_mod > 0)
THEN
2002 WRITE(test_chain,
'(A,A,A,A)')
"Failure:",trim(fail_name(irup_h3d(k))),
"; ",
2003 . trim(modname(irup_h3d(k),modes_input
2005 WRITE(test_chain,
'(A,A,A)')
"Failure:",trim(fail_name(irup_h3d(k))),
"; Failure index"
2007 h3d_keyword_shell_scalar(j)%TEXT1 = test_chain
2013 IF ((key3_glob(1:4) ==
'DAMG').AND.(cpt_mod > 0))
THEN
2015 WRITE(test_chain,
'(A,I3,A,A)')
"Damage: LAW",mlw,
"; ",trim(modname(1,modes_input(k)))
2016 h3d_keyword_shell_scalar(j)%TEXT1 = test_chain
2017 ELSEIF ((key3_glob(1:4) ==
'DAMG').AND.(cpt_lawid > 0))
THEN
2019 WRITE(test_chain,
'(A,I3,A)')
"Damage: LAW",mlw,
"; Damage index"
2020 h3d_keyword_shell_scalar(j)%TEXT1 = test_chain
2021 ELSEIF ((key3_glob(1:4) ==
'DAMG').AND.(cpt_mod == 0).AND.(cpt_lawid == 0))
THEN
2022 h3d_keyword_shell_scalar(j)%TEXT1 =
"Damage:Damage index"
2026 . trim(h3d_keyword_shell_scalar(j)%TEXT1),len_trim(h3d_keyword_shell_scalar(j)%TEXT1),
2027 . h3d_keyword_shell_scalar(j)%COMMENT,80,ipart,key3_glob,
2028 . layer_input(k),ipt_input(k),ply_input(k),gauss_input(k),uvar_input(k),
2029 . mdsvar_input(k),mdsvar_input1(k),mdsvar_input2(k),
2030 . mds_label_tmp,30,ids_input
2032 iok_h3dkey_combination = 1
2033 ELSEIF (is_available_key(k) == 1 .AND. is_vector == 1)
THEN
2034 IF (h3d_keyword_shell_vector(j)%IS_SKIN == 1 )
THEN
2036 . trim(h3d_keyword_shell_vector(j)%TEXT1),
2037 . len_trim(h3d_keyword_shell_vector
2038 . h3d_keyword_shell_vector(j)%COMMENT,80,ipart,key3_glob,
2039 . layer_input(k),ir_input(k),is_input(k),it_input
2040 . uvar_input(k),igrpart )
2044 . trim(h3d_keyword_shell_vector(j)%TEXT1),len_trim(h3d_keyword_shell_vector(j)%TEXT1),
2045 . h3d_keyword_shell_vector(j)%COMMENT
2046 . layer_input(k),ipt_input(k),ply_input(k),gauss_input(k),uvar_input(k),igrpart)
2048 iok_h3dkey_combination = 1
2050 ELSEIF (is_available_key(k) == 1 .AND. is_tensor == 1)
THEN
2052 . len_trim(h3d_keyword_shell_tensor(j)%TEXT1),
2053 . h3d_keyword_shell_tensor(j)%COMMENT,80,ipart,key3_glob,
2054 . layer_input(k),ipt_input(k),ply_input(k),gauss_input(k),
2055 . uvar_input(k),ids_input(k),igrpart)
2056 iok_h3dkey_combination = 1
2063 IF(key2 ==
'SOLID' .OR. key2 ==
'BRICK' .OR.key2 ==
'ELEM')
THEN
2065 jmax=
max(h3d_num_key%SOLID_SCALAR, h3d_num_key%SOLID_VECTOR, h3d_num_key%SOLID_TENSOR)
2071 IF ( key3_glob == h3d_keyword_solid_scalar(j)%KEY3) is_scalar = 1
2072 IF ( key3_glob == h3d_keyword_solid_vector(j)%KEY3) is_vector = 1
2073 IF ( key3_glob == h3d_keyword_solid_tensor(j)%KEY3) is_tensor = 1
2074 IF ( is_scalar == 1 .OR. is_vector == 1 .OR. is_tensor == 1) iok_h3dkey = 1
2076 is_corner_data = h3d_keyword_solid_tensor(j)%IS_CORNER_DATA
2078 IF ( is_scalar == 1 .OR. is_vector == 1 .OR. is_tensor == 1 )
THEN
2080 IF(is_scalar == 1) h3d_keyword_solid = h3d_keyword_solid_scalar(j)
2081 IF(is_vector == 1) h3d_keyword_solid = h3d_keyword_solid_vector(j)
2082 IF(is_tensor == 1) h3d_keyword_solid = h3d_keyword_solid_tensor(j)
2084 IF(h3d_keyword_solid%IS_LAYER /= 0 .OR.
2085 . h3d_keyword_solid%IS_IR /= 0 .OR.
2086 . h3d_keyword_solid%IS_IS /= 0 .OR.
2087 . h3d_keyword_solid%IS_IT /= 0 .OR.
2088 . h3d_keyword_solid%IS_UVAR /= 0 .OR.
2089 . h3d_keyword_solid%IS_MDSVAR /= 0 .OR.
2090 . h3d_keyword_solid%IS_ID /= 0 .OR.
2091 . h3d_keyword_solid%IS_MODE /= 0)
THEN
2093 IF(is_layer_all == 0 .AND. is_ir_all == 0 .AND. is_is_all == 0 .AND.
2094 . is_it_all == 0 .AND. is_uvar_all == 0 .AND. is_mdsvar_all == 0 .AND.
2095 . is_mdsvar_def ==0 .AND. is_id_all == 0 .AND. is_mode_all == 0)
THEN
2097 cpt_h3d = cpt_h3d + 1
2098 layer_input(cpt_h3d) = -1
2099 uvar_input(cpt_h3d)= -1
2100 mdsvar_input(cpt_h3d)= -1
2101 mdsvar_input1(cpt_h3d)= -1
2102 mdsvar_input2(cpt_h3d)= -1
2103 ir_input(cpt_h3d) = -1
2104 is_input(cpt_h3d) = -1
2105 it_input(cpt_h3d) = -1
2106 ids_input(cpt_h3d) = -1
2107 gauss_input(cpt_h3d) = -1
2108 is_available_key(cpt_h3d) = 1
2109 modes_input(cpt_h3d) = -1
2111 IF(h3d_keyword_solid%IS_LAYER == 1)
THEN
2112 IF(layer /= 0) layer_input(cpt_h3d) = layer
2113 IF(is_layer_lower == 1) layer_input(cpt_h3d) = -2
2114 IF(is_layer_upper == 1) layer_input(cpt_h3d) = -3
2117 IF(h3d_keyword_solid%IS_IPT == 1)
THEN
2118 IF(ipt /= 0) ipt_input(cpt_h3d) = ipt
2119 IF(is_ipt_lower == 1) ipt_input(cpt_h3d) = -2
2120 IF(is_ipt_upper == 1) ipt_input(cpt_h3d) = -3
2121 IF(is_ipt_memb == 1) ipt_input(cpt_h3d) = -4
2124 IF(h3d_keyword_solid%IS_UVAR == 1)
THEN
2125 IF(iuvar /= 0) uvar_input(cpt_h3d) = iuvar
2128 IF(h3d_keyword_solid%IS_MDSVAR == 1)
THEN
2129 IF(imdsvar /= 0)
THEN
2130 mdsvar_input(cpt_h3d) = ((imdsvar-1) * mds_nmat /nmdsvar_max)+1
2131 mdsvar_input1(cpt_h3d) = imdsvar-(mdsvar_input(cpt_h3d)-1)*nmdsvar_max/mds_nmat
2132 mdsvar_input2(cpt_h3d) = id_mat_mds(mdsvar_input(cpt_h3d))
2136 IF(h3d_keyword_solid%IS_IR == 1)
THEN
2137 IF(ir /= 0) ir_input(cpt_h3d) = ir
2140 IF(h3d_keyword_solid%IS_IS == 1)
THEN
2141 IF(is /= 0) is_input(cpt_h3d) = is
2144 IF(h3d_keyword_solid%IS_IT == 1)
THEN
2145 IF(it /= 0) it_input(cpt_h3d) = it
2148 IF(h3d_keyword_solid%IS_ID == 1)
THEN
2149 IF(
id /= 0) ids_input
2150 IF ((key3_glob(1:7) ==
'FAILURE').AND.(cpt_irup > 0))
THEN
2151 irup_h3d(cpt_h3d) = 1
2155 IF(h3d_keyword_solid%IS_MODE == 1)
THEN
2156 IF(mode /= 0) modes_input(cpt_h3d) = mode
2161 IF(nlay_max + ir_max + is_max + it_max + nuvar_max + nmdsvar_max + id_max + mode_max /= 0)
THEN
2162 DO k=1,
max(1,is_layer_all*
max(nlay_max,1))
2163 DO l=1,
max(1,is_uvar_all*
max(nuvar_max,1))
2164 DO m=1,
max(1,is_ir_all*
max(ir_max,1))
2165 DO n=1,
max(1,is_is_all*
max(is_max,1))
2166 DO o=1,
max(1,is_it_all*
max(it_max,1))
2167 DO p=1,
max(1,
max(is_mdsvar_all,is_mdsvar_def)*
max(nmdsvar_max,
2168 DO q=1,
max(1,is_id_all*
max(id_max,1))
2169 DO r=1,
max(1,is_mode_all*
max(mode_max,1))
2170 cpt_h3d = cpt_h3d + 1
2172 layer_input(cpt_h3d) = -1
2173 IF (nlay_max /= 0 .AND. is_layer_all == 1) layer_input(cpt_h3d) = k
2175 uvar_input(cpt_h3d) = -1
2176 IF(h3d_keyword_solid%IS_UVAR == 1 .AND. iuvar > 0) uvar_input(cpt_h3d) = iuvar
2177 IF (nuvar_max /= 0 .AND. is_uvar_all == 1) uvar_input(cpt_h3d) = l
2179 mdsvar_input(cpt_h3d) = -1
2180 mdsvar_input1(cpt_h3d) = -1
2181 mdsvar_input2(cpt_h3d) = -1
2182 IF (nmdsvar_max /= 0 .AND. is_mdsvar_all == 1 .AND.
2183 . key3_glob(1:3) ==
'MDS' .AND. mds_nmat /= 0)
THEN
2184 mdsvar_input(cpt_h3d) = mdsvar_input_tmp(p)
2185 mdsvar_input1(cpt_h3d) = mdsvar_input1_tmp(p)
2186 mdsvar_input2(cpt_h3d) = mdsvar_input2_tmp(p)
2189 IF (is_mdsvar_all == 0 .AND. imdsvar >= 1) mdsvar_input(cpt_h3d) = imdsvar
2192 IF (nmdsvar_max /= 0
2193 . key3_glob(1:3) ==
'MDS' .AND. mds_nmat /= 0)
THEN
2194 mdsvar_input(cpt_h3d) = mdsvar_input_tmp(p)
2195 mdsvar_input1(cpt_h3d
2196 mdsvar_input2(cpt_h3d) = mdsvar_input2_tmp(p)
2199 ir_input(cpt_h3d) = -1
2200 IF(h3d_keyword_solid%IS_IR == 1 .AND. ir > 0) ir_input(cpt_h3d) = ir
2201 IF (ir_max /= 0 .AND. is_ir_all == 1) ir_input(cpt_h3d) = m
2203 is_input(cpt_h3d) = -1
2204 IF(h3d_keyword_solid%IS_IS == 1 .AND. is > 0) is_input(cpt_h3d) = is
2205 IF (is_max /= 0 .AND. is_is_all == 1) is_input(cpt_h3d) = n
2207 it_input(cpt_h3d) = -1
2208 IF(h3d_keyword_solid%IS_IT == 1 .AND. it > 0) it_input(cpt_h3d) = it
2209 IF (it_max /= 0 .AND. is_it_all == 1) it_input(cpt_h3d) = o
2211 ids_input(cpt_h3d) = -1
2212 IF (is_id_all == 1) ids_input(cpt_h3d) = q
2213 IF (is_id_all == 0 .AND.
id >= 1) ids_input(cpt_h3d) =
id
2215 modes_input(cpt_h3d) = -1
2216 IF (is_mode_all == 1) modes_input(cpt_h3d) = r
2217 IF (is_mode_all == 0 .AND. mode >= 1) modes_input(cpt_h3d) = mode
2219 IF ((key3_glob(1:7) ==
'FAILURE').AND.(cpt_irup > 0))
THEN
2220 IF (is_id_all == 1)
THEN
2221 ids_input(cpt_h3d) = irup_id_all(q)
2222 irup_h3d(cpt_h3d) = q
2224 irup_h3d(cpt_h3d) = 1
2227 gauss_input(cpt_h3d) = -1
2229 is_available_key(cpt_h3d) = 1
2242 ELSEIF(h3d_keyword_solid%IS_LAYER == 0 .AND. is_layer == 0 .AND.
2243 . h3d_keyword_solid%IS_IR == 0 .AND. is_ir == 0 .AND.
2244 . h3d_keyword_solid%IS_IS == 0 .AND. is_is == 0 .AND.
2245 . h3d_keyword_solid%IS_IT == 0 .AND. is_it == 0 .AND.
2246 . h3d_keyword_solid%IS_UVAR == 0 .AND. is_uvar == 0 .AND.
2247 . h3d_keyword_solid%IS_MDSVAR == 0 .AND. is_mdsvar
2248 . h3d_keyword_solid%IS_ID == 0 .AND.
2249 . h3d_keyword_solid%IS_MODE == 0 )
THEN
2250 cpt_h3d = cpt_h3d + 1
2251 layer_input(cpt_h3d) = -1
2252 uvar_input(cpt_h3d)= -1
2253 mdsvar_input(cpt_h3d)= -1
2254 mdsvar_input1(cpt_h3d)= -1
2255 mdsvar_input2(cpt_h3d)= -1
2256 gauss_input(cpt_h3d) = -1
2257 ir_input(cpt_h3d) = -1
2258 is_input(cpt_h3d) = -1
2259 it_input(cpt_h3d) = -1
2260 ids_input(cpt_h3d) = -1
2261 modes_input(cpt_h3d) = -1
2262 is_available_key(cpt_h3d) = 1
2267 IF (is_available_key(k) == 1 .AND. is_scalar == 1)
THEN
2268 IF (h3d_keyword_solid_scalar(j)%IS_SKIN == 1 )
THEN
2270 . trim(h3d_keyword_solid_scalar(j)%TEXT1),len_trim(h3d_keyword_solid_scalar(j)%TEXT1),
2271 . h3d_keyword_solid_scalar(j)%COMMENT,80,ipart,key3_glob,
2272 . layer_input(k),ir_input(k),is_input(k),it_input(k),
2273 . uvar_input(k),igrpart)
2276 IF (is_mdsvar ==1) mds_label_tmp = mds_label(mdsvar_input1(k), mdsvar_input(k))
2281 IF ((key3_glob(1:7) ==
'FAILURE').AND.(cpt_irup > 0))
THEN
2283 IF (cpt_mod > 0)
THEN
2284 WRITE(test_chain,
'(A,A,A,A)')
"Failure:",trim(fail_name(irup_h3d(k))),
"; ",
2285 . trim(modname(irup_h3d(k),modes_input(k)))
2287 WRITE(test_chain,
'(A,A,A)')
"Failure:",trim(fail_name(irup_h3d(k))),
"; Failure index"
2289 h3d_keyword_solid_scalar(j)%TEXT1 = test_chain
2295 IF ((key3_glob(1:4) ==
'DAMG').AND.(cpt_mod > 0))
THEN
2297 WRITE(test_chain,
'(A,I3,A,A)')
"Damage: LAW",mlw,
"; ",trim(modname(1,modes_input(k)))
2298 h3d_keyword_solid_scalar(j)%TEXT1 = test_chain
2299 ELSEIF ((key3_glob(1:4) ==
'DAMG').AND.(cpt_lawid
THEN
2301 WRITE(test_chain,
'(A,I3,A)')
"Damage: LAW""; Damage index"
2302 h3d_keyword_solid_scalar(j)%TEXT1 = test_chain
2303 ELSEIF ((key3_glob(1:4) ==
'DAMG').AND.(cpt_mod == 0).AND.(cpt_lawid == 0))
THEN
2304 h3d_keyword_solid_scalar(j)%TEXT1 =
"Damage:Damage index"
2308 . trim(h3d_keyword_solid_scalar(j)%TEXT1),len_trim(h3d_keyword_solid_scalar(j)%TEXT1),
2309 . h3d_keyword_solid_scalar(j)%COMMENT,80,ipart,key3_glob,
2310 . layer_input(k),ir_input(k),is_input(k),it_input(k),
2311 . uvar_input(k),mdsvar_input(k),mdsvar_input1(k
2312 . mdsvar_input2(k),mds_label_tmp,30,ids_input(k),modes_input(k),igrpart)
2314 iok_h3dkey_combination = 1
2315 ELSEIF (is_available_key(k) == 1 .AND. is_vector == 1)
THEN
2316 IF (h3d_keyword_solid_vector(j)%IS_SKIN == 1 )
THEN
2318 . trim(h3d_keyword_solid_vector(j)%TEXT1),
2319 . len_trim(h3d_keyword_solid_vector(j)%TEXT1),
2320 . h3d_keyword_solid_vector(j)%COMMENT,80,ipart,key3_glob,
2321 . layer_input(k),ir_input(k),is_input(k),it_input(k),
2326 . trim(h3d_keyword_solid_vector(j)%TEXT1),len_trim(h3d_keyword_solid_vector(j)%TEXT1),
2327 . h3d_keyword_solid_vector(j)%COMMENT,80,ipart,key3_glob,
2328 . layer_input(k),ir_input(k),is_input(k),it_input(k),
2329 . uvar_input(k),igrpart)
2331 iok_h3dkey_combination = 1
2332 ELSEIF (is_available_key(k) == 1 .AND. is_tensor == 1)
THEN
2333 IF (h3d_keyword_solid_tensor(j)%IS_SKIN == 1 )
THEN
2335 . trim(h3d_keyword_solid_tensor(j)%TEXT1),
2336 . len_trim(h3d_keyword_solid_tensor(j)%TEXT1),
2337 . h3d_keyword_solid_tensor(j)%COMMENT,80,ipart,key3_glob,
2338 . layer_input(k),ir_input(k),is_input(k),it_input(k),
2339 . uvar_input(k),igrpart)
2343 . trim(h3d_keyword_solid_tensor(j)%TEXT1),len_trim(h3d_keyword_solid_tensor(j)%TEXT1),
2344 . h3d_keyword_solid_tensor(j)%COMMENT,80,ipart,key3_glob,
2345 . layer_input(k),ir_input(k),is_input(k),it_input(k),
2346 . uvar_input(k) ,is_corner_data,ids_input(k),igrpart)
2348 iok_h3dkey_combination = 1
2355 IF(key2 ==
'SPH' .OR. key2 ==
'ELEM')
THEN
2357 jmax=
max(h3d_num_key%SPH_SCALAR, h3d_num_key%SPH_TENSOR)
2361 IF ( key3_glob == h3d_keyword_sph_scalar(j)%KEY3) is_scalar = 1
2362 IF ( key3_glob == h3d_keyword_sph_tensor(j)%KEY3) is_tensor = 1
2363 IF ( is_scalar == 1 .OR. is_tensor == 1) iok_h3dkey = 1
2365 IF (h3d_keyword_sph_scalar(j)%IS_ID /= 0 .OR.
2366 . h3d_keyword_sph_scalar(j)%IS_MODE /= 0)
THEN
2367 IF (is_id_all == 0 .AND. is_mode_all ==0)
THEN
2368 cpt_h3d = cpt_h3d + 1
2370 ids_input(cpt_h3d) = -1
2371 IF (h3d_keyword_sph_scalar(j)%IS_ID == 1)
THEN
2372 IF (
id /= 0) ids_input(cpt_h3d) =
id
2373 IF ((key3_glob(1:7) ==
'FAILURE').AND.(cpt_irup > 0))
THEN
2374 irup_h3d(cpt_h3d) = 1
2378 modes_input(cpt_h3d) = -1
2379 IF(h3d_keyword_sph_scalar(j)%IS_MODE == 1)
THEN
2380 IF(mode /= 0) modes_input(cpt_h3d) = mode
2385 IF ((id_max + mode_max /=0))
THEN
2386 DO q=1,
max(1,is_id_all*
max(id_max,1))
2387 DO r=1,
max(1,is_mode_all*
max(mode_max,1))
2388 cpt_h3d = cpt_h3d + 1
2389 ids_input(cpt_h3d) = -1
2391 IF (is_id_all == 1) ids_input(cpt_h3d) = q
2392 IF (is_id_all == 0 .AND.
id >= 1) ids_input(cpt_h3d) =
id
2393 IF ((key3_glob(1:7) ==
'FAILURE').AND.(cpt_irup > 0))
THEN
2394 IF (is_id_all == 1)
THEN
2395 ids_input(cpt_h3d) = irup_id_all(q)
2396 irup_h3d(cpt_h3d) = q
2398 irup_h3d(cpt_h3d) = 1
2402 modes_input(cpt_h3d)= -1
2403 IF (is_mode_all == 1) modes_input(cpt_h3d) = r
2404 IF (is_mode_all == 0 .AND. mode >= 1) modes_input(cpt_h3d) = mode
2410 ELSEIF(h3d_keyword_sph_scalar(j)%IS_ID == 0 .AND. is_id == 0 .AND.
2411 . h3d_keyword_sph_scalar(j)%IS_MODE == 0)
THEN
2412 cpt_h3d = cpt_h3d + 1
2413 ids_input(cpt_h3d) = -1
2414 modes_input(cpt_h3d)= -1
2417 IF ( key3_glob == h3d_keyword_sph_scalar(j)%KEY3 )
THEN
2422 IF((key3_glob(1:7) ==
'FAILURE').AND.(cpt_irup > 0))
THEN
2425 IF (cpt_mod > 0)
THEN
2426 WRITE(test_chain,
'(A,A,A,A)')
"Failure:",trim(fail_name(irup_h3d(k))),
"; ",
2429 WRITE(test_chain,
'(A,A,A)')
"Failure:",trim(fail_name(irup_h3d(k))),
"; Failure index"
2431 h3d_keyword_sph_scalar(j)%TEXT1 = test_chain
2433 . trim(h3d_keyword_sph_scalar(j)%TEXT1),len_trim(h3d_keyword_sph_scalar(j)%TEXT1),
2434 . h3d_keyword_sph_scalar(j)%COMMENT,80,ipart,key3_glob,
2435 . iuvar,ids_input(k),modes_input(k),igrpart)
2439 . trim(h3d_keyword_sph_scalar(j)%TEXT1),len_trim(h3d_keyword_sph_scalar(j)%TEXT1),
2440 . h3d_keyword_sph_scalar
2441 . iuvar,ids_input(1),modes_input(1),igrpart)
2443 iok_h3dkey_combination = 1
2446 IF ( key3_glob == h3d_keyword_sph_tensor(j)%KEY3 )
THEN
2449 . trim(h3d_keyword_sph_tensor(j)%TEXT1),len_trim(h3d_keyword_sph_tensor(j)%TEXT1),
2450 . h3d_keyword_sph_tensor(j)%COMMENT,80,ipart,key3_glob,igrpart)
2451 iok_h3dkey_combination = 1
2456 IF(key2 ==
'BEAM' .OR. key2 ==
'SPRING' .OR. key2 ==
'TRUSS' .OR. key2 ==
'ELEM'THEN
2458 jmax=
max(h3d_num_key%ONED_SCALAR, h3d_num_key%ONED_VECTOR, h3d_num_key%ONED_TENSOR,
2459 . h3d_num_key%ONED_TORSOR)
2466 IF ( key3_glob == h3d_keyword_oned_scalar(j)%KEY3 ) is_scalar = 1
2467 IF ( key3_glob == h3d_keyword_oned_vector(j)%KEY3 ) is_vector = 1
2468 IF ( key3_glob == h3d_keyword_oned_tensor(j)%KEY3 ) is_tensor = 1
2469 IF ( key3_glob == h3d_keyword_oned_torsor(j)%KEY3 ) is_torsor = 1
2470 IF ( is_scalar == 1 .OR. is_vector == 1 .OR. is_torsor == 1 .OR. is_tensor == 1) iok_h3dkey = 1
2473 IF ( is_scalar == 1 .OR. is_vector == 1 .OR. is_tensor == 1 .OR. is_torsor == 1 )
THEN
2475 IF (is_scalar == 1 ) h3d_keyword_oned = h3d_keyword_oned_scalar(j)
2476 IF (is_vector == 1 ) h3d_keyword_oned = h3d_keyword_oned_vector(j)
2477 IF (is_tensor == 1 ) h3d_keyword_oned = h3d_keyword_oned_tensor(j)
2478 IF (is_torsor == 1 ) h3d_keyword_oned = h3d_keyword_oned_torsor(j)
2480 IF ( h3d_keyword_oned%IS_IPT /= 0 )
THEN
2482 IF ( is_ipt_all == 0 )
THEN
2483 cpt_h3d = cpt_h3d + 1
2484 ipt_input(cpt_h3d) = -1
2485 is_available_key(cpt_h3d) = 1
2486 IF ( h3d_keyword_oned%IS_IPT == 1 )
THEN
2487 IF ( ipt /= 0 ) ipt_input(cpt_h3d) = ipt
2490 IF ( nip_max /= 0 )
THEN
2491 DO l=1,
max(1,is_ipt_all*
max(nip_max,1))
2492 cpt_h3d = cpt_h3d + 1
2493 ipt_input(cpt_h3d) = -1
2494 IF ( nip_max /= 0 .AND. is_ipt_all == 1 ) ipt_input(cpt_h3d) = l
2495 IF (is_ipt_all == 0 .AND. ipt >= 1) ipt_input(cpt_h3d) = ipt
2496 is_available_key(cpt_h3d) = 1
2500 ELSEIF ( h3d_keyword_oned%IS_IPT == 0 .AND. is_ipt == 0 )
THEN
2501 cpt_h3d = cpt_h3d + 1
2502 ipt_input(cpt_h3d) = -1
2503 is_available_key(cpt_h3d
2508 IF (is_available_key(k) == 1 .AND. is_scalar == 1)
THEN
2510 . trim(h3d_keyword_oned_scalar(j)%TEXT1),
2511 . len_trim(h3d_keyword_oned_scalar(j)%TEXT1),
2512 . h3d_keyword_oned_scalar(j)%COMMENT,80,ipart,key3_glob,ipt_input(k),igrpart)
2513 iok_h3dkey_combination = 1
2514 ELSEIF (is_available_key(k) == 1 .AND. is_vector == 1)
THEN
2516 . trim(h3d_keyword_oned_vector(j)%TEXT1),
2517 . len_trim(h3d_keyword_oned_vector(j)%TEXT1),
2518 . h3d_keyword_oned_vector(j)%COMMENT,80,ipart,key3_glob,igrpart)
2519 iok_h3dkey_combination = 1
2520 ELSEIF (is_available_key(k) == 1 .AND. is_tensor == 1)
THEN
2522 . trim(h3d_keyword_oned_tensor
2523 . len_trim(h3d_keyword_oned_tensor(j)%TEXT1),
2524 . h3d_keyword_oned_tensor(j)%COMMENT,80,ipart,key3_glob,ipt_input(k),igrpart)
2525 iok_h3dkey_combination = 1
2526 ELSEIF (is_available_key(k) == 1 .AND. is_torsor == 1
THEN
2528 . trim(h3d_keyword_oned_torsor(j)%TEXT1),len_trim(h3d_keyword_oned_torsor(j)%TEXT1),
2529 . h3d_keyword_oned_torsor(j)%COMMENT,80,ipart,key3_glob,igrpart)
2530 iok_h3dkey_combination = 1
2537 IF(key2 ==
'QUAD' .OR. key2 ==
'ELEM')
THEN
2539 jmax=
max(h3d_num_key%QUAD_SCALAR, h3d_num_key%QUAD_VECTOR, h3d_num_key%QUAD_TENSOR)
2545 IF ( key3_glob == h3d_keyword_quad_scalar(j)%KEY3) is_scalar = 1
2546 IF ( key3_glob == h3d_keyword_quad_vector(j)%KEY3) is_vector = 1
2547 IF ( key3_glob == h3d_keyword_quad_tensor(j)%KEY3) is_tensor = 1
2548 IF ( is_scalar == 1 .OR. is_vector == 1 .OR. is_tensor == 1) iok_h3dkey = 1
2550 IF ( is_scalar == 1 .OR. is_vector == 1 .OR. is_tensor == 1 )
THEN
2551 IF(is_scalar == 1) h3d_keyword_quad
2552 IF(is_vector == 1) h3d_keyword_quad = h3d_keyword_quad_vector(j)
2553 IF(is_tensor == 1) h3d_keyword_quad = h3d_keyword_quad_tensor(j)
2554 IF(h3d_keyword_quad%IS_LAYER /= 0 .OR.
2555 . h3d_keyword_quad%IS_IR /= 0 .OR.
2556 . h3d_keyword_quad%IS_IS /= 0 .OR.
2557 . h3d_keyword_quad%IS_IT /= 0 .OR.
2558 . h3d_keyword_quad%IS_UVAR /= 0 .OR.
2559 . h3d_keyword_quad%IS_ID /= 0 .OR.
2560 . h3d_keyword_quad%IS_MODE /= 0 )
THEN
2561 IF(is_layer_all == 0 .AND. is_ir_all == 0 .AND. is_is_all =
2562 . is_it_all == 0 .AND. is_uvar_all == 0 .AND. is_id_all ==0 .AND.
2563 . is_mode_all == 0)
THEN
2565 cpt_h3d = cpt_h3d + 1
2566 layer_input(cpt_h3d) = -1
2567 uvar_input(cpt_h3d)= -1
2568 mdsvar_input(cpt_h3d)= -1
2569 mdsvar_input1(cpt_h3d)= -1
2570 mdsvar_input2(cpt_h3d)= -1
2571 ir_input(cpt_h3d) = -1
2572 is_input(cpt_h3d) = -1
2573 it_input(cpt_h3d) = -1
2574 gauss_input(cpt_h3d) = -1
2575 is_available_key(cpt_h3d) = 1
2577 IF(h3d_keyword_quad%IS_LAYER == 1)
THEN
2578 IF(layer /= 0) layer_input(cpt_h3d) = layer
2579 IF(is_layer_lower == 1) layer_input(cpt_h3d) = -2
2580 IF(is_layer_upper == 1) layer_input(cpt_h3d) = -3
2583 IF(h3d_keyword_quad%IS_IPT == 1)
THEN
2584 IF(ipt /= 0) ipt_input(cpt_h3d) = ipt
2585 IF(is_ipt_lower == 1) ipt_input(cpt_h3d) = -2
2586 IF(is_ipt_upper == 1)
2589 IF(h3d_keyword_quad%IS_UVAR == 1)
THEN
2590 IF(iuvar /= 0) uvar_input(cpt_h3d) = iuvar
2593 IF(h3d_keyword_quad%IS_IR == 1)
THEN
2594 IF(ir /= 0) ir_input(cpt_h3d) = ir
2597 IF(h3d_keyword_quad%IS_IS == 1)
THEN
2598 IF(is /= 0) is_input(cpt_h3d) = is
2601 IF(h3d_keyword_quad%IS_IT == 1)
THEN
2602 IF(it /= 0) it_input(cpt_h3d) = it
2605 IF(h3d_keyword_quad%IS_ID == 1)
THEN
2606 IF(
id /= 0) ids_input(cpt_h3d) =
id
2607 IF ((key3_glob(1:7) ==
'FAILURE').AND.(cpt_irup > 0))
THEN
2608 irup_h3d(cpt_h3d) = 1
2612 IF(h3d_keyword_quad%IS_MODE == 1)
THEN
2613 IF (mode /= 0) modes_input(cpt_h3d) = mode
2617 IF(nlay_max + ir_max + is_max + it_max + nuvar_max + id_max + mode_max /= 0)
THEN
2618 DO k=1,
max(1,is_layer_all*
max(nlay_max,1))
2619 DO l=1,
max(1,is_uvar_all*
max(nuvar_max,1))
2620 DO m=1,
max(1,is_ir_all*
max(ir_max
2621 DO n=1,
max(1,is_is_all*
max(is_max,1))
2622 DO o=1,
max(1,is_it_all*
max(it_max,1))
2623 DO p=1,
max(1,is_id_all*
max(id_max,1))
2624 DO q=1,
max(1,is_mode_all*
max(mode_max,1))
2625 cpt_h3d = cpt_h3d + 1
2627 layer_input(cpt_h3d) = -1
2628 IF (nlay_max /= 0 .AND. is_layer_all == 1) layer_input(cpt_h3d) = k
2630 uvar_input(cpt_h3d) = -1
2631 IF (nuvar_max /= 0 .AND. is_uvar_all == 1) uvar_input(cpt_h3d) = l
2633 ir_input(cpt_h3d) = -1
2634 IF (ir_max /= 0 .AND. is_ir_all == 1) ir_input(cpt_h3d) = m
2636 is_input(cpt_h3d) = -1
2637 IF (is_max /= 0 .AND. is_is_all == 1) is_input(cpt_h3d) = n
2639 it_input(cpt_h3d) = -1
2640 IF (it_max /= 0 .AND. is_it_all == 1) it_input(cpt_h3d
2642 ids_input(cpt_h3d) = -1
2643 IF(
id /= 0) ids_input(cpt_h3d) =
id
2644 IF ((key3_glob(1:7) ==
'FAILURE').AND.(cpt_irup > 0))
THEN
2645 IF (is_id_all == 1)
THEN
2646 ids_input(cpt_h3d) = irup_id_all(p)
2647 irup_h3d(cpt_h3d) = p
2649 irup_h3d(cpt_h3d) = 1
2653 modes_input(cpt_h3d) = -1
2654 IF (is_mode_all == 1) modes_input(cpt_h3d) = q
2655 IF (is_mode_all == 0 .AND. mode >= 1) modes_input(cpt_h3d) = mode
2657 gauss_input(cpt_h3d) = -1
2659 is_available_key(cpt_h3d) = 1
2671 ELSEIF(h3d_keyword_quad%IS_LAYER == 0 .AND. is_layer == 0 .AND.
2672 . h3d_keyword_quad%IS_IR == 0 .AND. is_ir == 0 .AND.
2673 . h3d_keyword_quad%IS_IS == 0 .AND. is_is == 0 .AND.
2674 . h3d_keyword_quad%IS_IT == 0 .AND. is_it == 0 .AND.
2675 . h3d_keyword_quad%IS_UVAR == 0 .AND. is_uvar == 0 .AND.
2676 . h3d_keyword_quad%IS_ID == 0 .AND. is_id == 0 .AND.
2677 . h3d_keyword_quad%IS_MODE == 0)
THEN
2678 cpt_h3d = cpt_h3d + 1
2679 layer_input(cpt_h3d) = -1
2680 uvar_input(cpt_h3d)= -1
2681 mdsvar_input(cpt_h3d)= -1
2682 mdsvar_input1(cpt_h3d)= -1
2683 mdsvar_input2(cpt_h3d)= -1
2684 gauss_input(cpt_h3d) = -1
2685 ir_input(cpt_h3d) = -1
2686 is_input(cpt_h3d) = -1
2687 it_input(cpt_h3d) = -1
2688 ids_input(cpt_h3d) = -1
2689 modes_input(cpt_h3d) = -1
2690 is_available_key(cpt_h3d) = 1
2695 IF (is_available_key(k) == 1 .AND. is_scalar == 1)
THEN
2700 IF ((key3_glob(1:7) ==
'FAILURE').AND.(cpt_irup > 0))
THEN
2702 IF (cpt_mod > 0)
THEN
2703 WRITE(test_chain,
'(A,A,A,A)')
"Failure:",trim(fail_name(irup_h3d(k))),
"; ",
2704 . trim(modname(irup_h3d(k),modes_input(k)))
2706 WRITE(test_chain,
'(A,A,A)')
"Failure:",trim(fail_name(irup_h3d(k))),
"; Failure index"
2708 h3d_keyword_quad_scalar(j)%TEXT1 = test_chain
2712 . trim(h3d_keyword_quad_scalar(j)%TEXT1),
2713 . len_trim(h3d_keyword_quad_scalar(j)%TEXT1),
2714 . h3d_keyword_quad_scalar(j)%COMMENT,80,ipart,key3_glob,
2715 . layer_input(k),ir_input(k),is_input(k),it_input
2716 . uvar_input(k),ids_input(k),modes_input
2717 iok_h3dkey_combination = 1
2720 IF (is_available_key(k) == 1 .AND. is_vector == 1)
THEN
2723 . trim(h3d_keyword_quad_vector(j)%TEXT1),
2724 . len_trim(h3d_keyword_quad_vector(j)%TEXT1),
2725 . h3d_keyword_quad_vector(j)%COMMENT,80,ipart,key3_glob,
2726 . layer_input(k),ir_input(k),is_input(k),it_input(k),
2727 . uvar_input(k),igrpart )
2728 iok_h3dkey_combination = 1
2731 IF (is_available_key(k) == 1 .AND. is_tensor == 1)
THEN
2734 . trim(h3d_keyword_quad_tensor(j)%TEXT1),
2735 . len_trim(h3d_keyword_quad_tensor(j)%TEXT1),
2736 . h3d_keyword_quad_tensor(j)%COMMENT,80,ipart,key3_glob,
2737 . layer_input(k),ir_input(k),is_input(k),it_input(k),
2738 . uvar_input(k),igrpart )
2739 iok_h3dkey_combination = 1
2746 IF(key2 ==
'SHELL' .OR. key2 ==
'ELEM'.OR. key2 ==
'SOLID' .OR.
2747 . key2 ==
'BRICK' .OR. key2 ==
'QUAD'.OR. key2 ==
'BEAM ' .OR.
2748 . key2 ==
'SPRING'.OR. key2 ==
'TRUSS'.OR.key2 ==
'SPH')
THEN
2750 DEALLOCATE (layer_input)
2751 DEALLOCATE (ipt_input)
2752 DEALLOCATE (ply_input)
2753 DEALLOCATE (uvar_input)
2754 DEALLOCATE (gauss_input)
2755 DEALLOCATE (ir_input)
2756 DEALLOCATE (is_input)
2757 DEALLOCATE (it_input)
2758 DEALLOCATE (ids_input)
2759 DEALLOCATE (irup_h3d)
2760 DEALLOCATE (is_available_key)
2761 DEALLOCATE (mdsvar_input)
2762 DEALLOCATE (mdsvar_input1)
2763 DEALLOCATE (mdsvar_input2)
2764 DEALLOCATE (mdsvar_input_tmp)
2765 DEALLOCATE (mdsvar_input1_tmp)
2766 DEALLOCATE (mdsvar_input2_tmp)
2767 DEALLOCATE (modes_input)
2769 IF (
ALLOCATED(is_layer_mat))
DEALLOCATE (is_layer_mat)
2771 IF (iok_h3dkey == 0 .AND. ishell_npt_check == 0)
THEN
2772 IF (ispmd == 0)
CALL ancmsg(msgid=275,c1=
'/H3D/'//key2//
'/'//key3//
'/'//key4//'/
'//KEY5//'/
'//KEY6,
2774 IF (ISPMD == 0) CALL ARRET(2)
2776.AND.
IF (IOK_H3DKEY_COMBINATION == 0 ISHELL_NPT_CHECK == 0) THEN
2777 IF (ISPMD == 0) CALL ANCMSG(MSGID=317,c1='/h3d/
'//KEY2//'/
'//KEY3//'/
'//KEY4//'/
'//KEY5//'/
'//KEY6,
2778 . ANMODE=ANINFO_BLIND)
2783 IF( H3D_DATA%IPART_SELECT == 0 ) CALL CREATE_H3D_PARTS_ALL(H3D_DATA,IPART)
2786 DO I=1,H3D_DATA%N_OUTP_H3D
2787 IF (H3D_DATA%OUTPUT_LIST(I)%OK == 1) THEN
2789 H3D_DATA%OUTPUT_LIST(I)%N_OUTP = CPT + 2
2791 H3D_DATA%OUTPUT_LIST(I)%N_OUTP = 0
2794 IF (IS_SKING > 0) THEN
2796 IF (IOUTER==1) ISKIND=ISKIND+1
2797 IF (IPEXT==1) ISKIND=ISKIND+2
2798 CALL H3D_SKIN_DIM(IPARG ,NUMSKIN, NUMSKING,TAG_SKINS6,
2799 . IBCL ,ILOADP ,LLOADP ,LOADS ,
2800 . NUMSKINP0,NUMSKINP,ISKIND,PBLAST )
2809 H3D_DATA%N_SCAL_CSE_FRICINT = OUTPUT%DATA%NINEFRIC
2810 IF (H3D_DATA%N_SCAL_CSE_FRICINT > 0)THEN
2811 ! Allocate INTERFACE Remote EFRICFI Array
2814.OR..OR..OR.
IF(ITYP==7ITYP==10ITYP==11
2815.AND..OR..OR.
+ (ITYP==17IPARI(33,I)==0)ITYP==20
2816.OR..OR..OR.
+ ITYP==22ITYP==23ITYP==24
2819 IF(H3D_DATA%N_CSE_FRIC_INTER(I) >0) THEN
2822 LENR = LENR + NSNFI(I)%P(P)
2825 ALLOCATE(EFRICFI(I)%P(LENR),STAT=IERROR)
2827 CALL ANCMSG(MSGID=20,ANMODE=ANINFO)
2830 EFRICFI(I)%P(1:LENR)=ZERO
2836 IF (H3D_DATA%N_SCAL_CSE_FRIC > 0)THEN
2837 ! Allocate INTERFACE Remote EFRICGFI Array
2840.OR..OR..OR.
IF(ITYP==7ITYP==10ITYP==11
2841.AND..OR..OR.
+ (ITYP==17IPARI(33,I)==0)ITYP==20
2842.OR..OR..OR.
+ ITYP==22ITYP==23ITYP==24
2846 LENR = LENR + NSNFI(I)%P(P)
2849 ALLOCATE(EFRICGFI(I)%P(LENR),STAT=IERROR)
2851 CALL ANCMSG(MSGID=20,ANMODE=ANINFO)
2854 EFRICGFI(I)%P(1:LENR)=ZERO
2859 DEALLOCATE(H3D_KEYWORD_NODAL_SCALAR)
2860 DEALLOCATE(H3D_KEYWORD_NODAL_VECTOR)
2861 DEALLOCATE(H3D_KEYWORD_NODAL_TENSOR)
2862 DEALLOCATE(H3D_KEYWORD_ONED_SCALAR)
2863 DEALLOCATE(H3D_KEYWORD_ONED_VECTOR)
2864 DEALLOCATE(H3D_KEYWORD_ONED_TENSOR)
2865 DEALLOCATE(H3D_KEYWORD_ONED_TORSOR)
2866 DEALLOCATE(H3D_KEYWORD_SHELL_SCALAR)
2867 DEALLOCATE(H3D_KEYWORD_SHELL_VECTOR)
2868 DEALLOCATE(H3D_KEYWORD_SHELL_TENSOR)
2869 DEALLOCATE(H3D_KEYWORD_SOLID_SCALAR)
2870 DEALLOCATE(H3D_KEYWORD_SOLID_VECTOR)
2871 DEALLOCATE(H3D_KEYWORD_SOLID_TENSOR)
2872 DEALLOCATE(H3D_KEYWORD_SPH_SCALAR)
2873 DEALLOCATE(H3D_KEYWORD_SPH_TENSOR)
2874 DEALLOCATE(H3D_KEYWORD_QUAD_SCALAR)
2875 DEALLOCATE(H3D_KEYWORD_QUAD_VECTOR)
2876 DEALLOCATE(H3D_KEYWORD_QUAD_TENSOR)
2877 DEALLOCATE(ID_MAT_MDS)
2878 IF (ALLOCATED(IRUP_ID_ALL)) DEALLOCATE (IRUP_ID_ALL)