96
97
98
103 USE multi_fvm_mod
104 USE elbufdef_mod
106 USE loads_mod
108 USE matparam_def_mod
110 USE pblast_mod
112 USE output_mod , ONLY : h3d_has_noda_pext
113
114
115
116#include "implicit_f.inc"
117
118
119
120#include "com04_c.inc"
121#include "com08_c.inc"
122#include "param_c.inc"
123#include "scr17_c.inc"
124#include "task_c.inc"
125#include "com01_c.inc"
126#include "spmd_c.inc"
127#include "vect01_c.inc"
128
129
130
131
133 INTEGER IGEO(NPROPGI,NUMGEO),IPART(LIPART1,*),IPM(NPROPMI,NUMMAT),IPARI(NPARI,*),
134 . IPARG(NPARG,NGROUP),TAG_SKINS6(*),MDS_OUTPUT_TABLE(MAX_DEPVAR,MDS_NMAT),MDS_NMAT,
135 . MAX_DEPVAR,MDS_NDEPSVAR(*),IBCL(*),ILOADP(*),LLOADP(*)
136 TYPE (H3D_DATABASE) :: H3D_DATA
137 TYPE (MULTI_FVM_STRUCT), INTENT(IN) :: MULTI_FVM
138 CHARACTER*64 MDS_LABEL(1024,MDS_NMAT)
139 TYPE(ELBUF_STRUCT_), TARGET, DIMENSION(NGROUP) :: ELBUF_STR
140 TYPE (STACK_PLY) :: STACK
141 TYPE (LOADS_), INTENT(IN) :: LOADS
142 TYPE (MATPARAM_STRUCT_) ,DIMENSION(NUMMAT) ,INTENT(INOUT) :: MAT_PARAM
143 TYPE (PBLAST_) :: PBLAST
144 TYPE(GROUP_) ,DIMENSION(NGRPART) ,INTENT(IN) :: IGRPART
145
146
147
148 INTEGER I,J,JMAX,K,L,M,O,P,Q,R,CPT,NIP_MAX,NLAY_MAX,NPLY_MAX,NUVAR_MAX,ID_INPUT,N1,N2,N3,N4,N5,N6,
149 . IS_INTEGER_N3,IS_INTEGER_N4,IS_INTEGER_N5,IS_INTEGER_N6,
150 . NB_INTEGER,N,IR_MAX,IS_MAX,IT_MAX,
151 . NB_ALL,IS_CHAR_KEY2,IS_CHAR_KEY3,IS_CHAR_KEY4,IS_CHAR_KEY5,IS_CHAR_KEY6,IS_CHAR_KEY7,IS_CHAR_KEY8
152
153
154,IS_LAYER_KEY5,IS_LAYER_KEY6,IS_LAYER_KEY7,IS_LAYER_KEY8,IS_IPT_KEY4,IS_IPT_KEY5,
155 . IS_IPT_KEY6,IS_IPT_KEY7,IS_IPT_KEY8,
156 . IS_GAUSS_KEY4,IS_GAUSS_KEY5,IS_GAUSS_KEY6,IS_GAUSS_KEY7,IS_GAUSS_KEY8,IS_PLY,IS_LAYER,IS_IPT,IS_GAUSS,
157 . IS_PLY_ALL,IS_LAYER_ALL,IS_LAYER_LOWER,IS_LAYER_UPPER,IS_LAYER_MEMB,IS_LAYER_BEND,
158 . IS_IPT_ALL,IS_IPT_LOWER,IS_IPT_UPPER,IS_IPT_MEMB,IS_IPT_BEND,
159 . IS_GAUSS_ALL,PLY,LAYER,IPT,GAUSS,IOK_H3DKEY,CPT_H3D,IUVAR,IS_UVAR,
160 . IS_UVAR_ALL,IS_UVAR_KEY4,IS_UVAR_KEY5,IS_UVAR_KEY6,IS_UVAR_KEY7,IS_UVAR_KEY8,
161 . ID_PLY(NUMGEO+NUMPLY),MAT_PLY(NUMGEO+NUMPLY),
162 . IPT_PLY(NUMGEO+NUMPLY),IS_SCALAR,IS_VECTOR,IS_TENSOR,IS_TORSOR,
163 . IR,IS_IR,IS_IR_ALL,IS_IR_LOWER,IS_IR_UPPER ,
164 . IS,IS_IS,IS_IS_ALL,IS_IS_LOWER,IS_IS_UPPER ,
165 . IT,IS_IT,IS_IT_ALL,IS_IT_LOWER,IS_IT_UPPER,
166 . NB_KEY,CPT_KEY,NBMAX,IS_INTER,INTER,NINTER_MAX,IS_INTER_ALL,NINTERSKID,IS_SKING,
167 . ISHELL_NPT_CHECK,ICSTR,NPTR,NPTS,NPTT,IS_CORNER_DATA,ISH_NPT0,
168 . IS_MDSVAR_DEF,NMDSVAR_MAX,IS_MDSVAR,IS_MDSVAR_ALL,IMDSVAR,
169 . IS_MODEL_NPT,IS_MODEL_PLY,IS_MODEL_LAYER,ISKIND,IOUTER,IPEXT,
170 . IS_ID,ID,ID_MAX,IS_ID_ALL,NINEFRIC,N19,IFAIL,,CPT_IRUP2,
171 . IS_MODE,MODE,MODE_MAX,IS_MODE_ALL,NFAIL,NIP_PLY_MAX,NIP_ELEM_MAX,
172 . ITYP,ID_DEF,NBC,DUM,NDEF,IS_MEMB
173 INTEGER MLW,NEL,NG,JTURB,NLAY,NUVAR,IPLY,IMAT,ISUBSTACK,ID_PLY_TMP
174 INTEGER CPT_MOD,NMOD,CPT_LAWID,SIZE_INPUT
175 INTEGER IERROR
176 INTEGER LENS
177 INTEGER LENR
178
179 INTEGER IBID1,IBID2,IBID3,IBID4
180
181 CHARACTER(LEN=NCHARKEY)::KEY0
182 CHARACTER(LEN=NCHARKEY)::KEY2
183 CHARACTER(LEN=NCHARKEY)::KEY3
184 CHARACTER(LEN=NCHARKEY)::KEY4
185 CHARACTER(LEN=NCHARKEY)::KEY5
186 CHARACTER(LEN=NCHARKEY)::KEY6
187 CHARACTER(LEN=NCHARKEY)::KEY7
188 CHARACTER(LEN=NCHARKEY)::KEY8
189 CHARACTER(LEN=NCHARKEY)::KEY2_READ
190 CHARACTER(LEN=NCHARLINE100)::KEY3_READ
191 CHARACTER(LEN=NCHARLINE100)::
192
193 CHARACTER*64 MDS_LABEL_TMP
194
195 INTEGER, DIMENSION(:), ALLOCATABLE ::
196 . LAYER_INPUT,IPT_INPUT,PLY_INPUT,,GAUSS_INPUT,
197 . ,IS_INPUT,IT_INPUT,IS_AVAILABLE_KEY,INTER_INPUT,
198 . MDSVAR_INPUT,,MDSVAR_INPUT_TMP,MDSVAR_INPUT1_TMP,
199 . MDSVAR_INPUT2,MDSVAR_INPUT2_TMP,ID_MAT_MDS,INDEX_MAT_MDS,IDS_INPUT,
200 . IRUP_ID_ALL,MODES_INPUT,IRUP_H3D
201
202 TYPE (H3D_KEYWORD) H3D_KEYWORD_NODE,H3D_KEYWORD_SHELL,H3D_KEYWORD_SOLID,H3D_KEYWORD_QUAD,H3D_KEYWORD_ONED
203
204 TYPE (H3D_KEYWORD), DIMENSION(:), ALLOCATABLE :: H3D_KEYWORD_NODAL_SCALAR
205 TYPE (H3D_KEYWORD), DIMENSION(:), ALLOCATABLE :: H3D_KEYWORD_NODAL_VECTOR
206 TYPE (H3D_KEYWORD), DIMENSION(:), ALLOCATABLE :: H3D_KEYWORD_NODAL_TENSOR
207 TYPE (H3D_KEYWORD), DIMENSION(:),ALLOCATABLE
208TYPE (H3D_KEYWORD), DIMENSION(:), ALLOCATABLE :: H3D_KEYWORD_ONED_VECTOR
209 TYPE (H3D_KEYWORD), DIMENSION(:), ALLOCATABLE :: H3D_KEYWORD_ONED_TENSOR
210 TYPE (H3D_KEYWORD), DIMENSION(:), ALLOCATABLE :: H3D_KEYWORD_ONED_TORSOR
211 TYPE (H3D_KEYWORD), DIMENSION(:), ALLOCATABLE :: H3D_KEYWORD_SHELL_SCALAR
212 TYPE (H3D_KEYWORD), DIMENSION(:), ALLOCATABLE :: H3D_KEYWORD_SHELL_VECTOR
213 TYPE (H3D_KEYWORD), DIMENSION(:), ALLOCATABLE :: H3D_KEYWORD_SHELL_TENSOR
214 TYPE (H3D_KEYWORD), DIMENSION(:), ALLOCATABLE :: H3D_KEYWORD_SOLID_SCALAR
215 TYPE (H3D_KEYWORD), DIMENSION(:), ALLOCATABLE :: H3D_KEYWORD_SOLID_VECTOR
216 TYPE (H3D_KEYWORD), DIMENSION(:), ALLOCATABLE :: H3D_KEYWORD_SOLID_TENSOR
217 TYPE (H3D_KEYWORD), DIMENSION(:), ALLOCATABLE :: H3D_KEYWORD_SPH_SCALAR
218 TYPE (H3D_KEYWORD), DIMENSION(:), ALLOCATABLE :: H3D_KEYWORD_SPH_TENSOR
219 TYPE (H3D_KEYWORD), DIMENSION(:), ALLOCATABLE :: H3D_KEYWORD_QUAD_SCALAR
220 TYPE (H3D_KEYWORD), DIMENSION(:), ALLOCATABLE :: H3D_KEYWORD_QUAD_VECTOR
221 TYPE (H3D_KEYWORD), DIMENSION(:), ALLOCATABLE :: H3D_KEYWORD_QUAD_TENSOR
222
223 TYPE (H3D_NUMBER_OF_KEY) :: H3D_NUM_KEY
224
225 TYPE(BUF_LAY_) ,POINTER ::
226 TYPE(BUF_FAIL_) ,POINTER :: FBUF
227 INTEGER, DIMENSION(:,:), ALLOCATABLE :: IS_LAYER_MAT
228 LOGICAL :: FOUND
229 CHARACTER*64 TEST_CHAIN
230 CHARACTER(LEN=NCHARTITLE), DIMENSION(:), ALLOCATABLE :: FAIL_NAME
231 CHARACTER(LEN=NCHARTITLE), DIMENSION(:,:), ALLOCATABLE :: MODNAME
232
233 IF(h3d_data%TH3D0 /= zero) h3d_data%TH3D = h3d_data%TH3D0
234 IF(h3d_data%TH3D_STOP0 /= ep20) h3d_data%TH3D_STOP = h3d_data%TH3D_STOP0
235 IF(h3d_data%DTH3D0 > zero) h3d_data%DTH3D= h3d_data%DTH3D0
236 IF(h3d_data%DTH3D <= zero) THEN
237 h3d_data%TH3D = ep30
238 h3d_data%TH3D_STOP = zero
239 ENDIF
240 IF (h3d_data%TH3D < tt-dt2 .AND. h3d_data%DTH3D > zero) h3d_data%TH3D = h3d_data%TH3D
241 . + int((tt-dt2-h3d_data%TH3D)/h3d_data%DTH3D)*h3d_data%DTH3D
242 IF (h3d_data%TH3D < tt-dt2)h3d_data%TH3D = h3d_data%TH3D+h3d_data%DTH3D
243 h3d_has_noda_pext = 0
244
245 ibid1 = 0
246 ibid2 = 0
247 ibid3 = 0
248 ibid4 = 0
249 cpt_lawid = 0
250 cpt_mod = 0
251 id_max = 0
252 ir_max = 0
253 is_max = 0
254 it_max = 0
255 mode_max = 0
256 nip_max = 0
257 nip_elem_max = 0
258 nply_max = 0
259 nmdsvar_max = 0
260 nuvar_max = 0
261 ALLOCATE(modname(1,1))
262 modname(1,1) = ' '
263 ish_npt0 = 0
264
265
266 h3d_data%IPART_SELECT = 0
267 is_scalar = 0
268 is_vector = 0
269 is_tensor = 0
270 nb_integer = 0
271 nb_all = 0
272 is_sking = 0
273 nlay_max = 0
274 cpt_irup = 0
275
276 ALLOCATE(h3d_data%N_SKID_INTER(ninter))
277 h3d_data%N_SKID_INTER(1:ninter) = 0
278 ninterskid = 0
279
280 ALLOCATE(h3d_data%N_CSE_FRIC_INTER(ninter))
281 h3d_data%N_CSE_FRIC_INTER(1:ninter) = 0
282 ninefric = 0
283 mds_label_tmp=' '
284
285
286
287 nbmax = 1000
288 ALLOCATE(h3d_keyword_nodal_scalar(nbmax))
289 h3d_keyword_nodal_scalar(1:nbmax)%KEY3=''
290 h3d_keyword_nodal_scalar(1:nbmax)%KEY4=''
291 h3d_keyword_nodal_scalar(1:nbmax)%KEY5=''
292 h3d_keyword_nodal_scalar(1:nbmax)%KEY6=''
293 h3d_keyword_nodal_scalar(1:nbmax)%COMMENT=''
294 ALLOCATE(h3d_keyword_nodal_vector(nbmax))
295 h3d_keyword_nodal_vector(1:nbmax)%KEY3=''
296 h3d_keyword_nodal_vector(1:nbmax)%KEY4=''
297 h3d_keyword_nodal_vector(1:nbmax)%KEY5=''
298 h3d_keyword_nodal_vector(1:nbmax)%KEY6=''
299 h3d_keyword_nodal_vector(1:nbmax)%COMMENT=''
300 ALLOCATE(h3d_keyword_nodal_tensor(nbmax))
301 h3d_keyword_nodal_tensor(1:nbmax)%KEY3=''
302 h3d_keyword_nodal_tensor(1:nbmax)%KEY4=''
303 h3d_keyword_nodal_tensor(1:nbmax)%KEY5=''
304 h3d_keyword_nodal_tensor(1:nbmax)%KEY6=''
305 h3d_keyword_nodal_tensor(1:nbmax)%COMMENT=''
306 ALLOCATE(h3d_keyword_oned_scalar(nbmax))
307 h3d_keyword_oned_scalar(1:nbmax)%KEY3=''
308 h3d_keyword_oned_scalar(1:nbmax)%KEY4=''
309 h3d_keyword_oned_scalar(1:nbmax)%KEY5=''
310 h3d_keyword_oned_scalar(1:nbmax)%KEY6=''
311 h3d_keyword_oned_scalar(1:nbmax)%COMMENT=''
312 ALLOCATE(h3d_keyword_oned_vector(nbmax))
313 h3d_keyword_oned_vector(1:nbmax)%KEY3=''
314 h3d_keyword_oned_vector(1:nbmax)%KEY4=''
315 h3d_keyword_oned_vector(1:nbmax)%KEY5=''
316 h3d_keyword_oned_vector(1:nbmax)%KEY6=''
317 h3d_keyword_oned_vector(1:nbmax)%COMMENT=''
318 ALLOCATE(h3d_keyword_oned_tensor(nbmax))
319 h3d_keyword_oned_tensor(1:nbmax)%KEY3=''
320 h3d_keyword_oned_tensor(1:nbmax)%KEY4=''
321 h3d_keyword_oned_tensor(1:nbmax)%KEY5=''
322 h3d_keyword_oned_tensor(1:nbmax)%KEY6=''
323 h3d_keyword_oned_tensor(1:nbmax)%COMMENT=''
324 ALLOCATE(h3d_keyword_oned_torsor(nbmax))
325 h3d_keyword_oned_torsor(1:nbmax)%KEY3=''
326 h3d_keyword_oned_torsor(1:nbmax)%KEY4=''
327 h3d_keyword_oned_torsor(1:nbmax)%KEY5=''
328 h3d_keyword_oned_torsor(1:nbmax)%KEY6=''
329 h3d_keyword_oned_torsor(1:nbmax)%COMMENT=''
330 ALLOCATE(h3d_keyword_shell_scalar(nbmax))
331 h3d_keyword_shell_scalar(1:nbmax)%KEY3=''
332 h3d_keyword_shell_scalar(1:nbmax)%KEY4=''
333 h3d_keyword_shell_scalar(1:nbmax)%KEY5=''
334 h3d_keyword_shell_scalar(1:nbmax)%KEY6=''
335 h3d_keyword_shell_scalar(1:nbmax)%COMMENT=''
336 ALLOCATE(h3d_keyword_shell_vector(nbmax))
337 h3d_keyword_shell_vector(1:nbmax)%KEY3=''
338 h3d_keyword_shell_vector(1:nbmax)%KEY4=''
339 h3d_keyword_shell_vector(1:nbmax)%KEY5=''
340 h3d_keyword_shell_vector(1:nbmax)%KEY6=''
341 h3d_keyword_shell_vector(1:nbmax)%COMMENT=''
342 ALLOCATE(h3d_keyword_shell_tensor(nbmax))
343 h3d_keyword_shell_tensor(1:nbmax)%KEY3=''
344 h3d_keyword_shell_tensor(1:nbmax)%KEY4=''
345 h3d_keyword_shell_tensor(1:nbmax)%KEY5=''
346 h3d_keyword_shell_tensor(1:nbmax)%KEY6=''
347 h3d_keyword_shell_tensor(1:nbmax)%COMMENT=''
348 ALLOCATE(h3d_keyword_solid_scalar(nbmax))
349 h3d_keyword_solid_scalar(1:nbmax)%KEY3=''
350 h3d_keyword_solid_scalar(1:nbmax)%KEY4=''
351 h3d_keyword_solid_scalar(1:nbmax)%KEY5=''
352 h3d_keyword_solid_scalar(1:nbmax)%KEY6=''
353 h3d_keyword_solid_scalar(1:nbmax)%COMMENT=''
354 ALLOCATE(h3d_keyword_solid_vector(nbmax))
355 h3d_keyword_solid_vector(1:nbmax)%KEY3=''
356 h3d_keyword_solid_vector(1:nbmax)%KEY4=''
357 h3d_keyword_solid_vector(1:nbmax)%KEY5=''
358 h3d_keyword_solid_vector(1:nbmax)%KEY6=''
359 h3d_keyword_solid_vector(1:nbmax)%COMMENT=''
360 ALLOCATE(h3d_keyword_solid_tensor(nbmax))
361 h3d_keyword_solid_tensor(1:nbmax)%KEY3=''
362 h3d_keyword_solid_tensor(1:nbmax)%KEY4=''
363 h3d_keyword_solid_tensor(1:nbmax)%KEY5=''
364 h3d_keyword_solid_tensor(1:nbmax)%KEY6=''
365 h3d_keyword_solid_tensor(1:nbmax)%COMMENT=''
366 ALLOCATE(h3d_keyword_sph_scalar(nbmax))
367 h3d_keyword_sph_scalar(1:nbmax)%KEY3=''
368 h3d_keyword_sph_scalar(1:nbmax)%KEY4=''
369 h3d_keyword_sph_scalar(1:nbmax)%KEY5=''
370 h3d_keyword_sph_scalar(1:nbmax)%KEY6=''
371 h3d_keyword_sph_scalar(1:nbmax)%COMMENT=''
372 ALLOCATE(h3d_keyword_sph_tensor(nbmax))
373 h3d_keyword_sph_tensor(1:nbmax)%KEY3=''
374 h3d_keyword_sph_tensor(1:nbmax)%KEY4=''
375 h3d_keyword_sph_tensor(1:nbmax)%KEY5=''
376 h3d_keyword_sph_tensor(1:nbmax)%KEY6=''
377 h3d_keyword_sph_tensor(1:nbmax)%COMMENT=''
378 ALLOCATE(h3d_keyword_quad_scalar(nbmax))
379 h3d_keyword_quad_scalar(1:nbmax)%KEY3=''
380 h3d_keyword_quad_scalar(1:nbmax)%KEY4=''
381 h3d_keyword_quad_scalar(1:nbmax)%KEY5=''
382 h3d_keyword_quad_scalar(1:nbmax)%KEY6=''
383 h3d_keyword_quad_scalar(1:nbmax)%COMMENT=''
384 ALLOCATE(h3d_keyword_quad_vector(nbmax))
385 h3d_keyword_quad_vector(1:nbmax)%KEY3=''
386 h3d_keyword_quad_vector(1:nbmax)%KEY4=''
387 h3d_keyword_quad_vector(1:nbmax)%KEY5=''
388 h3d_keyword_quad_vector(1:nbmax)%KEY6=''
389 h3d_keyword_quad_vector(1:nbmax)%COMMENT=''
390 ALLOCATE(h3d_keyword_quad_tensor(nbmax))
391 h3d_keyword_quad_tensor(1:nbmax)%KEY3=''
392 h3d_keyword_quad_tensor(1:nbmax)%KEY4=''
393 h3d_keyword_quad_tensor(1:nbmax)%KEY5=''
394 h3d_keyword_quad_tensor(1:nbmax)%KEY6=''
395 h3d_keyword_quad_tensor(1:nbmax)%COMMENT=''
396
397 ALLOCATE(id_mat_mds(
max(1,mds_nmat)))
398 id_mat_mds(1:
max(1,mds_nmat)) = 0
399 ALLOCATE(index_mat_mds(
max(1,mds_nmat)))
400 index_mat_mds(1:
max(1,mds_nmat)) = 0
401
402
403
405
407
409
411
413
415
417
419
421
423
425
427
429
431
433
434 CALL h3d_list_quad_scalar(h3d_keyword_quad_scalar, geo, igeo, multi_fvm, h3d_num_key%QUAD_SCALAR)
435
437
439
440
441
442 IF ((numsphg > 0).and.(h3d_data%DTH3D0 > zero)) THEN
443 ndef = 2
444
445 DO id_input=1,h3d_data%N_INPUT_H3D
446 key2 = h3d_data%INPUT_LIST(id_input)%KEY2
447 key3 = h3d_data%INPUT_LIST(id_input)%KEY3
448 IF ((key2=='ELEM').or.(key2=='SPH').AND.(key3=='DIAMETER')) ndef = 1
449 ENDDO
450 DO id_def=1,ndef
451 nbc = 0
452 key2 = 'SPH'
453 IF (id_def==1) THEN
454 key3 = 'NEIGHBOURS'
455 ELSEIF (id_def==2) THEN
456 key3 = 'DIAMETER'
457 ENDIF
458 key4 =''
459 key5 =''
460 key6 =''
461 key7 =''
462 key8 =''
463 CALL create_h3d_input(h3d_data,dum,dum,dum,nbc,key0,key2,key3,key4,key5,key6,key7,key8)
464 ENDDO
465 ENDIF
466
467
468
469 iouter=0
470 ipext=0
471 DO id_input=1,h3d_data%N_INPUT_H3D
472
473 cpt_h3d = 0
474 iok_h3dkey = 0
475 key3_glob = ''
476
477 key2 = h3d_data%INPUT_LIST(id_input)%KEY2
478 key3 = h3d_data%INPUT_LIST(id_input)%KEY3
479 key4 = h3d_data%INPUT_LIST(id_input)%KEY4
480 key5 = h3d_data%INPUT_LIST(id_input)%KEY5
481 key6 = h3d_data%INPUT_LIST(id_input)%KEY6
482 key7 = h3d_data%INPUT_LIST(id_input)%KEY7
483 key8 = h3d_data%INPUT_LIST(id_input)%KEY8
484
485 is_char_key2 = 1
486 is_empty_key2 = 1
487 is_char_key3 = 1
488 is_empty_key3 = 1
489 is_char_key4 = 1
490 is_empty_key4 = 1
491 is_char_key5 = 1
492 is_empty_key5 = 1
493 is_char_key6 = 1
494 is_empty_key6 = 1
495 is_char_key7 = 1
496 is_empty_key7 = 1
497 is_char_key8 = 1
498 is_empty_key8 = 1
499 ply = 0
500 is_ply = 0
501 is_ply_all = 0
502 is_ply_key4 = 0
503 is_ply_key5 = 0
504 is_ply_key6 = 0
505 is_ply_key7 = 0
506 is_ply_key8 = 0
507 layer = 0
508 is_layer = 0
509 is_layer_lower = 0
510 is_layer_upper = 0
511 is_layer_memb = 0
512 is_layer_bend = 0
513 is_layer_all = 0
514 is_layer_key4 = 0
515 is_layer_key5 = 0
516 is_layer_key6 = 0
517 is_layer_key7 = 0
518 is_layer_key8 = 0
519 ipt = 0
520 is_ipt = 0
521 is_ipt_lower = 0
522 is_ipt_upper = 0
523 is_ipt_memb = 0
524 is_ipt_bend = 0
525 is_ipt_all = 0
526 is_ipt_key4 = 0
527 is_ipt_key5 = 0
528 is_ipt_key6 = 0
529 is_ipt_key7 = 0
530 is_ipt_key8 = 0
531 gauss = 0
532 is_gauss = 0
533 is_gauss_all = 0
534 is_gauss_key4 = 0
535 is_gauss_key5 = 0
536 is_gauss_key6 = 0
537 is_gauss_key7 = 0
538 is_gauss_key8 = 0
539 iuvar = 0
540 is_uvar = 0
541 is_uvar_all = 0
542 is_uvar_key4 = 0
543 is_uvar_key5 = 0
544 is_uvar_key6 = 0
545 is_uvar_key7 = 0
546 is_uvar_key8 = 0
547 inter = 0
548 is_inter = 0
549 is_inter_all = 0
550 is_corner_data = 0
551 imdsvar = 0
552 is_mdsvar = 0
553 is_mdsvar_all = 0
554 is_mdsvar_def = 0
555 IF ( key3=='PEXT'.OR.key4=='PEXT') ipext=1
556 IF ( key4=='OUTER'.OR.key5=='OUTER') iouter=1
557
558
559
561 IF ( key3(i:i) == '=' ) is_char_key3 = 0
562 IF ( key3(i:i) /= ' ' ) is_empty_key3 = 0
563 IF ( key4(i:i) == '=' ) IS_CHAR_KEY4 = 0
564 IF ( KEY4(I:I) /= ' ' ) IS_EMPTY_KEY4 = 0
565 IF ( KEY5(I:I) == '=' ) IS_CHAR_KEY5 = 0
566 IF ( KEY5(I:I) /= ' ' ) IS_EMPTY_KEY5 = 0
567 IF ( KEY6(I:I) == '=' ) IS_CHAR_KEY6 = 0
568 IF ( KEY6(I:I) /= ' ' ) IS_EMPTY_KEY6 = 0
569 IF ( KEY7(I:I) == '=' ) IS_CHAR_KEY7 = 0
570 IF ( KEY7(I:I) /= ' ' ) IS_EMPTY_KEY7 = 0
571 IF ( KEY8(I:I) == '=' ) IS_CHAR_KEY8 = 0
572 IF ( KEY8(I:I) /= ' ' ) IS_EMPTY_KEY8 = 0
573 ENDDO
574
575
576
577 IS_ALL = 1
578 IS_LOWER = 0
579 IS_UPPER = 0
580 IS_DEF = 0
581 IS_MEMB = 0
582 CALL CREATE_H3D_ARG_KEYWORD(KEY2 ,KEY3 ,KEY4 ,KEY5 ,KEY6 ,
583 . KEY7 ,KEY8 ,IS_ALL ,IS_LOWER ,IS_UPPER ,
584 . 'ply' ,3 ,IS_PLY ,PLY ,
585 . IS_PLY_ALL ,IBID1 ,IBID2 ,IS_DEF ,
586 . IBID3 ,IS_MEMB ,IBID4 )
587
588
589
590 IS_ALL = 1
591 IS_LOWER = 1
592 IS_UPPER = 1
593 IS_DEF = 0
594 IS_MEMB = 0
595 CALL CREATE_H3D_ARG_KEYWORD(KEY2 ,KEY3 ,KEY4 ,KEY5 ,KEY6 ,
596 . KEY7 ,KEY8 ,IS_ALL ,IS_LOWER ,IS_UPPER ,
597 . 'layer' ,5 ,IS_LAYER ,LAYER ,
598 . IS_LAYER_ALL,IS_LAYER_LOWER,IS_LAYER_UPPER ,IS_DEF ,
599 . IBID1 ,IS_MEMB ,IBID2 )
600
601
602
603 IS_ALL = 1
604 IS_LOWER = 1
605 IS_UPPER = 1
606 IS_DEF = 0
607 IS_MEMB = 1
608 CALL CREATE_H3D_ARG_KEYWORD(KEY2 ,KEY3 ,KEY4 ,KEY5 ,KEY6 ,
609 . KEY7 ,KEY8 ,IS_ALL ,IS_LOWER ,IS_UPPER ,
610 . 'npt' ,3 ,IS_IPT ,IPT ,
611 . IS_IPT_ALL ,IS_IPT_LOWER,IS_IPT_UPPER,IS_DEF ,
612 . IBID1 ,IS_MEMB ,IS_IPT_MEMB)
613
614
615
616 IS_ALL = 1
617 IS_LOWER = 0
618 IS_UPPER = 0
619 IS_DEF = 0
620 IS_MEMB = 0
621 CALL CREATE_H3D_ARG_KEYWORD(KEY2 ,KEY3 ,KEY4 ,KEY5 ,KEY6 ,
622 . KEY7 ,KEY8 ,IS_ALL ,IS_LOWER ,IS_UPPER ,
623 . 'uvar' ,4 ,IS_UVAR ,IUVAR ,
624 . IS_UVAR_ALL,IBID1 ,IBID2 ,IS_DEF ,
625 . IBID3 ,IS_MEMB ,IBID4 )
626
627
628
629 IS_ALL = 1
630 IS_LOWER = 0
631 IS_UPPER = 0
632 IS_DEF = 1
633 IS_MEMB = 0
634 CALL CREATE_H3D_ARG_KEYWORD(KEY2 ,KEY3 ,KEY4 ,KEY5 ,KEY6 ,
635 . KEY7 ,KEY8 ,IS_ALL ,IS_LOWER ,IS_UPPER ,
636 . 'mds_var' ,7 ,IS_MDSVAR ,IMDSVAR ,
637 . IS_MDSVAR_ALL,IBID1 ,IBID2 ,IS_DEF ,
638 . IS_MDSVAR_DEF,IS_MEMB ,IBID3 )
639
640
641
642 IS_ALL = 1
643 IS_LOWER = 1
644 IS_UPPER = 1
645 IS_DEF = 0
646 IS_MEMB = 0
647 CALL CREATE_H3D_ARG_KEYWORD(KEY2 ,KEY3 ,KEY4 ,KEY5 ,KEY6 ,
648 . KEY7 ,KEY8 ,IS_ALL ,IS_LOWER ,IS_UPPER ,
649 . 'ir' ,2 ,IS_IR ,IR ,
650 . IS_IR_ALL ,IS_IR_LOWER ,IS_IR_UPPER,IS_DEF ,
651 . IBID1 ,IS_MEMB ,IBID2 )
652
653
654
655 IS_ALL = 1
656 IS_LOWER = 1
657 IS_UPPER = 1
658 IS_DEF = 0
659 IS_MEMB = 0
660 CALL CREATE_H3D_ARG_KEYWORD(KEY2 ,KEY3 ,KEY4 ,KEY5 ,KEY6 ,
661 . KEY7 ,KEY8 ,IS_ALL ,IS_LOWER ,IS_UPPER ,
662 . 'is' ,2 ,IS_IS ,IS ,
663 . IS_IS_ALL ,IS_IS_LOWER ,IS_IS_UPPER ,IS_DEF ,
664 . IBID1 ,IS_MEMB ,IBID2 )
665
666
667
668 IS_ALL = 1
669 IS_LOWER = 1
670 IS_UPPER = 1
671 IS_DEF = 0
672 IS_MEMB = 0
673 CALL CREATE_H3D_ARG_KEYWORD(KEY2 ,KEY3 ,KEY4 ,KEY5 ,KEY6 ,
674 . KEY7 ,KEY8 ,IS_ALL ,IS_LOWER ,IS_UPPER ,
675 . 'it' ,2 ,IS_IT ,IT ,
676 . IS_IT_ALL ,IS_IT_LOWER ,IS_IT_UPPER ,IS_DEF ,
677 . IBID1 ,IS_MEMB ,IBID2 )
678
679
680
681 IS_ALL = 1
682 IS_LOWER = 0
683 IS_UPPER = 0
684 IS_DEF = 0
685 IS_MEMB = 0
686 CALL CREATE_H3D_ARG_KEYWORD(KEY2 ,KEY3 ,KEY4 ,KEY5 ,KEY6 ,
687 . KEY7 ,KEY8 ,IS_ALL ,IS_LOWER ,IS_UPPER ,
688 . 'inter' ,5 ,IS_INTER ,INTER ,
689 . IS_INTER_ALL,IBID1 ,IBID2 ,IS_DEF ,
690 . IBID3 ,IS_MEMB ,IBID4 )
691
692
693
694 IS_ALL = 1
695 IS_LOWER = 0
696 IS_UPPER = 0
697 IS_DEF = 0
698 IS_MEMB = 0
699 CALL CREATE_H3D_ARG_KEYWORD(KEY2 ,KEY3 ,KEY4 ,KEY5 ,KEY6 ,
700 . KEY7 ,KEY8 ,IS_ALL ,IS_LOWER ,IS_UPPER ,
701 . 'id' ,2 ,IS_ID ,ID ,
702 . IS_ID_ALL ,IBID1 ,IBID2 ,IS_DEF ,
703 . IBID3 ,IS_MEMB ,IBID4 )
704
705
706
707 IS_ALL = 1
708 IS_LOWER = 0
709 IS_UPPER = 0
710 IS_DEF = 0
711 IS_MEMB = 0
712 CALL CREATE_H3D_ARG_KEYWORD(KEY2 ,KEY3 ,KEY4 ,KEY5 ,KEY6 ,
713 . KEY7 ,KEY8 ,IS_ALL ,IS_LOWER ,IS_UPPER ,
714 . 'mode' ,4 ,IS_MODE ,MODE ,
715 . IS_MODE_ALL,IBID1 ,IBID2 ,IS_DEF ,
716 . IBID3 ,IS_MEMB ,IBID4 )
717
718 CPT = 0
719.AND. IF ( IS_CHAR_KEY3 == 1 IS_EMPTY_KEY3 == 0) THEN
720 DO I=1,NCHARKEY
721 IF ( KEY3(I:I) /= ' ' ) THEN
722 CPT = CPT + 1
723 KEY3_GLOB(CPT:CPT) = KEY3(I:I)
724 ENDIF
725 ENDDO
726 ENDIF
727.AND. IF ( IS_CHAR_KEY4 == 1 IS_EMPTY_KEY4 == 0 ) THEN
728 CPT = CPT + 1
729 KEY3_GLOB(CPT:CPT) = '/'
730 DO I=1,NCHARKEY
731 IF ( KEY4(I:I) /= ' ' ) THEN
732 CPT = CPT + 1
733 KEY3_GLOB(CPT:CPT) = KEY4(I:I)
734 ENDIF
735 ENDDO
736 ENDIF
737.AND. IF ( IS_CHAR_KEY5 == 1 IS_EMPTY_KEY5 == 0 ) THEN
738 CPT = CPT + 1
739 KEY3_GLOB(CPT:CPT) = '/'
740 DO I=1,NCHARKEY
741 IF ( KEY5(I:I) /= ' ' ) THEN
742 CPT = CPT + 1
743 KEY3_GLOB(CPT:CPT) = KEY5(I:I)
744 ENDIF
745 ENDDO
746 ENDIF
747.AND. IF ( IS_CHAR_KEY6 == 1 IS_EMPTY_KEY6 == 0 ) THEN
748 CPT = CPT + 1
749 KEY3_GLOB(CPT:CPT) = '/'
750 DO I=1,NCHARKEY
751 IF ( KEY6(I:I) /= ' ' ) THEN
752 CPT = CPT + 1
753 KEY3_GLOB(CPT:CPT) = KEY6(I:I)
754 ENDIF
755 ENDDO
756 ENDIF
757.AND. IF ( IS_CHAR_KEY7 == 1 IS_EMPTY_KEY7 == 0 ) THEN
758 CPT = CPT + 1
759 KEY3_GLOB(CPT:CPT) = '/'
760 DO I=1,NCHARKEY
761 IF ( KEY7(I:I) /= ' ' ) THEN
762 CPT = CPT + 1
763 KEY3_GLOB(CPT:CPT) = KEY7(I:I)
764 ENDIF
765 ENDDO
766 ENDIF
767.AND. IF ( IS_CHAR_KEY8 == 1 IS_EMPTY_KEY8 == 0 ) THEN
768 CPT = CPT + 1
769 KEY3_GLOB(CPT:CPT) = '/'
770 DO I=1,NCHARKEY
771 IF ( KEY8(I:I) /= ' ' ) THEN
772 CPT = CPT + 1
773 KEY3_GLOB(CPT:CPT) = KEY8(I:I)
774 ENDIF
775 ENDDO
776 ENDIF
777
778 IS_MODEL_NPT = 0
779 IS_MODEL_LAYER = 0
780 IS_MODEL_PLY = 0
781 DO K=1,NUMGEO
782.OR..OR. IF(IGEO(11,K) == 9 IGEO(11,K) == 11 IGEO(11,K) == 16)
783 . IS_MODEL_NPT = 1
784.OR..OR. IF(IGEO(11,K) == 10 IGEO(11,K) == 11 IGEO(11,K) == 16)
785 . IS_MODEL_LAYER = 1
786.OR..OR. IF(IGEO(11,K) == 17 IGEO(11,K) == 51 IGEO(11,K) == 52)
787 . IS_MODEL_PLY = 1
788 ENDDO
789
790 CPT = 0
791 DO K=1,NUMMAT
792 IF (IPM(2,K) == 200) THEN
793 CPT = CPT + 1
794 ID_MAT_MDS(CPT) = IPM(1,K)
795 INDEX_MAT_MDS(CPT) = K
796 ENDIF
797 ENDDO
798
799
800
801 NB_KEY = 1
802 CPT_KEY = 1
803 KEY3_READ = KEY3_GLOB
804 KEY2_READ = KEY2
805 ISHELL_NPT_CHECK = 0
806 DO WHILE (CPT_KEY <= NB_KEY)
807 CALL H3D_GENE_KEYWORD(KEY2_READ,KEY2,KEY3_READ,KEY3_GLOB,NB_KEY,CPT_KEY,MULTI_FVM,
808 . IS_MODEL_NPT,IS_MODEL_LAYER,IS_MODEL_PLY,IS_MDSVAR,IS_MDSVAR_DEF,
809 . IS_PLY_ALL,IS_LAYER_ALL,IS_IPT,IS_LAYER,IS_PLY,IS_ID)
810 ISHELL_NPT_CHECK = 0
811
812 IF(KEY2 == 'part') THEN
813
814 CALL CREATE_H3D_PARTS(H3D_DATA,ID_INPUT,IPART,IGRPART)
815 H3D_DATA%IPART_SELECT = 1
816 IOK_H3DKEY = 1
817 ENDIF
818
819 IF(KEY2 == 'noda') THEN
820
821 NINTER_MAX = 0
822 IF (IS_INTER_ALL == 1) NINTER_MAX = NINTER
823 ALLOCATE (INTER_INPUT(MAX(1,NINTER_MAX)))
824 ALLOCATE (IS_AVAILABLE_KEY(MAX(1,NINTER_MAX)))
825
826 JMAX=MAX(H3D_NUM_KEY%NODAL_SCALAR, H3D_NUM_KEY%NODAL_VECTOR, H3D_NUM_KEY%NODAL_TENSOR)
827 DO J=1,JMAX
828
829 CPT_H3D = 0
830 IS_SCALAR = 0
831 IS_VECTOR = 0
832 IS_TENSOR = 0
833 IF ( KEY3_GLOB == H3D_KEYWORD_NODAL_SCALAR(J)%KEY3) IS_SCALAR = 1
834 IF ( KEY3_GLOB == H3D_KEYWORD_NODAL_VECTOR(J)%KEY3) IS_VECTOR = 1
835 IF ( KEY3_GLOB == H3D_KEYWORD_NODAL_TENSOR(J)%KEY3) IS_TENSOR = 1
836
837 IF ( IS_SCALAR == 1 ) THEN
838 IF(H3D_KEYWORD_NODAL_SCALAR(J)%IS_INTER /= 0 ) THEN
839 IF(IS_INTER_ALL == 0 )THEN
840 CPT_H3D = CPT_H3D + 1
841 INTER_INPUT(CPT_H3D) = 0
842 IS_AVAILABLE_KEY(CPT_H3D) = 1
843 IF(H3D_KEYWORD_NODAL_SCALAR(J)%IS_INTER == 1) THEN
844 IF(INTER /= 0) THEN
845 DO K=1,NINTER
846 IF(IPARI(15,K) == INTER) THEN
847
848 INTER_INPUT(CPT_H3D) = K
849 IF(KEY3_GLOB(1:4) == 'skid' ) THEN
850 NINTERSKID = NINTERSKID +1
851 H3D_DATA%N_SCAL_SKID = NINTERSKID
852 H3D_DATA%N_SKID_INTER(K) = NINTERSKID
853 ELSEIF(KEY3_GLOB(1:8) == 'cse_fric' ) THEN
854 IF(NINEFRIC == 0) NINEFRIC = NINEFRIC +1
855 H3D_DATA%N_SCAL_CSE_FRICINT = NINEFRIC
856 H3D_DATA%N_CSE_FRIC_INTER(K) = NINEFRIC
857 ENDIF
858 ENDIF
859 ENDDO
860 ELSE
861 H3D_DATA%N_SCAL_CSE_FRIC = 1
862 ENDIF
863 ENDIF
864 ELSE
865 IF(NINTER_MAX /= 0)THEN
866 NINEFRIC = 0
867 DO K=1,NINTER_MAX
868 IF(KEY3_GLOB(1:4) == 'skid' ) THEN
869 CPT_H3D = CPT_H3D + 1
870
871 INTER_INPUT(CPT_H3D) = K
872 IS_AVAILABLE_KEY(CPT_H3D) = 1
873 H3D_DATA%N_SKID_INTER(K) = K
874 ELSEIF(KEY3_GLOB(1:8) == 'cse_fric' ) THEN
875 N19 = IPARI(71,K)
876 IF(N19 <= 0) THEN
877 IF(H3D_DATA%N_CSE_FRIC_INTER(K) ==0) THEN
878 NINEFRIC = NINEFRIC +1
879 CPT_H3D = CPT_H3D + 1
880
881 INTER_INPUT(CPT_H3D) = K
882 IS_AVAILABLE_KEY(CPT_H3D) = 1
883 H3D_DATA%N_CSE_FRIC_INTER(K) = K
884 ENDIF
885 ELSEIF(N19 > 0 ) THEN
886 IF(H3D_DATA%N_CSE_FRIC_INTER(N19) ==0) THEN
887 NINEFRIC = NINEFRIC +1
888 CPT_H3D = CPT_H3D + 1
889
890 INTER_INPUT(CPT_H3D) = N19
891 IS_AVAILABLE_KEY(CPT_H3D) = 1
892 H3D_DATA%N_CSE_FRIC_INTER(K) = N19
893 ELSE
894 H3D_DATA%N_CSE_FRIC_INTER(K) = N19
895 ENDIF
896 ENDIF
897 ENDIF
898 ENDDO
899 IF(KEY3_GLOB(1:4) == 'skid' ) H3D_DATA%N_SCAL_SKID = NINTER
900 IF(KEY3_GLOB(1:8) == 'cse_fric' ) H3D_DATA%N_SCAL_CSE_FRICINT = NINEFRIC
901 ENDIF
902 ENDIF
903 ELSE
904 CPT_H3D = CPT_H3D + 1
905 INTER_INPUT(CPT_H3D) = 0
906
907 IS_AVAILABLE_KEY(CPT_H3D) = 1
908 ENDIF
909 IF(KEY3_GLOB(1:4) == 'pext')THEN
910 H3D_HAS_NODA_PEXT = 1
911 ENDIF
912 ENDIF
913 IF ( IS_SCALAR == 1 ) THEN
914 DO K=1,CPT_H3D
915.AND. IF (IS_AVAILABLE_KEY(K) == 1 IS_SCALAR == 1) THEN
916 CALL CREATE_H3D_NODAL_SCALAR(H3D_DATA,H3D_KEYWORD_NODAL_SCALAR(J)%ID,ID_INPUT,
917 . TRIM(H3D_KEYWORD_NODAL_SCALAR(J)%TEXT1),LEN_TRIM(H3D_KEYWORD_NODAL_SCALAR(J)%TEXT1),
918 . H3D_KEYWORD_NODAL_SCALAR(J)%COMMENT,80,IPART,KEY3_GLOB,
919 . INTER_INPUT(K),IGRPART)
920 IOK_H3DKEY = 1
921 ENDIF
922 ENDDO
923 ELSE
924 IF ( KEY3_GLOB == H3D_KEYWORD_NODAL_VECTOR(J)%KEY3 ) THEN
925 CALL CREATE_H3D_NODAL_VECTOR(H3D_DATA,H3D_KEYWORD_NODAL_VECTOR(J)%ID,ID_INPUT,
926 . TRIM(H3D_KEYWORD_NODAL_VECTOR(J)%TEXT1),
927 . LEN_TRIM(H3D_KEYWORD_NODAL_VECTOR(J)%TEXT1),
928 . H3D_KEYWORD_NODAL_VECTOR(J)%COMMENT,80,IPART,KEY3_GLOB,
929 . IGRPART)
930 IOK_H3DKEY = 1
931 ENDIF
932 IF ( KEY3_GLOB == H3D_KEYWORD_NODAL_TENSOR(J)%KEY3 ) THEN
933 CALL CREATE_H3D_NODAL_TENSOR(H3D_DATA,H3D_KEYWORD_NODAL_TENSOR(J)%ID,ID_INPUT,
934 . TRIM(H3D_KEYWORD_NODAL_TENSOR(J)%TEXT1),
935 . LEN_TRIM(H3D_KEYWORD_NODAL_TENSOR(J)%TEXT1),
936 . H3D_KEYWORD_NODAL_TENSOR(J)%COMMENT,80,IPART,KEY3_GLOB,
937 . IGRPART)
938 IOK_H3DKEY = 1
939 ENDIF
940 ENDIF
941
942 ENDDO
943
944 DEALLOCATE (INTER_INPUT)
945 DEALLOCATE (IS_AVAILABLE_KEY)
946 ENDIF
947
948
949
950
951
952
953
954
955
956
957
958
959 IF(KEY2 == 'shell.OR.' KEY2 =='elem.OR.' KEY2 =='solid.OR.'
960 . KEY2 == 'brick.OR.' KEY2 =='quad.OR.' KEY2 =='beam .OR.'
961 . KEY2 == 'spring.OR.' KEY2 =='truss.OR.' KEY2 =='sph') THEN
962
963 NLAY_MAX = 0
964 NIP_MAX = 0
965 NPLY_MAX = 0
966 NUVAR_MAX = 0
967 NMDSVAR_MAX = 0
968 MODE_MAX = 0
969 NIP_PLY_MAX = 0
970 NIP_ELEM_MAX = 0
971
972 ! LAYER=ALL
973 IF (IS_LAYER_ALL == 1) THEN
974 DO K=1,NUMGEO
975.OR..OR. IF(IGEO(11,K) == 10 IGEO(11,K) == 11 IGEO(11,K) == 16) THEN
976 NLAY_MAX = MAX(NLAY_MAX,IGEO(4,K))
977.OR..OR. ELSEIF(IGEO(11,K) == 20 IGEO(11,K) == 21 IGEO(11,K) == 22) THEN
978 NLAY_MAX = MAX(NLAY_MAX,MAX(1,IGEO(30,K)))
979 ENDIF
980 ENDDO
981 ENDIF
982
983 ! NPT=ALL
984 ISH_NPT0 = 0
985 DO K=1,NUMGEO
986.OR. IF(IGEO(11,K) == 1 IGEO(11,K) == 9) THEN
987 NIP_ELEM_MAX = MAX(NIP_ELEM_MAX,IGEO(4,K))
988 IF (IGEO(4,K)==0) THEN
989 ISH_NPT0=1
990 NIP_ELEM_MAX = NIP_ELEM_MAX + 1
991 ENDIF
992 ELSEIF(IGEO(11,K) == 18)THEN
993 NIP_ELEM_MAX = MAX(NIP_ELEM_MAX,IGEO(3,K))
994 ENDIF
995 ENDDO
996.AND. IF(IS_IPT_ALL == 1 NIP_ELEM_MAX == 0) ISHELL_NPT_CHECK = 1
997
998 ! PLY=ALL
999 ID_PLY (1:NUMGEO+NUMPLY) = 0
1000 IPT_PLY(1:NUMGEO+NUMPLY) = 0
1001 MAT_PLY(1:NUMGEO+NUMPLY) = 0
1002 IF (IS_PLY_ALL == 1) THEN
1003 DO K=1,NUMGEO
1004 IF(IGEO(11,K) == 19) THEN
1005 NPLY_MAX = NPLY_MAX + 1
1006 ID_PLY(NPLY_MAX) = IGEO(1,K)
1007 IPT_PLY(NPLY_MAX) = IGEO(4,K)
1008 MAT_PLY(NPLY_MAX) = IGEO(101,K)
1009 NIP_PLY_MAX = MAX(NIP_PLY_MAX,IGEO(44,K))
1010 ENDIF
1011 ENDDO
1012 DO K=1,NUMPLY
1013 NPLY_MAX = NPLY_MAX + 1
1014 ID_PLY(NPLY_MAX) = PLY_INFO(1,K)
1015 IPT_PLY(NPLY_MAX) = PLY_INFO(2,K)
1016 MAT_PLY(NPLY_MAX) = PLY_INFO(3,K)
1017 NIP_PLY_MAX = MAX(NIP_PLY_MAX,PLY_INFO(2,K))
1018 ENDDO
1019 !< Convert internal mat_id to user mat_id
1020 DO K=1,NPLY_MAX
1021 DO IMAT=1,NUMMAT
1022 IF (MAT_PLY(K) == IMAT) THEN
1023 MAT_PLY(K) = MAT_PARAM(IMAT)%MAT_ID
1024 EXIT
1025 ENDIF
1026 ENDDO
1027 ENDDO
1028 ENDIF
1029 NIP_MAX = MAX(NIP_ELEM_MAX,NIP_PLY_MAX)
1030
1031 IF (IS_UVAR_ALL == 1) THEN
1032 DO K=1,NUMMAT
1033 NUVAR_MAX = MAX(NUVAR_MAX,IPM(8,K))
1034 ENDDO
1035 ENDIF
1036 IF (IS_MDSVAR_ALL == 1) THEN
1037 IF(KEY3_GLOB(1:3) == 'mds' ) THEN
1038 DO K=1,MDS_NMAT
1039 NMDSVAR_MAX = NMDSVAR_MAX + MDS_NDEPSVAR(K)
1040 ENDDO
1041 ENDIF
1042 ENDIF
1043
1044 IF (IS_MDSVAR_DEF == 1) THEN
1045 IF(KEY3_GLOB(1:3) == 'mds' ) THEN
1046 DO k=1,mds_nmat
1047 DO l=1,mds_ndepsvar(k)
1048 nmdsvar_max = nmdsvar_max+mds_output_table(l,k)
1049 ENDDO
1050 ENDDO
1051 ENDIF
1052 ENDIF
1053
1054 ir_max = 0
1055 IF (is_ir_all == 1) THEN
1056 DO k=1,numgeo
1057 IF(igeo(11,k) == 6 .OR. igeo(11,k) == 14 .OR. igeo(11,k) == 20 .OR.
1058 . igeo(11,k) == 21 .OR. igeo(11,k) == 22) THEN
1059 IF(igeo(4,k) == 1 .OR. igeo(10,k)==15) THEN
1060 ir_max = 1
1061 ELSEIF(igeo(4,k) == 8) THEN
1062 ir_max = 2
1063 ELSE
1064 nptr=
max(2,igeo(4,k)/100)
1065 ir_max =
max(ir_max,nptr)
1066 ENDIF
1067 IF(n2d/=0) THEN
1068 IF(igeo(4,k) == 4) THEN
1069 ir_max = 2
1070 ELSE
1071 ir_max = 1
1072 ENDIF
1073 ENDIF
1074 ELSEIF(igeo(11,k) == 43)THEN
1075 ir_max =
max(ir_max,4)
1076 ENDIF
1077 ENDDO
1078 ENDIF
1079
1080 is_max = 0
1081 IF (is_is_all == 1) THEN
1082 DO k=1,numgeo
1083 IF(igeo(11,k) == 6 .OR. igeo(11,k) == 14 .OR. igeo(11,k) == 20 .OR.
1084 . igeo(11,k) == 21 .OR. igeo(11,k) == 22) THEN
1085
1086 IF(igeo(10,k)==15) THEN
1087 is_max =
max(is_max,igeo(4,k))
1088 ELSEIF(igeo(4,k) == 1) THEN
1089 is_max = 1
1090 ELSEIF(igeo(4,k) == 8) THEN
1091 is_max = 2
1092 ELSE
1093 npts=
max(2,mod(igeo(4,k)/10,10))
1094 is_max =
max(is_max,npts)
1095 ENDIF
1096 IF(n2d/=0) THEN
1097 IF(igeo(4,k) == 4) THEN
1098 is_max = 2
1099 ELSE
1100 is_max = 1
1101 ENDIF
1102 ENDIF
1103 ELSEIF(igeo(11,k) == 43)THEN
1104 is_max =
max(is_max,1)
1105 ENDIF
1106 ENDDO
1107 ENDIF
1108
1109 it_max = 0
1110 IF (is_it_all == 1) THEN
1111 DO k=1,numgeo
1112 IF(igeo(11,k) == 6 .OR. igeo(11,k) == 14 .OR. igeo(11,k) == 20 .OR.
1113 . igeo(11,k) == 21 .OR. igeo(11,k) == 22) THEN
1114 IF(igeo(4,k) == 1 .OR. igeo(10,k)==15) THEN
1115 it_max = 1
1116 ELSEIF(igeo(4,k) == 8) THEN
1117 it_max = 2
1118 ELSE
1119 nptt=
max(2,mod(igeo(4,k),10))
1120 it_max =
max(it_max,nptt)
1121 ENDIF
1122 ELSEIF(igeo(11,k) == 43)THEN
1123 it_max =
max(it_max,1)
1124 ENDIF
1125 IF(n2d/=0) THEN
1126 it_max = 1
1127 ENDIF
1128 ENDDO
1129 ENDIF
1130
1131 IF ((is_ir_all + is_is_all+is_it_all)>0) THEN
1132 DO k=1,numgeo
1133 IF(igeo(10,k)==14.AND. (igeo(11,k) == 20 .OR.
1134 . igeo(11,k) == 21 .OR. igeo(11,k) == 22)) THEN
1135 icstr= igeo(14,k)
1136 npt = igeo(4,k)
1137 nptr=npt/100
1138 npts=mod(npt/10,10)
1139 nptt=mod(npt,10)
1140 SELECT CASE (icstr)
1141 CASE(100)
1142 IF (nptt==0) nptt= igeo(15,k)
1143 CASE(10)
1144 IF (npts==0) npts= igeo(15,k)
1145 CASE(1)
1146 IF (nptr==0) nptr= igeo(15,k)
1147 END SELECT
1148 IF (is_ir_all == 1) ir_max =
max(ir_max,nptr)
1149 IF (is_is_all == 1) is_max =
max(is_max,npts)
1150 IF (is_it_all == 1) it_max =
max(it_max,nptt)
1151 ENDIF
1152 ENDDO
1153 END IF
1154
1155
1156 IF (numels10g>0) THEN
1157 IF (is_ir_all == 1) ir_max =
max(ir_max,2)
1158 IF (is_is_all == 1) is_max =
max(is_max,2)
1159 IF (is_it_all == 1) it_max =
max(it_max,2)
1160 END IF
1161
1162 id_max = 0
1163 IF (is_id_all == 1) THEN
1164 DO k=1,nummat
1165 IF (ipm(2,k) == 36) THEN
1166 id_max = 1
1167 ELSEIF (ipm(2,k) == 78) THEN
1168 id_max = 3
1169 ELSEIF (ipm(2,k) == 87) THEN
1170 id_max = 4
1171 ENDIF
1172 ENDDO
1173 ENDIF
1174
1175 cpt_mod = 0
1176 cpt_lawid = 0
1177 cpt_irup = 0
1178
1179
1180
1181
1182 IF (key3_glob(1:7) == 'FAILURE') THEN
1183
1184
1185 cpt_mod = 0
1186
1187
1188 IF ((is_mode > 0).OR.(is_mode_all > 0)) THEN
1189
1190
1191 IF (is_id_all > 0) THEN
1192
1193
1194 IF (ALLOCATED(modname)) DEALLOCATE(modname)
1195 IF (ALLOCATED(fail_name)) DEALLOCATE(fail_name)
1196 IF (ALLOCATED(irup_id_all)) DEALLOCATE(irup_id_all)
1197 cpt_irup = 0
1198 DO imat = 1,nummat
1199 nfail = mat_param(imat)%NFAIL
1200 IF (nfail > 0) THEN
1201 DO j = 1,nfail
1202 nmod = mat_param(imat)%FAIL(j)%NMOD
1203 IF (mat_param(imat)%FAIL(j)%FAIL_ID > 0 .AND. nmod > 0) THEN
1204 cpt_irup = cpt_irup + 1
1205 cpt_mod =
max(cpt_mod,nmod)
1206 ENDIF
1207 ENDDO
1208 ENDIF
1209 ENDDO
1210
1211
1212 ALLOCATE(fail_name(cpt_irup))
1213 ALLOCATE(irup_id_all(cpt_irup))
1214 ALLOCATE(modname(cpt_irup,cpt_mod))
1215 irup_id_all(1:cpt_irup) = 0
1216 cpt_irup = 0
1217 cpt_mod = 0
1218 DO imat = 1,nummat
1219 nfail = mat_param(imat)%NFAIL
1220 IF (nfail > 0) THEN
1221 DO j = 1,nfail
1222 nmod = mat_param(imat)%FAIL(j)%NMOD
1223 IF (mat_param(imat)%FAIL(j)%FAIL_ID > 0) THEN
1224 cpt_irup = cpt_irup + 1
1225 IF (nmod > 0) THEN
1226 fail_name(cpt_irup) = mat_param(imat)%FAIL(j)%KEYWORD
1227 irup_id_all(cpt_irup) = mat_param(imat)%FAIL(j)%FAIL_ID
1228 modname(cpt_irup,1:nmod) = mat_param(imat)%FAIL(j)%MODE(1:nmod)
1229 IF (is_mode_all > 0) THEN
1230 cpt_mod =
max(cpt_mod,nmod)
1231 ELSEIF (is_mode > 0) THEN
1232 cpt_mod = 1
1233 ENDIF
1234 ENDIF
1235 ENDIF
1236 ENDDO
1237 ENDIF
1238 ENDDO
1239
1240
1241 id_max = cpt_irup
1242
1243
1244 IF (cpt_irup == 0) THEN
1245 IF (ispmd == 0) THEN
1246 WRITE(test_chain,'(10A)') "/H3D/",trim(key2),"/",
1247 . trim(key3),"/",trim(key4),"/",
1248 . trim(key5),"/",trim(key6)
1250 . anmode=aninfo,
1251 . c1=test_chain)
1253 ENDIF
1254 ENDIF
1255
1256
1257 mode_max = cpt_mod
1258
1259
1260 IF (cpt_mod == 0) THEN
1261 IF (ispmd == 0) THEN
1262 WRITE(test_chain,'(10A)') "/H3D/",trim(key2),"/",
1263 . trim(key3),"/",trim(key4),"/",
1264 . trim(key5),"/",trim(key6)
1266 . anmode=aninfo,
1267 . c1=test_chain,
1268 . c2=fail_name(1))
1270 ENDIF
1271 ENDIF
1272
1273
1274 ELSEIF (is_id > 0) THEN
1275
1276 IF (ALLOCATED(modname)) DEALLOCATE(modname)
1277 IF (ALLOCATED(fail_name)) DEALLOCATE(fail_name)
1278 DO imat = 1,nummat
1279 nfail = mat_param(imat)%NFAIL
1280 IF (nfail > 0) THEN
1281 DO j = 1,nfail
1282 IF (mat_param(imat)%FAIL(j)%FAIL_ID ==
id)
THEN
1283 nmod = mat_param(imat)%FAIL(j)%NMOD
1284 IF (nmod > 0) THEN
1285 ALLOCATE(modname(1,nmod))
1286 modname(1,1:nmod) = mat_param(imat)%FAIL(j)%MODE(1:nmod)
1287 IF (is_mode_all > 0) THEN
1288 mode_max = nmod
1289 ELSEIF (is_mode > 0) THEN
1290 mode_max = 1
1291 ENDIF
1292 cpt_mod = 1
1293 ENDIF
1294 ALLOCATE(fail_name(1))
1295 fail_name(1) = mat_param(imat)%FAIL(j)%KEYWORD
1296 cpt_irup = 1
1297 ENDIF
1298 ENDDO
1299 ENDIF
1300 ENDDO
1301
1302
1303 IF (cpt_irup == 0) THEN
1304 IF (ispmd == 0) THEN
1305 WRITE(test_chain,'(10A)') "/H3D/",trim(key2),"/",
1306 . trim(key3),"/",TRIM(KEY4),"/",
1307 . TRIM(KEY5),"/",TRIM(KEY6)
1308 CALL ANCMSG(MSGID=309,
1309 . ANMODE=ANINFO,
1310 . C1=TEST_CHAIN,
1311 . I1=ID)
1312 CALL ARRET(2)
1313 ENDIF
1314 ENDIF
1315
1316 !< No different modes for the failure model
1317 IF (CPT_MOD == 0) THEN
1318 IF (ISPMD == 0) THEN
1319 WRITE(TEST_CHAIN,'(10A)') "/h3d/",TRIM(KEY2),"/",
1320 . TRIM(KEY3),"/",TRIM(KEY4),"/",
1321 . TRIM(KEY5),"/",TRIM(KEY6)
1322 CALL ANCMSG(MSGID=310,
1323 . ANMODE=ANINFO,
1324 . C1=TEST_CHAIN,
1325 . C2=FAIL_NAME(1),
1326 . I1=ID)
1327 CALL ARRET(2)
1328 ENDIF
1329 ENDIF
1330 ENDIF
1331
1332 ! Otherwise, classic global damage variable only
1333 ELSE
1334 ! All failure IDs are asked by user
1335 IF (IS_ID_ALL > 0) THEN
1336
1337 ! First count of the failure models with IDs
1338 IF (ALLOCATED(FAIL_NAME)) DEALLOCATE(FAIL_NAME)
1339 IF (ALLOCATED(IRUP_ID_ALL)) DEALLOCATE(IRUP_ID_ALL)
1340 CPT_IRUP = 0
1341 DO IMAT = 1,NUMMAT
1342 NFAIL = MAT_PARAM(IMAT)%NFAIL
1343 IF (NFAIL > 0) THEN
1344 DO J = 1,NFAIL
1345 IF (MAT_PARAM(IMAT)%FAIL(J)%FAIL_ID > 0) THEN
1346 CPT_IRUP = CPT_IRUP + 1
1347 ENDIF
1348 ENDDO
1349 ENDIF
1350 ENDDO
1351
1352 ! Second count to save IDs and failure model names
1353 ALLOCATE(FAIL_NAME(CPT_IRUP))
1354 ALLOCATE(IRUP_ID_ALL(CPT_IRUP))
1355 IRUP_ID_ALL(1:CPT_IRUP) = 0
1356 CPT_IRUP = 0
1357 DO IMAT = 1,NUMMAT
1358 NFAIL = MAT_PARAM(IMAT)%NFAIL
1359 IF (NFAIL > 0) THEN
1360 DO J = 1,NFAIL
1361 IF (MAT_PARAM(IMAT)%FAIL(J)%FAIL_ID > 0) THEN
1362 CPT_IRUP = CPT_IRUP + 1
1363 FAIL_NAME(CPT_IRUP) = MAT_PARAM(IMAT)%FAIL(J)%KEYWORD
1364 IRUP_ID_ALL(CPT_IRUP) = MAT_PARAM(IMAT)%FAIL(J)%FAIL_ID
1365 ENDIF
1366 ENDDO
1367 ENDIF
1368 ENDDO
1369
1370 ! Maximal number of IDs
1371 ID_MAX = CPT_IRUP
1372
1373 !< If no failure model is found with ID, print error message
1374 IF (CPT_IRUP == 0) THEN
1375 IF (ISPMD == 0) THEN
1376 WRITE(TEST_CHAIN,'(10A)') "/h3d/",TRIM(KEY2),"/",
1377 . TRIM(KEY3),"/",TRIM(KEY4),"/",
1378 . TRIM(KEY5),"/",TRIM(KEY6)
1379 CALL ANCMSG(MSGID=311,
1380 . ANMODE=ANINFO,
1381 . C1=TEST_CHAIN)
1382 CALL ARRET(2)
1383 ENDIF
1384 ENDIF
1385
1386 ! Only a specific failure ID is asked by the user
1387 ELSEIF (IS_ID > 0) THEN
1388
1389 ! Look for failure criterion ID among materials
1390 CPT_IRUP = 0
1391 IF (ALLOCATED(FAIL_NAME)) DEALLOCATE(FAIL_NAME)
1392 DO IMAT = 1,NUMMAT
1393 NFAIL = MAT_PARAM(IMAT)%NFAIL
1394 IF (NFAIL > 0) THEN
1395 DO J = 1,NFAIL
1396 IF (MAT_PARAM(IMAT)%FAIL(J)%FAIL_ID == ID) THEN
1397 ALLOCATE(FAIL_NAME(1))
1398 CPT_IRUP = 1
1399 FAIL_NAME(1) = MAT_PARAM(IMAT)%FAIL(J)%KEYWORD
1400 ENDIF
1401 ENDDO
1402 ENDIF
1403 ENDDO
1404
1405 !< If no failure model is found with ID, print error message
1406 IF (CPT_IRUP == 0) THEN
1407 IF (ISPMD == 0) THEN
1408 WRITE(TEST_CHAIN,'(10A)') "/h3d/",TRIM(KEY2),"/",
1409 . TRIM(KEY3),"/",TRIM(KEY4),"/",
1410 . TRIM(KEY5),"/",TRIM(KEY6)
1411 CALL ANCMSG(MSGID=309,
1412 . ANMODE=ANINFO,
1413 . C1=TEST_CHAIN,
1414 . I1=ID)
1415 CALL ARRET(2)
1416 ENDIF
1417 ENDIF
1418
1419 ENDIF
1420 ENDIF
1421 ENDIF
1422 !=====================================================================================
1423
1424 !=====================================================================================
1425 ! /H3D/ELEM/DAMG output definition
1426 !=====================================================================================
1427 ! -> Modes output definition
1428.AND..OR. IF ((KEY3_GLOB(1:4) == 'DAMG')((IS_MODE > 0)(IS_MODE_ALL > 0))) THEN
1429 ! Only available if the ID of the material law is given by user
1430 CPT_MOD = 0
1431 CPT_LAWID = 0
1432 ! -> Specific ID given by user
1433 IF (IS_ID > 0) THEN
1434 ! Recover the number of modes and their names
1435 IF (ALLOCATED(MODNAME)) DEALLOCATE(MODNAME)
1436 DO IMAT = 1,NUMMAT
1437 IF (MAT_PARAM(IMAT)%MAT_ID == ID) THEN
1438 CPT_LAWID = 1
1439 NMOD = MAT_PARAM(IMAT)%NMOD
1440 ALLOCATE(MODNAME(1,NMOD))
1441 MODNAME(1,1:NMOD) = MAT_PARAM(IMAT)%MODE(1:NMOD)
1442 MLW = MAT_PARAM(IMAT)%ILAW
1443 IF (IS_MODE_ALL > 0) THEN
1444 MODE_MAX = NMOD
1445 ELSEIF (IS_MODE > 0) THEN
1446 MODE_MAX = 1
1447 ENDIF
1448.AND. IF ((NMOD > 0)(MODE <= NMOD)) CPT_MOD = 1
1449 ENDIF
1450 ENDDO
1451 !< Error message if no material law is found with ID
1452 IF (CPT_LAWID == 0) THEN
1453 IF (ISPMD == 0) THEN
1454 WRITE(TEST_CHAIN,'(10A)') "/h3d/",TRIM(KEY2),"/",
1455 . TRIM(KEY3),"/",TRIM(KEY4),"/",
1456 . TRIM(KEY5),"/",TRIM(KEY6)
1457 CALL ANCMSG(
1458 . MSGID=313,
1459 . C1=TEST_CHAIN,
1460 . I1=ID,
1461 . ANMODE=ANINFO)
1462 CALL ARRET(2)
1463 ENDIF
1464 ENDIF
1465 !< Error message if no mode is found
1466 IF (CPT_MOD == 0) THEN
1467 IF (ISPMD == 0) THEN
1468 WRITE(TEST_CHAIN,'(10A)') "/h3d/",TRIM(KEY2),"/",
1469 . TRIM(KEY3),"/",TRIM(KEY4),"/",
1470 . TRIM(KEY5),"/",TRIM(KEY6)
1471 CALL ANCMSG(
1472 . MSGID=314,
1473 . C1=TEST_CHAIN,
1474 . I1=MLW,
1475 . I2=ID,
1476 . ANMODE=ANINFO)
1477 CALL ARRET(2)
1478 ENDIF
1479 ENDIF
1480 ! Otherwise, printing error message
1481 ELSE
1482 IF (ISPMD == 0) THEN
1483 WRITE(TEST_CHAIN,'(10A)') "/h3d/",TRIM(KEY2),"/",
1484 . TRIM(KEY3),"/",TRIM(KEY4),"/",
1485 . TRIM(KEY5),"/",TRIM(KEY6)
1486 CALL ANCMSG(
1487 . MSGID=306,
1488 . C1=TEST_CHAIN,
1489 . ANMODE=ANINFO)
1490 CALL ARRET(2)
1491 ENDIF
1492 ENDIF
1493 ! -> ID only output definition
1494.AND. ELSEIF ((KEY3_GLOB(1:4) == 'DAMG')(IS_ID > 0)) THEN
1495 CPT_LAWID = 0
1496 DO IMAT = 1,NUMMAT
1497 IF (MAT_PARAM(IMAT)%MAT_ID == ID) THEN
1498 MLW = MAT_PARAM(IMAT)%ILAW
1499 CPT_LAWID = 1
1500 ENDIF
1501 ENDDO
1502 IF (CPT_LAWID == 0) THEN
1503 IF (ISPMD == 0) THEN
1504 WRITE(TEST_CHAIN,'(10A)') "/h3d/",TRIM(KEY2),"/",
1505 . TRIM(KEY3),"/",TRIM(KEY4),"/",
1506 . TRIM(KEY5),"/",TRIM(KEY6)
1507 CALL ANCMSG(
1508 . MSGID=313,
1509 . C1=TEST_CHAIN,
1510 . I1=ID,
1511 . ANMODE=ANINFO)
1512 CALL ARRET(2)
1513 ENDIF
1514 ENDIF
1515 ENDIF
1516 !=====================================================================================
1517
1518 !< SIZE of each input array (+1 for global integration shell to add lower layer output)
1519 SIZE_INPUT = MAX(1,NLAY_MAX)*MAX(1,NIP_MAX)*MAX(1,NPLY_MAX)*MAX(1,NUVAR_MAX)*
1520 . MAX(1,IR_MAX)*MAX(1,IS_MAX)*MAX(1,IT_MAX)*MAX(1,NMDSVAR_MAX)*MAX(1,ID_MAX)*
1521 . MAX(1,MODE_MAX)+1
1522 ALLOCATE (LAYER_INPUT(SIZE_INPUT))
1523 ALLOCATE (IPT_INPUT(SIZE_INPUT))
1524 ALLOCATE (PLY_INPUT(SIZE_INPUT))
1525 ALLOCATE (UVAR_INPUT(SIZE_INPUT))
1526 ALLOCATE (GAUSS_INPUT(SIZE_INPUT))
1527 ALLOCATE (IR_INPUT(SIZE_INPUT))
1528 ALLOCATE (IS_INPUT(SIZE_INPUT))
1529 ALLOCATE (IT_INPUT(SIZE_INPUT))
1530 ALLOCATE (IS_AVAILABLE_KEY(SIZE_INPUT))
1531 ALLOCATE (MDSVAR_INPUT(SIZE_INPUT))
1532 ALLOCATE (MDSVAR_INPUT1(SIZE_INPUT))
1533 ALLOCATE (MDSVAR_INPUT2(SIZE_INPUT))
1534 ALLOCATE (IDS_INPUT(SIZE_INPUT))
1535 ALLOCATE (IRUP_H3D(SIZE_INPUT))
1536 ALLOCATE (MODES_INPUT(SIZE_INPUT))
1537
1538 CPT = 0
1539 ALLOCATE (MDSVAR_INPUT_TMP(MAX(1,NMDSVAR_MAX)))
1540 ALLOCATE (MDSVAR_INPUT1_TMP(MAX(1,NMDSVAR_MAX)))
1541 ALLOCATE (MDSVAR_INPUT2_TMP(MAX(1,NMDSVAR_MAX)))
1542
1543 LAYER_INPUT(:) = 0
1544 IPT_INPUT(:) = 0
1545 PLY_INPUT(:) = 0
1546 UVAR_INPUT(:) = 0
1547 GAUSS_INPUT(:) = 0
1548 IR_INPUT(:) = 0
1549 IS_INPUT(:) = 0
1550 IT_INPUT(:) = 0
1551 IS_AVAILABLE_KEY(:) = 0
1552 MDSVAR_INPUT(:) = 0
1553 MDSVAR_INPUT1(:) = 0
1554 MDSVAR_INPUT2(:) = 0
1555 IRUP_H3D(:) = 0
1556 IDS_INPUT(:) = 0
1557 MODES_INPUT(:) = 0
1558
1559 IF (IS_MDSVAR_ALL == 1) THEN
1560 IF(KEY3_GLOB(1:3) == 'MDS' ) THEN
1561 DO K=1,MDS_NMAT
1562 DO L=1,MDS_NDEPSVAR(K)
1563 CPT = CPT + 1
1564 MDSVAR_INPUT_TMP(CPT) = K
1565 MDSVAR_INPUT1_TMP(CPT) = L
1566 MDSVAR_INPUT2_TMP(CPT) = ID_MAT_MDS(K)
1567 ENDDO
1568 ENDDO
1569 ENDIF
1570 ENDIF
1571 IF (IS_MDSVAR_DEF == 1) THEN
1572 IF(KEY3_GLOB(1:3) == 'MDS' ) THEN
1573 DO K=1,MDS_NMAT
1574 DO L=1,MDS_NDEPSVAR(K)
1575 IF(MDS_OUTPUT_TABLE(L,K) /= 0) THEN
1576 CPT = CPT + 1
1577 MDSVAR_INPUT_TMP(CPT) = K
1578 MDSVAR_INPUT1_TMP(CPT) = L
1579 MDSVAR_INPUT2_TMP(CPT) = ID_MAT_MDS(K)
1580 ENDIF
1581 ENDDO
1582 ENDDO
1583 ENDIF
1584 ENDIF
1585 CPT = 0
1586
1587 ENDIF
1588
1589.NOT. IF(ALLOCATED(IS_LAYER_MAT))ALLOCATE(IS_LAYER_MAT(MAX(1,NUMMAT),MAX(1,NLAY_MAX)))
1590 IS_LAYER_MAT(1:MAX(1,NUMMAT),MAX(1,NLAY_MAX)) = 0
1591
1592 IF(IS_MDSVAR == 1) THEN
1593
1594 DO NG=1,NGROUP
1595
1596 CALL INITBUF(IPARG ,NG ,
1597 2 MLW ,NEL ,NFT ,IAD ,ITY ,
1598 3 NPT ,JALE ,ISMSTR ,JEUL ,JTURB ,
1599 4 JTHE ,JLAG ,JMULT ,JHBE ,JIVF ,
1600 5 NVAUX ,JPOR ,JCVT ,JCLOSE ,JPLASOL ,
1601 6 IREP ,IINT ,IGTYP ,ISRAT ,ISROT ,
1602 7 ICSEN ,ISORTH ,ISORTHG ,IFAILURE,JSMS )
1603
1604 NLAY = ELBUF_STR(NG)%NLAY
1605 ISUBSTACK = IPARG(71,NG)
1606 DO J=1,NLAY
1607 NUVAR = ELBUF_STR(NG)%BUFLY(J)%NVAR_MAT
1608 IF(IUVAR <= NUVAR) THEN
1609 ID_PLY_TMP = 0
1610.OR. IF (IGTYP == 17 IGTYP == 51) THEN
1611 ID_PLY_TMP = IGEO(1,STACK%IGEO(2+J,ISUBSTACK))
1612 ELSEIF (IGTYP == 52) THEN
1613 ID_PLY_TMP = PLY_INFO(1,STACK%IGEO(2+J,ISUBSTACK)-NUMSTACK)
1614 ENDIF
1615
1616 IMAT = ELBUF_STR(NG)%BUFLY(J)%IMAT
1617
1618 IS_LAYER_MAT(IMAT,J) = 1
1619
1620 ENDIF
1621 ENDDO
1622 ENDDO
1623 ENDIF
1624
1625.OR. IF(KEY2 == 'SHELL' KEY2 =='ELEM') THEN
1626
1627
1628 JMAX=MAX(H3D_NUM_KEY%SHELL_SCALAR, H3D_NUM_KEY%SHELL_VECTOR, H3D_NUM_KEY%SHELL_TENSOR)
1629 DO J=1,JMAX
1630 CPT_H3D = 0
1631 IS_SCALAR = 0
1632 IS_VECTOR = 0
1633 IS_TENSOR = 0
1634 IF ( KEY3_GLOB == H3D_KEYWORD_SHELL_SCALAR(J)%KEY3) IS_SCALAR = 1
1635 IF ( KEY3_GLOB == H3D_KEYWORD_SHELL_VECTOR(J)%KEY3) IS_VECTOR = 1
1636 IF ( KEY3_GLOB == H3D_KEYWORD_SHELL_TENSOR(J)%KEY3) IS_TENSOR = 1
1637.OR..OR. IF ( IS_SCALAR == 1 IS_VECTOR == 1 IS_TENSOR == 1 ) THEN
1638 IF(IS_SCALAR == 1) H3D_KEYWORD_SHELL = H3D_KEYWORD_SHELL_SCALAR(J)
1639 IF(IS_VECTOR == 1) H3D_KEYWORD_SHELL = H3D_KEYWORD_SHELL_VECTOR(J)
1640 IF(IS_TENSOR == 1) H3D_KEYWORD_SHELL = H3D_KEYWORD_SHELL_TENSOR(J)
1641.OR. IF(H3D_KEYWORD_SHELL%IS_LAYER /= 0
1642.OR. . H3D_KEYWORD_SHELL%IS_IPT /= 0
1643.OR. . H3D_KEYWORD_SHELL%IS_PLY /= 0
1644.OR. . H3D_KEYWORD_SHELL%IS_UVAR /= 0
1645.OR. . H3D_KEYWORD_SHELL%IS_MDSVAR /= 0
1646.OR. . H3D_KEYWORD_SHELL%IS_ID /= 0
1647 . H3D_KEYWORD_SHELL%IS_MODE /= 0 ) THEN
1648
1649.AND..AND..AND..AND. IF(IS_LAYER_ALL == 0 IS_IPT_ALL == 0 IS_PLY_ALL == 0 IS_UVAR_ALL == 0
1650.AND..AND..AND. . IS_MDSVAR_ALL == 0 IS_MDSVAR_DEF ==0 IS_ID_ALL ==0 IS_MODE_ALL ==0)THEN
1651
1652 CPT_H3D = CPT_H3D + 1
1653 LAYER_INPUT(CPT_H3D) = -1
1654 IPT_INPUT(CPT_H3D) = -1
1655 IDS_INPUT(CPT_H3D) = -1
1656 PLY_INPUT(CPT_H3D) = -1
1657 UVAR_INPUT (CPT_H3D)= -1
1658 GAUSS_INPUT(CPT_H3D) = -1
1659 MDSVAR_INPUT(CPT_H3D)= -1
1660 MDSVAR_INPUT1(CPT_H3D)= -1
1661 MDSVAR_INPUT2(CPT_H3D)= -1
1662 MODES_INPUT(CPT_H3D)= -1
1663 IS_AVAILABLE_KEY(CPT_H3D) = 1
1664
1665 IF(H3D_KEYWORD_SHELL%IS_LAYER == 1) THEN
1666 IF(LAYER /= 0) LAYER_INPUT(CPT_H3D) = LAYER
1667 IF(IS_LAYER_LOWER == 1) LAYER_INPUT(CPT_H3D) = -2
1668 IF(IS_LAYER_UPPER == 1) LAYER_INPUT(CPT_H3D) = -3
1669 ENDIF
1670
1671 IF(H3D_KEYWORD_SHELL%IS_IPT == 1) THEN
1672 IF(IPT /= 0) IPT_INPUT(CPT_H3D) = IPT
1673 IF(IS_IPT_LOWER == 1 )IPT_INPUT(CPT_H3D) = -2
1674 IF(IS_IPT_UPPER == 1 )IPT_INPUT(CPT_H3D) = -3
1675 IF(IS_IPT_MEMB == 1 )IPT_INPUT(CPT_H3D) = -4
1676 ENDIF
1677
1678 IF(H3D_KEYWORD_SHELL%IS_PLY == 1) THEN
1679 IF(PLY /= 0) PLY_INPUT(CPT_H3D) = PLY
1680 ENDIF
1681
1682 IF(H3D_KEYWORD_SHELL%IS_UVAR == 1) THEN
1683 IF(IUVAR /= 0) UVAR_INPUT(CPT_H3D) = IUVAR
1684 ENDIF
1685
1686 IF(H3D_KEYWORD_SHELL%IS_ID == 1) THEN
1687 IF(ID /= 0) IDS_INPUT(CPT_H3D) = ID
1688.AND. IF ((KEY3_GLOB(1:7) == 'FAILURE')(CPT_IRUP > 0)) THEN
1689 IRUP_H3D(CPT_H3D) = 1
1690 ENDIF
1691 ENDIF
1692
1693 IF(H3D_KEYWORD_SHELL%IS_MDSVAR == 1) THEN
1694 IF(IMDSVAR /= 0) THEN
1695 MDSVAR_INPUT(CPT_H3D) = ((IMDSVAR-1) * MDS_NMAT /NMDSVAR_MAX)+1
1696 MDSVAR_INPUT1(CPT_H3D) = IMDSVAR-(MDSVAR_INPUT(CPT_H3D)-1)*NMDSVAR_MAX/MDS_NMAT
1697 MDSVAR_INPUT2(CPT_H3D) = ID_MAT_MDS(MDSVAR_INPUT(CPT_H3D))
1698 ENDIF
1699 ENDIF
1700
1701 IF(H3D_KEYWORD_SHELL%IS_MODE == 1) THEN
1702 IF(MODE /= 0) MODES_INPUT(CPT_H3D) = MODE
1703 ENDIF
1704
1705 ELSE
1706 IF(NLAY_MAX + MAX(1,NIP_MAX) + NPLY_MAX + NUVAR_MAX + NMDSVAR_MAX + ID_MAX + MODE_MAX /= 0)THEN
1707 DO K=1,MAX(1,IS_LAYER_ALL*MAX(NLAY_MAX,1))
1708 DO L=1,MAX(1,IS_IPT_ALL*MAX(NIP_MAX,1))
1709 DO M=1,MAX(1,IS_PLY_ALL*MAX(NPLY_MAX,1))
1710 DO N=1,MAX(1,IS_UVAR_ALL*MAX(NUVAR_MAX,1))
1711 DO O=1,MAX(1,MAX(IS_MDSVAR_ALL,IS_MDSVAR_DEF)*MAX(NMDSVAR_MAX,1))
1712 DO P=1,MAX(1,IS_ID_ALL*MAX(ID_MAX,1))
1713 DO Q=1,MAX(1,IS_MODE_ALL*MAX(MODE_MAX,1))
1714
1715 !< Check if the current output exist for failure/damage
1716 !< witch stack composite properties using plys
1717 ! -> Failure criteria case
1718 IF (KEY3_GLOB(1:7) == "failure") THEN
1719 IF (NPLY_MAX > 0) THEN
1720 FOUND = .FALSE.
1721 DO IMAT = 1,NUMMAT
1722 !< Check if the material ID is the same as the ply material ID
1723 IF (MAT_PARAM(IMAT)%MAT_ID == MAT_PLY(M)) THEN
1724 !< Number of ply failure criteria
1725 NFAIL = MAT_PARAM(IMAT)%NFAIL
1726 IF (NFAIL > 0) THEN
1727 !< Loop over ply failure criteria IDs
1728 DO IFAIL = 1,NFAIL
1729 IF (IS_ID_ALL == 1) THEN
1730 IF (MAT_PARAM(IMAT)%FAIL(IFAIL)%FAIL_ID == IRUP_ID_ALL(P)) THEN
1731 FOUND = .TRUE.
1732 ENDIF
1733 ELSE
1734 IF (MAT_PARAM(IMAT)%FAIL(IFAIL)%FAIL_ID == ID) THEN
1735 FOUND = .TRUE.
1736 ENDIF
1737 ENDIF
1738 ENDDO
1739 ENDIF
1740 ENDIF
1741 ENDDO
1742 !< If the combination of ply and failure ID is not found
1743 !< in the material list, skip this output
1744.NOT. IF (FOUND) CYCLE
1745 ENDIF
1746 ! -> Coupled damage model case
1747 ELSEIF (KEY3_GLOB(1:4) == "damg") THEN
1748.AND. IF ((NPLY_MAX > 0)(ID > 0)) THEN
1749 !< If the ply ID is not the same as the material ID, skip this output
1750 IF (ID /= MAT_PLY(M)) CYCLE
1751 ENDIF
1752 ENDIF
1753
1754 CPT_H3D = CPT_H3D + 1
1755
1756 LAYER_INPUT(CPT_H3D) = -1
1757.AND. IF (NLAY_MAX /= 0 IS_LAYER_ALL == 1) LAYER_INPUT(CPT_H3D) = K
1758.AND. IF (IS_LAYER_ALL == 0 LAYER >= 1) LAYER_INPUT(CPT_H3D) = LAYER
1759
1760 IPT_INPUT(CPT_H3D) = -1
1761 IF (NIP_ELEM_MAX > 0) THEN
1762 IF (IS_IPT_ALL == 1) IPT_INPUT(CPT_H3D) = L
1763.AND. IF (IS_IPT_ALL == 0 IPT >= 1) IPT_INPUT(CPT_H3D) = IPT
1764 IF (IS_IPT_LOWER == 1) IPT_INPUT(CPT_H3D) = -2
1765 IF (IS_IPT_UPPER == 1) IPT_INPUT(CPT_H3D) = -3
1766 IF (IS_IPT_MEMB == 1) IPT_INPUT(CPT_H3D) = -4
1767 ENDIF
1768
1769 PLY_INPUT(CPT_H3D) = -1
1770.AND. IF (NPLY_MAX /= 0 IS_PLY_ALL == 1) THEN
1771 PLY_INPUT(CPT_H3D) = ID_PLY(M)
1772 IF (IS_IPT_ALL == 1) THEN
1773 IPT_INPUT(CPT_H3D) = L
1774.AND. ELSEIF (IS_IPT_ALL == 0 IPT >= 1) THEN
1775 IPT_INPUT(CPT_H3D) = IPT
1776 ELSEIF (IS_IPT_LOWER == 1) THEN
1777 IPT_INPUT(CPT_H3D) = -2
1778 ELSEIF (IS_IPT_UPPER == 1) THEN
1779 IPT_INPUT(CPT_H3D) = -3
1780 ELSEIF (IS_IPT_MEMB == 1) THEN
1781 IPT_INPUT(CPT_H3D) = -4
1782 ELSE
1783 IPT_INPUT(CPT_H3D) = -1
1784 ENDIF
1785.AND. ELSEIF (IS_PLY_ALL == 0 PLY >= 1) THEN
1786 PLY_INPUT(CPT_H3D) = PLY
1787 IF (IS_IPT_ALL == 1) THEN
1788 IPT_INPUT(CPT_H3D) = L
1789.AND. ELSEIF (IS_IPT_ALL == 0 IPT >= 1) THEN
1790 IPT_INPUT(CPT_H3D) = IPT
1791 ELSEIF (IS_IPT_LOWER == 1) THEN
1792 IPT_INPUT(CPT_H3D) = -2
1793 ELSEIF (IS_IPT_UPPER == 1) THEN
1794 IPT_INPUT(CPT_H3D) = -3
1795 ELSEIF (IS_IPT_MEMB == 1) THEN
1796 IPT_INPUT(CPT_H3D) = -4
1797 ELSE
1798 IPT_INPUT(CPT_H3D) = -1
1799 ENDIF
1800 ENDIF
1801
1802 UVAR_INPUT(CPT_H3D) = -1
1803.AND. IF (NUVAR_MAX /= 0 IS_UVAR_ALL == 1) THEN
1804 UVAR_INPUT(CPT_H3D) = N
1805 ENDIF
1806.AND. IF (IS_UVAR_ALL == 0 IUVAR >= 1) UVAR_INPUT(CPT_H3D) = IUVAR
1807
1808 MDSVAR_INPUT(CPT_H3D) = -1
1809 MDSVAR_INPUT1(CPT_H3D) = -1
1810.AND..AND. IF (NMDSVAR_MAX /= 0 IS_MDSVAR_ALL == 1
1811.AND. . KEY3_GLOB(1:3) == 'MDS' MDS_NMAT /= 0) THEN
1812 MDSVAR_INPUT(CPT_H3D) = ((O-1) * MDS_NMAT /NMDSVAR_MAX)+1
1813 MDSVAR_INPUT1(CPT_H3D) = O-(MDSVAR_INPUT(CPT_H3D)-1)*NMDSVAR_MAX/MDS_NMAT
1814 MDSVAR_INPUT2(CPT_H3D) = ID_MAT_MDS(MDSVAR_INPUT(CPT_H3D))
1815 ENDIF
1816
1817.AND..AND. IF (IS_MDSVAR_ALL == 0 IS_MDSVAR_DEF == 0 IMDSVAR >= 1)THEN
1818 MDSVAR_INPUT(CPT_H3D) = MDSVAR_INPUT_TMP(O)
1819 MDSVAR_INPUT1(CPT_H3D) = MDSVAR_INPUT1_TMP(O)
1820 MDSVAR_INPUT2(CPT_H3D) = MDSVAR_INPUT2_TMP(O)
1821 ENDIF
1822
1823.AND..AND. IF (NMDSVAR_MAX /= 0 IS_MDSVAR_DEF == 1
1824.AND. . KEY3_GLOB(1:3) == 'MDS' MDS_NMAT /= 0) THEN
1825 MDSVAR_INPUT(CPT_H3D) = MDSVAR_INPUT_TMP(O)
1826 MDSVAR_INPUT1(CPT_H3D) = MDSVAR_INPUT1_TMP(O)
1827 MDSVAR_INPUT2(CPT_H3D) = MDSVAR_INPUT2_TMP(O)
1828 ENDIF
1829
1830 IDS_INPUT(CPT_H3D) = -1
1831 IF (IS_ID_ALL == 1) IDS_INPUT(CPT_H3D) = P
1832.AND. IF (IS_ID_ALL == 0 ID >= 1) IDS_INPUT(CPT_H3D) = ID
1833
1834
1835.AND. IF ((KEY3_GLOB(1:7) == 'FAILURE')(CPT_IRUP > 0)) THEN
1836 IF (IS_ID_ALL == 1) THEN
1837 IDS_INPUT(CPT_H3D) = IRUP_ID_ALL(P)
1838 IRUP_H3D(CPT_H3D) = P
1839 ELSE
1840 IRUP_H3D(CPT_H3D) = 1
1841 ENDIF
1842 ENDIF
1843
1844 MODES_INPUT(CPT_H3D) = -1
1845 IF (IS_MODE_ALL == 1) MODES_INPUT(CPT_H3D) = Q
1846.AND. IF (IS_MODE_ALL == 0 MODE >= 1) MODES_INPUT(CPT_H3D) = MODE
1847
1848 GAUSS_INPUT(CPT_H3D) = -1
1849
1850 IS_AVAILABLE_KEY(CPT_H3D) = 1
1851 IF( IS_PLY_ALL == 1) THEN
1852 IF (L > IPT_PLY(M) ) IS_AVAILABLE_KEY(CPT_H3D) = 0
1853 ENDIF
1854 IF(LAYER_INPUT(CPT_H3D) /= -1) ISH_NPT0=0
1855
1856.AND..AND. IF (IS_LAYER_ALL == 1 K > 0 MDSVAR_INPUT(CPT_H3D) > 0) THEN
1857 IF(IS_LAYER_MAT(INDEX_MAT_MDS(MDSVAR_INPUT(CPT_H3D)),K) == 0) THEN
1858 LAYER_INPUT(CPT_H3D) = -1
1859 IPT_INPUT(CPT_H3D) = -1
1860 IDS_INPUT(CPT_H3D) = -1
1861 PLY_INPUT(CPT_H3D) = -1
1862 UVAR_INPUT (CPT_H3D)= -1
1863 GAUSS_INPUT(CPT_H3D) = -1
1864 MDSVAR_INPUT(CPT_H3D)= -1
1865 MDSVAR_INPUT1(CPT_H3D)= -1
1866 MDSVAR_INPUT2(CPT_H3D)= -1
1867 MODES_INPUT(CPT_H3D)= -1
1868 IS_AVAILABLE_KEY(CPT_H3D) = 1
1869
1870 CPT_H3D = CPT_H3D - 1
1871 ENDIF
1872 ENDIF
1873
1874 ENDDO
1875 ENDDO
1876 ENDDO
1877 ENDDO
1878 ENDDO
1879 ENDDO
1880 ENDDO
1881
1882.AND. IF ((ISH_NPT0 == 1)(KEY3_GLOB(1:7) /= 'FAILURE')
1883.AND. . (KEY3_GLOB(1:4) /= 'DAMG')) THEN
1884 IF (IPT_INPUT(CPT_H3D)==1) IPT_INPUT(CPT_H3D)=-2
1885 CPT_H3D = CPT_H3D + 1
1886 LAYER_INPUT(CPT_H3D) = -1
1887 IPT_INPUT(CPT_H3D) = -3
1888 IDS_INPUT(CPT_H3D) = -1
1889 PLY_INPUT(CPT_H3D) = -1
1890 UVAR_INPUT(CPT_H3D) = -1
1891 GAUSS_INPUT(CPT_H3D) = -1
1892 IS_AVAILABLE_KEY(CPT_H3D) = 1
1893 MDSVAR_INPUT(CPT_H3D) = -1
1894 MDSVAR_INPUT1(CPT_H3D) = -1
1895 MDSVAR_INPUT2(CPT_H3D) = -1
1896 MODES_INPUT(CPT_H3D)= -1
1897 ENDIF
1898 ENDIF
1899
1900 ENDIF
1901
1902.AND..AND. ELSEIF(H3D_KEYWORD_SHELL%IS_LAYER == 0 IS_LAYER == 0
1903.AND..AND. . H3D_KEYWORD_SHELL%IS_IPT == 0 IS_IPT == 0
1904.AND..AND. . H3D_KEYWORD_SHELL%IS_PLY == 0 IS_PLY == 0
1905.AND..AND. . H3D_KEYWORD_SHELL%IS_UVAR == 0 IS_UVAR == 0
1906.AND..AND. . H3D_KEYWORD_SHELL%IS_MDSVAR == 0 IS_MDSVAR == 0
1907.AND..AND. . H3D_KEYWORD_SHELL%IS_ID == 0 IS_ID == 0
1908 . H3D_KEYWORD_SHELL%IS_MODE == 0 ) THEN
1909 CPT_H3D = CPT_H3D + 1
1910 LAYER_INPUT(CPT_H3D) = -1
1911 IPT_INPUT(CPT_H3D) = -1
1912 PLY_INPUT(CPT_H3D) = -1
1913 IDS_INPUT(CPT_H3D) = -1
1914 UVAR_INPUT (CPT_H3D)= -1
1915 MDSVAR_INPUT(CPT_H3D)= -1
1916 MDSVAR_INPUT1(CPT_H3D)= -1
1917 MDSVAR_INPUT2(CPT_H3D)= -1
1918 GAUSS_INPUT(CPT_H3D) = -1
1919 MODES_INPUT(CPT_H3D)= -1
1920 IS_AVAILABLE_KEY(CPT_H3D) = 1
1921 ENDIF
1922 ENDIF
1923
1924 DO K=1,CPT_H3D
1925
1926.AND. IF (IS_AVAILABLE_KEY(K) == 1 IS_SCALAR == 1) THEN
1927 IF (IS_MDSVAR ==1) MDS_LABEL_TMP = MDS_LABEL(MDSVAR_INPUT1(K), MDSVAR_INPUT(K))
1928
1929 IF (H3D_KEYWORD_SHELL_SCALAR(J)%IS_SKIN == 1 ) THEN
1930 CALL CREATE_H3D_SKIN_SCALAR(H3D_DATA,H3D_KEYWORD_SHELL_SCALAR(J)%ID,ID_INPUT,
1931 . TRIM(H3D_KEYWORD_SHELL_SCALAR(J)%TEXT1),LEN_TRIM(H3D_KEYWORD_SHELL_SCALAR(J)%TEXT1),
1932 . H3D_KEYWORD_SHELL_SCALAR(J)%COMMENT,80,IPART,KEY3_GLOB,
1933 . LAYER_INPUT(K),IR_INPUT(K),IS_INPUT(K),IT_INPUT(K),
1934 . UVAR_INPUT(K),IGRPART)
1935 IS_SKING = 1
1936 ELSE
1937
1938 ! ---------------------------------------------------------------------------------------------
1939 ! /H3D/ELEM/FAILURE Specific output name
1940 ! ---------------------------------------------------------------------------------------------
1941.AND. IF ((KEY3_GLOB(1:7) == 'FAILURE')(CPT_IRUP > 0)) THEN
1942 TEST_CHAIN = ''
1943 IF (CPT_MOD > 0) THEN
1944 WRITE(TEST_CHAIN,'(A,A,A,A)') "failure:",TRIM(FAIL_NAME(IRUP_H3D(K))),"; ",
1945 . TRIM(MODNAME(IRUP_H3D(K),MODES_INPUT(K)))
1946 ELSE
1947 WRITE(TEST_CHAIN,'(A,A,A)') "failure:",TRIM(FAIL_NAME(IRUP_H3D(K))),"; failure index"
1948 ENDIF
1949 H3D_KEYWORD_SHELL_SCALAR(J)%TEXT1 = TEST_CHAIN
1950 ENDIF
1951
1952 ! ---------------------------------------------------------------------------------------------
1953 ! /H3D/ELEM/DAMG Specific output name
1954 ! ---------------------------------------------------------------------------------------------
1955.AND. IF ((KEY3_GLOB(1:4) == 'DAMG')(CPT_MOD > 0)) THEN
1956 TEST_CHAIN = ''
1957 WRITE(TEST_CHAIN,'(A,I3,A,A)') "damage",MLW,"; ",TRIM(MODNAME(1,MODES_INPUT(K)))
1958 H3D_KEYWORD_SHELL_SCALAR(J)%TEXT1 = TEST_CHAIN
1959.AND. ELSEIF ((KEY3_GLOB(1:4) == 'DAMG')(CPT_LAWID > 0)) THEN
1960 TEST_CHAIN = ''
1961 WRITE(TEST_CHAIN,'(A,I3,A)') "damage: law",MLW,"; damage"
1962 H3D_KEYWORD_SHELL_SCALAR(J)%TEXT1 = TEST_CHAIN
1963.AND..AND. ELSEIF ((KEY3_GLOB(1:4) == 'DAMG')(CPT_MOD == 0)(CPT_LAWID == 0)) THEN
1964 H3D_KEYWORD_SHELL_SCALAR(J)%TEXT1 = "damage:damage index"
1965 ENDIF
1966
1967 CALL CREATE_H3D_SHELL_SCALAR(H3D_DATA,H3D_KEYWORD_SHELL_SCALAR(J)%ID,N1,N2,ID_INPUT,
1968 . TRIM(H3D_KEYWORD_SHELL_SCALAR(J)%TEXT1),LEN_TRIM(H3D_KEYWORD_SHELL_SCALAR(J)%TEXT1),
1969 . H3D_KEYWORD_SHELL_SCALAR(J)%COMMENT,80,IPART,KEY3_GLOB,
1970 . LAYER_INPUT(K),IPT_INPUT(K),PLY_INPUT(K),GAUSS_INPUT(K),UVAR_INPUT(K),
1971 . MDSVAR_INPUT(K),MDSVAR_INPUT1(K),MDSVAR_INPUT2(K),
1972 . MDS_LABEL_TMP,30,IDS_INPUT(K),MODES_INPUT(K),IGRPART)
1973 END IF
1974 IOK_H3DKEY = 1
1975.AND. ELSEIF (IS_AVAILABLE_KEY(K) == 1 IS_VECTOR == 1) THEN
1976 IF (H3D_KEYWORD_SHELL_VECTOR(J)%IS_SKIN == 1 ) THEN
1977 CALL CREATE_H3D_SKIN_VECTOR(H3D_DATA,H3D_KEYWORD_SHELL_VECTOR(J)%ID,ID_INPUT,
1978 . TRIM(H3D_KEYWORD_SHELL_VECTOR(J)%TEXT1),
1979 . LEN_TRIM(H3D_KEYWORD_SHELL_VECTOR(J)%TEXT1),
1980 . H3D_KEYWORD_SHELL_VECTOR(J)%COMMENT,80,IPART,KEY3_GLOB,
1981 . LAYER_INPUT(K),IR_INPUT(K),IS_INPUT(K),IT_INPUT(K),
1982 . UVAR_INPUT(K),IGRPART )
1983 IS_SKING = 1
1984 ELSE
1985 CALL CREATE_H3D_SHELL_VECTOR(H3D_DATA,H3D_KEYWORD_SHELL_VECTOR(J)%ID,N1,N2,ID_INPUT,
1986 . TRIM(H3D_KEYWORD_SHELL_VECTOR(J)%TEXT1),LEN_TRIM(H3D_KEYWORD_SHELL_VECTOR(J)%TEXT1),
1987 . H3D_KEYWORD_SHELL_VECTOR(J)%COMMENT,80,IPART,KEY3_GLOB,
1988 . LAYER_INPUT(K),IPT_INPUT(K),PLY_INPUT(K),GAUSS_INPUT(K),UVAR_INPUT(K),IGRPART)
1989 END IF
1990 IOK_H3DKEY = 1
1991
1992.AND. ELSEIF (IS_AVAILABLE_KEY(K) == 1 IS_TENSOR == 1) THEN
1993 CALL CREATE_H3D_SHELL_TENSOR(H3D_DATA,ID_INPUT,TRIM(H3D_KEYWORD_SHELL_TENSOR(J)%TEXT1),
1994 . LEN_TRIM(H3D_KEYWORD_SHELL_TENSOR(J)%TEXT1),
1995 . H3D_KEYWORD_SHELL_TENSOR(J)%COMMENT,80,IPART,KEY3_GLOB,
1996 . LAYER_INPUT(K),IPT_INPUT(K),PLY_INPUT(K),GAUSS_INPUT(K),
1997 . UVAR_INPUT(K),IDS_INPUT(K),IGRPART)
1998 IOK_H3DKEY = 1
1999 ENDIF
2000 ENDDO
2001
2002 ENDDO
2003 ENDIF
2004
2005.OR..OR. IF(KEY2 == 'SOLID' KEY2 == 'BRICK' KEY2 =='ELEM') THEN
2006
2007 JMAX=MAX(H3D_NUM_KEY%SOLID_SCALAR, H3D_NUM_KEY%SOLID_VECTOR, H3D_NUM_KEY%SOLID_TENSOR)
2008 DO J=1,JMAX
2009 CPT_H3D = 0
2010 IS_SCALAR = 0
2011 IS_VECTOR = 0
2012 IS_TENSOR = 0
2013 IF ( KEY3_GLOB == H3D_KEYWORD_SOLID_SCALAR(J)%KEY3) IS_SCALAR = 1
2014 IF ( KEY3_GLOB == H3D_KEYWORD_SOLID_VECTOR(J)%KEY3) IS_VECTOR = 1
2015 IF ( KEY3_GLOB == H3D_KEYWORD_SOLID_TENSOR(J)%KEY3) IS_TENSOR = 1
2016
2017 IS_CORNER_DATA = H3D_KEYWORD_SOLID_TENSOR(J)%IS_CORNER_DATA
2018
2019.OR..OR. IF ( IS_SCALAR == 1 IS_VECTOR == 1 IS_TENSOR == 1 ) THEN
2020
2021 IF(IS_SCALAR == 1) H3D_KEYWORD_SOLID = H3D_KEYWORD_SOLID_SCALAR(J)
2022 IF(IS_VECTOR == 1) H3D_KEYWORD_SOLID = H3D_KEYWORD_SOLID_VECTOR(J)
2023 IF(IS_TENSOR == 1) H3D_KEYWORD_SOLID = H3D_KEYWORD_SOLID_TENSOR(J)
2024
2025.OR. IF(H3D_KEYWORD_SOLID%IS_LAYER /= 0
2026.OR. . H3D_KEYWORD_SOLID%IS_IR /= 0
2027.OR. . H3D_KEYWORD_SOLID%IS_IS /= 0
2028.OR. . H3D_KEYWORD_SOLID%IS_IT /= 0
2029.OR. . H3D_KEYWORD_SOLID%IS_UVAR /= 0
2030.OR. . H3D_KEYWORD_SOLID%IS_MDSVAR /= 0
2031.OR. . H3D_KEYWORD_SOLID%IS_ID /= 0
2032 . H3D_KEYWORD_SOLID%IS_MODE /= 0) THEN
2033
2034.AND..AND..AND. IF(IS_LAYER_ALL == 0 IS_IR_ALL == 0 IS_IS_ALL == 0
2035.AND..AND..AND. . IS_IT_ALL == 0 IS_UVAR_ALL == 0 IS_MDSVAR_ALL == 0
2036.AND..AND. . IS_MDSVAR_DEF ==0 IS_ID_ALL == 0 IS_MODE_ALL == 0)THEN
2037
2038 CPT_H3D = CPT_H3D + 1
2039 LAYER_INPUT(CPT_H3D) = -1
2040 UVAR_INPUT (CPT_H3D)= -1
2041 MDSVAR_INPUT(CPT_H3D)= -1
2042 MDSVAR_INPUT1(CPT_H3D)= -1
2043 MDSVAR_INPUT2(CPT_H3D)= -1
2044 IR_INPUT(CPT_H3D) = -1
2045 IS_INPUT(CPT_H3D) = -1
2046 IT_INPUT(CPT_H3D) = -1
2047 IDS_INPUT(CPT_H3D) = -1
2048 GAUSS_INPUT(CPT_H3D) = -1
2049 IS_AVAILABLE_KEY(CPT_H3D) = 1
2050 MODES_INPUT(CPT_H3D) = -1
2051
2052 IF(H3D_KEYWORD_SOLID%IS_LAYER == 1) THEN
2053 IF(LAYER /= 0) LAYER_INPUT(CPT_H3D) = LAYER
2054 IF(IS_LAYER_LOWER == 1) LAYER_INPUT(CPT_H3D) = -2
2055 IF(IS_LAYER_UPPER == 1) LAYER_INPUT(CPT_H3D) = -3
2056 ENDIF
2057
2058 IF(H3D_KEYWORD_SOLID%IS_IPT == 1) THEN
2059 IF(IPT /= 0) IPT_INPUT(CPT_H3D) = IPT
2060 IF(IS_IPT_LOWER == 1) IPT_INPUT(CPT_H3D) = -2
2061 IF(IS_IPT_UPPER == 1) IPT_INPUT(CPT_H3D) = -3
2062 IF(IS_IPT_MEMB == 1) IPT_INPUT(CPT_H3D) = -4
2063 ENDIF
2064
2065 IF(H3D_KEYWORD_SOLID%IS_UVAR == 1) THEN
2066 IF(IUVAR /= 0) UVAR_INPUT(CPT_H3D) = IUVAR
2067 ENDIF
2068
2069 IF(H3D_KEYWORD_SOLID%IS_MDSVAR == 1) THEN
2070 IF(IMDSVAR /= 0) THEN
2071 MDSVAR_INPUT(CPT_H3D) = ((IMDSVAR-1) * MDS_NMAT /NMDSVAR_MAX)+1
2072 MDSVAR_INPUT1(CPT_H3D) = IMDSVAR-(MDSVAR_INPUT(CPT_H3D)-1)*NMDSVAR_MAX/MDS_NMAT
2073 MDSVAR_INPUT2(CPT_H3D) = ID_MAT_MDS(MDSVAR_INPUT(CPT_H3D))
2074 ENDIF
2075 ENDIF
2076
2077 IF(H3D_KEYWORD_SOLID%IS_IR == 1) THEN
2078 IF(IR /= 0) IR_INPUT(CPT_H3D) = IR
2079 ENDIF
2080
2081 IF(H3D_KEYWORD_SOLID%IS_IS == 1) THEN
2082 IF(IS /= 0) IS_INPUT(CPT_H3D) = IS
2083 ENDIF
2084
2085 IF(H3D_KEYWORD_SOLID%IS_IT == 1) THEN
2086 IF(IT /= 0) IT_INPUT(CPT_H3D) = IT
2087 ENDIF
2088
2089 IF(H3D_KEYWORD_SOLID%IS_ID == 1) THEN
2090 IF(ID /= 0) IDS_INPUT(CPT_H3D) = ID
2091.AND. IF ((KEY3_GLOB(1:7) == 'FAILURE')(CPT_IRUP > 0)) THEN
2092 IRUP_H3D(CPT_H3D) = 1
2093 ENDIF
2094 ENDIF
2095
2096 IF(H3D_KEYWORD_SOLID%IS_MODE == 1) THEN
2097 IF(MODE /= 0) MODES_INPUT(CPT_H3D) = MODE
2098 ENDIF
2099
2100 ELSE
2101
2102 IF(NLAY_MAX + IR_MAX + IS_MAX + IT_MAX + NUVAR_MAX + NMDSVAR_MAX + ID_MAX + MODE_MAX /= 0)THEN
2103 DO K=1,MAX(1,IS_LAYER_ALL*MAX(NLAY_MAX,1))
2104 DO L=1,MAX(1,IS_UVAR_ALL*MAX(NUVAR_MAX,1))
2105 DO M=1,MAX(1,IS_IR_ALL*MAX(IR_MAX,1))
2106 DO N=1,MAX(1,IS_IS_ALL*MAX(IS_MAX,1))
2107 DO O=1,MAX(1,IS_IT_ALL*MAX(IT_MAX,1))
2108 DO P=1,MAX(1,MAX(IS_MDSVAR_ALL,IS_MDSVAR_DEF)*MAX(NMDSVAR_MAX,1))
2109 DO Q=1,MAX(1,IS_ID_ALL*MAX(ID_MAX,1))
2110 DO R=1,MAX(1,IS_MODE_ALL*MAX(MODE_MAX,1))
2111 CPT_H3D = CPT_H3D + 1
2112
2113 LAYER_INPUT(CPT_H3D) = -1
2114.AND. IF (NLAY_MAX /= 0 IS_LAYER_ALL == 1) LAYER_INPUT(CPT_H3D) = K
2115
2116 UVAR_INPUT(CPT_H3D) = -1
2117.AND. IF(H3D_KEYWORD_SOLID%IS_UVAR == 1 IUVAR > 0) UVAR_INPUT(CPT_H3D) = IUVAR
2118.AND. IF (NUVAR_MAX /= 0 IS_UVAR_ALL == 1) UVAR_INPUT(CPT_H3D) = L
2119
2120 MDSVAR_INPUT(CPT_H3D) = -1
2121 MDSVAR_INPUT1(CPT_H3D) = -1
2122 MDSVAR_INPUT2(CPT_H3D) = -1
2123.AND..AND. IF (NMDSVAR_MAX /= 0 IS_MDSVAR_ALL == 1
2124.AND. . KEY3_GLOB(1:3) == 'MDS' MDS_NMAT /= 0) THEN
2125 MDSVAR_INPUT(CPT_H3D) = MDSVAR_INPUT_TMP(P)
2126 MDSVAR_INPUT1(CPT_H3D) = MDSVAR_INPUT1_TMP(P)
2127 MDSVAR_INPUT2(CPT_H3D) = MDSVAR_INPUT2_TMP(P)
2128 ENDIF
2129
2130.AND. IF (IS_MDSVAR_ALL == 0 IMDSVAR >= 1) MDSVAR_INPUT(CPT_H3D) = IMDSVAR
2131
2132
2133.AND..AND. IF (NMDSVAR_MAX /= 0 IS_MDSVAR_DEF == 1
2134.AND. . KEY3_GLOB(1:3) == 'MDS' MDS_NMAT /= 0) THEN
2135 MDSVAR_INPUT(CPT_H3D) = MDSVAR_INPUT_TMP(P)
2136 MDSVAR_INPUT1(CPT_H3D) = MDSVAR_INPUT1_TMP(P)
2137 MDSVAR_INPUT2(CPT_H3D) = MDSVAR_INPUT2_TMP(P)
2138 ENDIF
2139
2140 IR_INPUT(CPT_H3D) = -1
2141.AND. IF(H3D_KEYWORD_SOLID%IS_IR == 1 IR > 0) IR_INPUT(CPT_H3D) = IR
2142.AND. IF (IR_MAX /= 0 IS_IR_ALL == 1) IR_INPUT(CPT_H3D) = M
2143
2144 IS_INPUT(CPT_H3D) = -1
2145.AND. IF(H3D_KEYWORD_SOLID%IS_IS == 1 IS > 0) IS_INPUT(CPT_H3D) = IS
2146.AND. IF (IS_MAX /= 0 IS_IS_ALL == 1) IS_INPUT(CPT_H3D) = N
2147
2148 IT_INPUT(CPT_H3D) = -1
2149.AND. IF(H3D_KEYWORD_SOLID%IS_IT == 1 IT > 0) IT_INPUT(CPT_H3D) = IT
2150.AND. IF (IT_MAX /= 0 IS_IT_ALL == 1) IT_INPUT(CPT_H3D) = O
2151
2152 IDS_INPUT(CPT_H3D) = -1
2153 IF (IS_ID_ALL == 1) IDS_INPUT(CPT_H3D) = Q
2154.AND. IF (IS_ID_ALL == 0 ID >= 1) IDS_INPUT(CPT_H3D) = ID
2155
2156 MODES_INPUT(CPT_H3D) = -1
2157 IF (IS_MODE_ALL == 1) MODES_INPUT(CPT_H3D) = R
2158.AND. IF (IS_MODE_ALL == 0 MODE >= 1) MODES_INPUT(CPT_H3D) = MODE
2159
2160.AND. IF ((KEY3_GLOB(1:7) == 'FAILURE')(CPT_IRUP > 0)) THEN
2161 IF (IS_ID_ALL == 1) THEN
2162 IDS_INPUT(CPT_H3D) = IRUP_ID_ALL(Q)
2163 IRUP_H3D(CPT_H3D) = Q
2164 ELSE
2165 IRUP_H3D(CPT_H3D) = 1
2166 ENDIF
2167 ENDIF
2168 GAUSS_INPUT(CPT_H3D) = -1
2169
2170 IS_AVAILABLE_KEY(CPT_H3D) = 1
2171
2172 ENDDO
2173 ENDDO
2174 ENDDO
2175 ENDDO
2176 ENDDO
2177 ENDDO
2178 ENDDO
2179 ENDDO
2180 ENDIF
2181 ENDIF
2182
2183.AND..AND. ELSEIF(H3D_KEYWORD_SOLID%IS_LAYER == 0 IS_LAYER == 0
2184.AND..AND. . H3D_KEYWORD_SOLID%IS_IR == 0 IS_IR == 0
2185.AND..AND. . H3D_KEYWORD_SOLID%IS_IS == 0 IS_IS == 0
2186.AND..AND. . H3D_KEYWORD_SOLID%IS_IT == 0 IS_IT == 0
2187.AND..AND. . H3D_KEYWORD_SOLID%IS_UVAR == 0 IS_UVAR == 0
2188.AND..AND. . H3D_KEYWORD_SOLID%IS_MDSVAR == 0 IS_MDSVAR == 0
2189.AND..AND. . H3D_KEYWORD_SOLID%IS_ID == 0 IS_ID == 0
2190 . H3D_KEYWORD_SOLID%IS_MODE == 0 ) THEN
2191 CPT_H3D = CPT_H3D + 1
2192 LAYER_INPUT(CPT_H3D) = -1
2193 UVAR_INPUT (CPT_H3D)= -1
2194 MDSVAR_INPUT(CPT_H3D)= -1
2195 MDSVAR_INPUT1(CPT_H3D)= -1
2196 MDSVAR_INPUT2(CPT_H3D)= -1
2197 GAUSS_INPUT(CPT_H3D) = -1
2198 IR_INPUT(CPT_H3D) = -1
2199 IS_INPUT(CPT_H3D) = -1
2200 IT_INPUT(CPT_H3D) = -1
2201 IDS_INPUT(CPT_H3D) = -1
2202 MODES_INPUT(CPT_H3D) = -1
2203 IS_AVAILABLE_KEY(CPT_H3D) = 1
2204 ENDIF
2205 ENDIF
2206
2207 DO K=1,CPT_H3D
2208.AND. IF (IS_AVAILABLE_KEY(K) == 1 IS_SCALAR == 1) THEN
2209 IF (H3D_KEYWORD_SOLID_SCALAR(J)%IS_SKIN == 1 ) THEN
2210 CALL CREATE_H3D_SKIN_SCALAR(H3D_DATA,H3D_KEYWORD_SOLID_SCALAR(J)%ID,ID_INPUT,
2211 . TRIM(H3D_KEYWORD_SOLID_SCALAR(J)%TEXT1),LEN_TRIM(H3D_KEYWORD_SOLID_SCALAR(J)%TEXT1),
2212 . H3D_KEYWORD_SOLID_SCALAR(J)%COMMENT,80,IPART,KEY3_GLOB,
2213 . LAYER_INPUT(K),IR_INPUT(K),IS_INPUT(K),IT_INPUT(K),
2214 . UVAR_INPUT(K),IGRPART)
2215 IS_SKING = 1
2216 ELSE
2217 IF (IS_MDSVAR ==1) MDS_LABEL_TMP = MDS_LABEL(MDSVAR_INPUT1(K), MDSVAR_INPUT(K))
2218
2219 ! ---------------------------------------------------------------------------------------------
2220 ! /H3D/ELEM/FAILURE Specific output name
2221 ! ---------------------------------------------------------------------------------------------
2222.AND. IF ((KEY3_GLOB(1:7) == 'FAILURE')(CPT_IRUP > 0)) THEN
2223 TEST_CHAIN = ''
2224 IF (CPT_MOD > 0) THEN
2225 WRITE(TEST_CHAIN,'(A,A,A,A)') "failure:",TRIM(FAIL_NAME(IRUP_H3D(K))),"; ",
2226 . TRIM(MODNAME(IRUP_H3D(K),MODES_INPUT(K)))
2227 ELSE
2228 WRITE(TEST_CHAIN,'(A,A,A)') "failure:",TRIM(FAIL_NAME(IRUP_H3D(K))),"; failure index"
2229 ENDIF
2230 H3D_KEYWORD_SOLID_SCALAR(J)%TEXT1 = TEST_CHAIN
2231 ENDIF
2232
2233 ! ---------------------------------------------------------------------------------------------
2234 ! /H3D/ELEM/DAMG Specific output name
2235 ! ---------------------------------------------------------------------------------------------
2236.AND. IF ((KEY3_GLOB(1:4) == 'DAMG')(CPT_MOD > 0)) THEN
2237 TEST_CHAIN = ''
2238 WRITE(TEST_CHAIN,'(A,I3,A,A)') "damage: law",MLW,"; ",TRIM(MODNAME(1,MODES_INPUT(K)))
2239 H3D_KEYWORD_SOLID_SCALAR(J)%TEXT1 = TEST_CHAIN
2240.AND. ELSEIF ((KEY3_GLOB(1:4) == 'DAMG')(CPT_LAWID > 0)) THEN
2241 TEST_CHAIN = ''
2242 WRITE(TEST_CHAIN,'(A,I3,A)') "damage: law",MLW,"; damage index"
2243 H3D_KEYWORD_SOLID_SCALAR(J)%TEXT1 = TEST_CHAIN
2244.AND..AND. ELSEIF ((KEY3_GLOB(1:4) == 'DAMG')(CPT_MOD == 0)(CPT_LAWID == 0)) THEN
2245 H3D_KEYWORD_SOLID_SCALAR(J)%TEXT1 = "damage:damage index"
2246 ENDIF
2247
2248 CALL CREATE_H3D_SOLID_SCALAR(H3D_DATA,H3D_KEYWORD_SOLID_SCALAR(J)%ID,ID_INPUT,
2249 . TRIM(H3D_KEYWORD_SOLID_SCALAR(J)%TEXT1),LEN_TRIM(H3D_KEYWORD_SOLID_SCALAR(J)%TEXT1),
2250 . H3D_KEYWORD_SOLID_SCALAR(J)%COMMENT,80,IPART,KEY3_GLOB,
2251 . LAYER_INPUT(K),IR_INPUT(K),IS_INPUT(K),IT_INPUT(K),
2252 . UVAR_INPUT(K),MDSVAR_INPUT(K),MDSVAR_INPUT1(K),
2253 . MDSVAR_INPUT2(K),MDS_LABEL_TMP,30,IDS_INPUT(K),MODES_INPUT(K),IGRPART)
2254 END IF
2255 IOK_H3DKEY = 1
2256.AND. ELSEIF (IS_AVAILABLE_KEY(K) == 1 IS_VECTOR == 1) THEN
2257 IF (H3D_KEYWORD_SOLID_VECTOR(J)%IS_SKIN == 1 ) THEN
2258 CALL CREATE_H3D_SKIN_VECTOR(H3D_DATA,H3D_KEYWORD_SOLID_VECTOR(J)%ID,ID_INPUT,
2259 . TRIM(H3D_KEYWORD_SOLID_VECTOR(J)%TEXT1),
2260 . LEN_TRIM(H3D_KEYWORD_SOLID_VECTOR(J)%TEXT1),
2261 . H3D_KEYWORD_SOLID_VECTOR(J)%COMMENT,80,IPART,KEY3_GLOB,
2262 . LAYER_INPUT(K),IR_INPUT(K),IS_INPUT(K),IT_INPUT(K),
2263 . UVAR_INPUT(K) ,IGRPART)
2264 IS_SKING = 1
2265 ELSE
2266 CALL CREATE_H3D_SOLID_VECTOR(H3D_DATA,H3D_KEYWORD_SOLID_VECTOR(J)%ID,ID_INPUT,
2267 . TRIM(H3D_KEYWORD_SOLID_VECTOR(J)%TEXT1),LEN_TRIM(H3D_KEYWORD_SOLID_VECTOR(J)%TEXT1),
2268 . H3D_KEYWORD_SOLID_VECTOR(J)%COMMENT,80,IPART,KEY3_GLOB,
2269 . LAYER_INPUT(K),IR_INPUT(K),IS_INPUT(K),IT_INPUT(K),
2270 . UVAR_INPUT(K),IGRPART)
2271 END IF
2272 IOK_H3DKEY = 1
2273.AND. ELSEIF (IS_AVAILABLE_KEY(K) == 1 IS_TENSOR == 1) THEN
2274 IF (H3D_KEYWORD_SOLID_TENSOR(J)%IS_SKIN == 1 ) THEN
2275 CALL CREATE_H3D_SKIN_TENSOR(H3D_DATA,H3D_KEYWORD_SOLID_TENSOR(J)%ID,ID_INPUT,
2276 . TRIM(H3D_KEYWORD_SOLID_TENSOR(J)%TEXT1),
2277 . LEN_TRIM(H3D_KEYWORD_SOLID_TENSOR(J)%TEXT1),
2278 . H3D_KEYWORD_SOLID_TENSOR(J)%COMMENT,80,IPART,KEY3_GLOB,
2279 . LAYER_INPUT(K),IR_INPUT(K),IS_INPUT(K),IT_INPUT(K),
2280 . UVAR_INPUT(K),IGRPART)
2281 IS_SKING = 1
2282 ELSE
2283 CALL CREATE_H3D_SOLID_TENSOR(H3D_DATA,H3D_KEYWORD_SOLID_TENSOR(J)%ID,ID_INPUT,
2284 . TRIM(H3D_KEYWORD_SOLID_TENSOR(J)%TEXT1),LEN_TRIM(H3D_KEYWORD_SOLID_TENSOR(J)%TEXT1),
2285 . H3D_KEYWORD_SOLID_TENSOR(J)%COMMENT,80,IPART,KEY3_GLOB,
2286 . LAYER_INPUT(K),IR_INPUT(K),IS_INPUT(K),IT_INPUT(K),
2287 . UVAR_INPUT(K) ,IS_CORNER_DATA,IDS_INPUT(K),IGRPART)
2288 END IF
2289 IOK_H3DKEY = 1
2290
2291 ENDIF
2292 ENDDO
2293 ENDDO
2294 ENDIF
2295
2296.OR. IF(KEY2 == 'SPH' KEY2 =='ELEM') THEN
2297
2298 JMAX=MAX(H3D_NUM_KEY%SPH_SCALAR, H3D_NUM_KEY%SPH_TENSOR)
2299 DO J=1,JMAX
2300 CPT_H3D = 0
2301.OR. IF (H3D_KEYWORD_SPH_SCALAR(J)%IS_ID /= 0
2302 . H3D_KEYWORD_SPH_SCALAR(J)%IS_MODE /= 0) THEN
2303.AND. IF (IS_ID_ALL == 0 IS_MODE_ALL ==0) THEN
2304 CPT_H3D = CPT_H3D + 1
2305
2306 IDS_INPUT(CPT_H3D) = -1
2307 IF (H3D_KEYWORD_SPH_SCALAR(J)%IS_ID == 1) THEN
2308 IF (ID /= 0) IDS_INPUT(CPT_H3D) = ID
2309.AND. IF ((KEY3_GLOB(1:7) == 'FAILURE')(CPT_IRUP > 0)) THEN
2310 IRUP_H3D(CPT_H3D) = 1
2311 ENDIF
2312 ENDIF
2313
2314 MODES_INPUT(CPT_H3D) = -1
2315 IF(H3D_KEYWORD_SPH_SCALAR(J)%IS_MODE == 1) THEN
2316 IF(MODE /= 0) MODES_INPUT(CPT_H3D) = MODE
2317 ENDIF
2318
2319 ELSE
2320
2321 IF ((ID_MAX + MODE_MAX /=0)) THEN
2322 DO Q=1,MAX(1,IS_ID_ALL*MAX(ID_MAX,1))
2323 DO R=1,MAX(1,IS_MODE_ALL*MAX(MODE_MAX,1))
2324 CPT_H3D = CPT_H3D + 1
2325 IDS_INPUT(CPT_H3D) = -1
2326
2327 IF (IS_ID_ALL == 1) IDS_INPUT(CPT_H3D) = Q
2328.AND. IF (IS_ID_ALL == 0 ID >= 1) IDS_INPUT(CPT_H3D) = ID
2329.AND. IF ((KEY3_GLOB(1:7) == 'FAILURE')(CPT_IRUP > 0)) THEN
2330 IF (IS_ID_ALL == 1) THEN
2331 IDS_INPUT(CPT_H3D) = IRUP_ID_ALL(Q)
2332 IRUP_H3D(CPT_H3D) = Q
2333 ELSE
2334 IRUP_H3D(CPT_H3D) = 1
2335 ENDIF
2336 ENDIF
2337
2338 MODES_INPUT(CPT_H3D)= -1
2339 IF (IS_MODE_ALL == 1) MODES_INPUT(CPT_H3D) = R
2340.AND. IF (IS_MODE_ALL == 0 MODE >= 1) MODES_INPUT(CPT_H3D) = MODE
2341
2342 ENDDO
2343 ENDDO
2344 ENDIF
2345 ENDIF
2346.AND..AND. ELSEIF(H3D_KEYWORD_SPH_SCALAR(J)%IS_ID == 0 IS_ID == 0
2347 . H3D_KEYWORD_SPH_SCALAR(J)%IS_MODE == 0) THEN
2348 CPT_H3D = CPT_H3D + 1
2349 IDS_INPUT(CPT_H3D) = -1
2350 MODES_INPUT(CPT_H3D)= -1
2351 ENDIF
2352
2353 IF ( KEY3_GLOB == H3D_KEYWORD_SPH_SCALAR(J)%KEY3 )THEN
2354
2355 ! ---------------------------------------------------------------------------------------------
2356 ! /H3D/ELEM/FAILURE Specific output name
2357 ! ---------------------------------------------------------------------------------------------
2358.AND. IF((KEY3_GLOB(1:7) == 'FAILURE')(CPT_IRUP > 0)) THEN
2359 DO K=1,CPT_H3D
2360 TEST_CHAIN = ''
2361 IF (CPT_MOD > 0) THEN
2362 WRITE(TEST_CHAIN,'(A,A,A,A)') "failure:",TRIM(FAIL_NAME(IRUP_H3D(K))),"; ",
2363 . TRIM(MODNAME(IRUP_H3D(K),MODES_INPUT(K)))
2364 ELSE
2365 WRITE(TEST_CHAIN,'(A,A,A)') "failure:",TRIM(FAIL_NAME(IRUP_H3D(K))),"; failure index"
2366 ENDIF
2367 H3D_KEYWORD_SPH_SCALAR(J)%TEXT1 = TEST_CHAIN
2368 CALL CREATE_H3D_SPH_SCALAR(H3D_DATA,H3D_KEYWORD_SPH_SCALAR(J)%ID,ID_INPUT,
2369 . TRIM(H3D_KEYWORD_SPH_SCALAR(J)%TEXT1),LEN_TRIM(H3D_KEYWORD_SPH_SCALAR(J)%TEXT1),
2370 . H3D_KEYWORD_SPH_SCALAR(J)%COMMENT,80,IPART,KEY3_GLOB,
2371 . IUVAR,IDS_INPUT(K),MODES_INPUT(K),IGRPART)
2372 ENDDO
2373 ELSE
2374 CALL CREATE_H3D_SPH_SCALAR(H3D_DATA,H3D_KEYWORD_SPH_SCALAR(J)%ID,ID_INPUT,
2375 . TRIM(H3D_KEYWORD_SPH_SCALAR(J)%TEXT1),LEN_TRIM(H3D_KEYWORD_SPH_SCALAR(J)%TEXT1),
2376 . H3D_KEYWORD_SPH_SCALAR(J)%COMMENT,80,IPART,KEY3_GLOB,
2377 . IUVAR,IDS_INPUT(1),MODES_INPUT(1),IGRPART)
2378 ENDIF
2379 IOK_H3DKEY = 1
2380 ENDIF
2381
2382 IF ( KEY3_GLOB == H3D_KEYWORD_SPH_TENSOR(J)%KEY3 )THEN
2383
2384 CALL CREATE_H3D_SPH_TENSOR(H3D_DATA,H3D_KEYWORD_SPH_TENSOR(J)%ID,ID_INPUT,
2385 . TRIM(H3D_KEYWORD_SPH_TENSOR(J)%TEXT1),LEN_TRIM(H3D_KEYWORD_SPH_TENSOR(J)%TEXT1),
2386 . H3D_KEYWORD_SPH_TENSOR(J)%COMMENT,80,IPART,KEY3_GLOB,IGRPART)
2387 IOK_H3DKEY = 1
2388 ENDIF
2389 ENDDO
2390 ENDIF
2391
2392.OR..OR..OR. IF(KEY2 == 'BEAM' KEY2 == 'SPRING' KEY2 == 'TRUSS' KEY2 =='ELEM') THEN
2393
2394 JMAX=MAX(H3D_NUM_KEY%ONED_SCALAR, H3D_NUM_KEY%ONED_VECTOR, H3D_NUM_KEY%ONED_TENSOR,
2395 . H3D_NUM_KEY%ONED_TORSOR)
2396 DO J=1,JMAX
2397 CPT_H3D = 0
2398 IS_SCALAR = 0
2399 IS_VECTOR = 0
2400 IS_TENSOR = 0
2401 IS_TORSOR = 0
2402 IF ( KEY3_GLOB == H3D_KEYWORD_ONED_SCALAR(J)%KEY3 ) IS_SCALAR = 1
2403 IF ( KEY3_GLOB == H3D_KEYWORD_ONED_VECTOR(J)%KEY3 ) IS_VECTOR = 1
2404 IF ( KEY3_GLOB == H3D_KEYWORD_ONED_TENSOR(J)%KEY3 ) IS_TENSOR = 1
2405 IF ( KEY3_GLOB == H3D_KEYWORD_ONED_TORSOR(J)%KEY3 ) IS_TORSOR = 1
2406
2407
2408.OR..OR..OR. IF ( IS_SCALAR == 1 IS_VECTOR == 1 IS_TENSOR == 1 IS_TORSOR == 1 ) THEN
2409
2410 IF (IS_SCALAR == 1 ) H3D_KEYWORD_ONED = H3D_KEYWORD_ONED_SCALAR(J)
2411 IF (IS_VECTOR == 1 ) H3D_KEYWORD_ONED = H3D_KEYWORD_ONED_VECTOR(J)
2412 IF (IS_TENSOR == 1 ) H3D_KEYWORD_ONED = H3D_KEYWORD_ONED_TENSOR(J)
2413 IF (IS_TORSOR == 1 ) H3D_KEYWORD_ONED = H3D_KEYWORD_ONED_TORSOR(J)
2414
2415 IF ( H3D_KEYWORD_ONED%IS_IPT /= 0 ) THEN
2416
2417 IF ( IS_IPT_ALL == 0 ) THEN
2418 CPT_H3D = CPT_H3D + 1
2419 IPT_INPUT(CPT_H3D) = -1
2420 IS_AVAILABLE_KEY(CPT_H3D) = 1
2421 IF ( H3D_KEYWORD_ONED%IS_IPT == 1 ) THEN
2422 IF ( IPT /= 0 ) IPT_INPUT(CPT_H3D) = IPT
2423 ENDIF
2424 ELSE ! IF ( IS_IPT_ALL == 0 )
2425 IF ( NIP_MAX /= 0 ) THEN
2426 DO L=1,MAX(1,IS_IPT_ALL*MAX(NIP_MAX,1))
2427 CPT_H3D = CPT_H3D + 1
2428 IPT_INPUT(CPT_H3D) = -1
2429.AND. IF ( NIP_MAX /= 0 IS_IPT_ALL == 1 ) IPT_INPUT(CPT_H3D) = L
2430.AND. IF (IS_IPT_ALL == 0 IPT >= 1) IPT_INPUT(CPT_H3D) = IPT
2431 IS_AVAILABLE_KEY(CPT_H3D) = 1
2432 ENDDO
2433 ENDIF
2434 ENDIF ! IF ( IS_IPT_ALL == 0 )
2435.AND. ELSEIF ( H3D_KEYWORD_ONED%IS_IPT == 0 IS_IPT == 0 ) THEN
2436 CPT_H3D = CPT_H3D + 1
2437 IPT_INPUT(CPT_H3D) = -1
2438 IS_AVAILABLE_KEY(CPT_H3D) = 1
2439 ENDIF ! IF ( H3D_KEYWORD_ONED%IS_IPT /= 0 )
2440.OR..OR..OR. ENDIF ! IF ( IS_SCALAR == 1 IS_VECTOR == 1 IS_TENSOR == 1 IS_TORSOR == 1 )
2441
2442 DO K=1,CPT_H3D
2443.AND. IF (IS_AVAILABLE_KEY(K) == 1 IS_SCALAR == 1) THEN
2444 CALL CREATE_H3D_1D_SCALAR(H3D_DATA,H3D_KEYWORD_ONED_SCALAR(J)%ID,ID_INPUT,
2445 . TRIM(H3D_KEYWORD_ONED_SCALAR(J)%TEXT1),
2446 . LEN_TRIM(H3D_KEYWORD_ONED_SCALAR(J)%TEXT1),
2447 . H3D_KEYWORD_ONED_SCALAR(J)%COMMENT,80,IPART,KEY3_GLOB,IPT_INPUT(K),IGRPART)
2448 IOK_H3DKEY = 1
2449.AND. ELSEIF (IS_AVAILABLE_KEY(K) == 1 IS_VECTOR == 1) THEN
2450 CALL CREATE_H3D_1D_VECTOR(H3D_DATA,H3D_KEYWORD_ONED_VECTOR(J)%ID,ID_INPUT,
2451 . TRIM(H3D_KEYWORD_ONED_VECTOR(J)%TEXT1),
2452 . LEN_TRIM(H3D_KEYWORD_ONED_VECTOR(J)%TEXT1),
2453 . H3D_KEYWORD_ONED_VECTOR(J)%COMMENT,80,IPART,KEY3_GLOB,IGRPART)
2454 IOK_H3DKEY = 1
2455.AND. ELSEIF (IS_AVAILABLE_KEY(K) == 1 IS_TENSOR == 1) THEN
2456 CALL CREATE_H3D_1D_TENSOR(H3D_DATA,H3D_KEYWORD_ONED_TENSOR(J)%ID,ID_INPUT,
2457 . TRIM(H3D_KEYWORD_ONED_TENSOR(J)%TEXT1),
2458 . LEN_TRIM(H3D_KEYWORD_ONED_TENSOR(J)%TEXT1),
2459 . H3D_KEYWORD_ONED_TENSOR(J)%COMMENT,80,IPART,KEY3_GLOB,IPT_INPUT(K),IGRPART)
2460 IOK_H3DKEY = 1
2461.AND. ELSEIF (IS_AVAILABLE_KEY(K) == 1 IS_TORSOR == 1) THEN
2462 CALL CREATE_H3D_1D_TORSOR(H3D_DATA,H3D_KEYWORD_ONED_TORSOR(J)%ID,ID_INPUT,
2463 . TRIM(H3D_KEYWORD_ONED_TORSOR(J)%TEXT1),LEN_TRIM(H3D_KEYWORD_ONED_TORSOR(J)%TEXT1),
2464 . H3D_KEYWORD_ONED_TORSOR(J)%COMMENT,80,IPART,KEY3_GLOB,IGRPART)
2465 IOK_H3DKEY = 1
2466 ENDIF
2467 ENDDO ! DO K=1,CPT_H3D
2468
2469 ENDDO
2470 ENDIF
2471
2472.OR. IF(KEY2 == 'QUAD' KEY2 =='ELEM') THEN
2473
2474 JMAX=MAX(H3D_NUM_KEY%QUAD_SCALAR, H3D_NUM_KEY%QUAD_VECTOR, H3D_NUM_KEY%QUAD_TENSOR)
2475 DO J=1,JMAX
2476 CPT_H3D = 0
2477 IS_SCALAR = 0
2478 IS_VECTOR = 0
2479 IS_TENSOR = 0
2480 IF ( KEY3_GLOB == H3D_KEYWORD_QUAD_SCALAR(J)%KEY3) IS_SCALAR = 1
2481 IF ( KEY3_GLOB == H3D_KEYWORD_QUAD_VECTOR(J)%KEY3) IS_VECTOR = 1
2482 IF ( KEY3_GLOB == H3D_KEYWORD_QUAD_TENSOR(J)%KEY3) IS_TENSOR = 1
2483.OR..OR. IF ( IS_SCALAR == 1 IS_VECTOR == 1 IS_TENSOR == 1 ) THEN
2484 IF(IS_SCALAR == 1) H3D_KEYWORD_QUAD = H3D_KEYWORD_QUAD_SCALAR(J)
2485 IF(IS_VECTOR == 1) H3D_KEYWORD_QUAD = H3D_KEYWORD_QUAD_VECTOR(J)
2486 IF(IS_TENSOR == 1) H3D_KEYWORD_QUAD = H3D_KEYWORD_QUAD_TENSOR(J)
2487.OR. IF(H3D_KEYWORD_QUAD%IS_LAYER /= 0
2488.OR. . H3D_KEYWORD_QUAD%IS_IR /= 0
2489.OR. . H3D_KEYWORD_QUAD%IS_IS /= 0
2490.OR. . H3D_KEYWORD_QUAD%IS_IT /= 0
2491.OR. . H3D_KEYWORD_QUAD%IS_UVAR /= 0
2492.OR. . H3D_KEYWORD_QUAD%IS_ID /= 0
2493 . H3D_KEYWORD_QUAD%IS_MODE /= 0 ) THEN
2494.AND..AND..AND. IF(IS_LAYER_ALL == 0 IS_IR_ALL == 0 IS_IS_ALL == 0
2495.AND..AND..AND. . IS_IT_ALL == 0 IS_UVAR_ALL == 0 IS_ID_ALL ==0
2496 . IS_MODE_ALL == 0)THEN
2497
2498 CPT_H3D = CPT_H3D + 1
2499 LAYER_INPUT(CPT_H3D) = -1
2500 UVAR_INPUT (CPT_H3D)= -1
2501 MDSVAR_INPUT(CPT_H3D)= -1
2502 MDSVAR_INPUT1(CPT_H3D)= -1
2503 MDSVAR_INPUT2(CPT_H3D)= -1
2504 IR_INPUT(CPT_H3D) = -1
2505 IS_INPUT(CPT_H3D) = -1
2506 IT_INPUT(CPT_H3D) = -1
2507 GAUSS_INPUT(CPT_H3D) = -1
2508 IS_AVAILABLE_KEY(CPT_H3D) = 1
2509
2510 IF(H3D_KEYWORD_QUAD%IS_LAYER == 1) THEN
2511 IF(LAYER /= 0) LAYER_INPUT(CPT_H3D) = LAYER
2512 IF(IS_LAYER_LOWER == 1) LAYER_INPUT(CPT_H3D) = -2
2513 IF(IS_LAYER_UPPER == 1) LAYER_INPUT(CPT_H3D) = -3
2514 ENDIF
2515
2516 IF(H3D_KEYWORD_QUAD%IS_IPT == 1) THEN
2517 IF(IPT /= 0) IPT_INPUT(CPT_H3D) = IPT
2518 IF(IS_IPT_LOWER == 1) IPT_INPUT(CPT_H3D) = -2
2519 IF(IS_IPT_UPPER == 1) IPT_INPUT(CPT_H3D) = -3
2520 ENDIF
2521
2522 IF(H3D_KEYWORD_QUAD%IS_UVAR == 1) THEN
2523 IF(IUVAR /= 0) UVAR_INPUT(CPT_H3D) = IUVAR
2524 ENDIF
2525
2526 IF(H3D_KEYWORD_QUAD%IS_IR == 1) THEN
2527 IF(IR /= 0) IR_INPUT(CPT_H3D) = IR
2528 ENDIF
2529
2530 IF(H3D_KEYWORD_QUAD%IS_IS == 1) THEN
2531 IF(IS /= 0) IS_INPUT(CPT_H3D) = IS
2532 ENDIF
2533
2534 IF(H3D_KEYWORD_QUAD%IS_IT == 1) THEN
2535 IF(IT /= 0) IT_INPUT(CPT_H3D) = IT
2536 ENDIF
2537
2538 IF(H3D_KEYWORD_QUAD%IS_ID == 1) THEN
2539 IF(ID /= 0) IDS_INPUT(CPT_H3D) = ID
2540.AND. IF ((KEY3_GLOB(1:7) == 'FAILURE')(CPT_IRUP > 0)) THEN
2541 IRUP_H3D(CPT_H3D) = 1
2542 ENDIF
2543 ENDIF
2544
2545 IF(H3D_KEYWORD_QUAD%IS_MODE == 1) THEN
2546 IF (MODE /= 0) MODES_INPUT(CPT_H3D) = MODE
2547 ENDIF
2548
2549 ELSE
2550 IF(NLAY_MAX + IR_MAX + IS_MAX + IT_MAX + NUVAR_MAX + ID_MAX + MODE_MAX /= 0)THEN
2551 DO K=1,MAX(1,IS_LAYER_ALL*MAX(NLAY_MAX,1))
2552 DO L=1,MAX(1,IS_UVAR_ALL*MAX(NUVAR_MAX,1))
2553 DO M=1,MAX(1,IS_IR_ALL*MAX(IR_MAX,1))
2554 DO N=1,MAX(1,IS_IS_ALL*MAX(IS_MAX,1))
2555 DO O=1,MAX(1,IS_IT_ALL*MAX(IT_MAX,1))
2556 DO P=1,MAX(1,IS_ID_ALL*MAX(ID_MAX,1))
2557 DO Q=1,MAX(1,IS_MODE_ALL*MAX(MODE_MAX,1))
2558 CPT_H3D = CPT_H3D + 1
2559
2560 LAYER_INPUT(CPT_H3D) = -1
2561.AND. IF (NLAY_MAX /= 0 IS_LAYER_ALL == 1) LAYER_INPUT(CPT_H3D) = K
2562
2563 UVAR_INPUT(CPT_H3D) = -1
2564.AND. IF (NUVAR_MAX /= 0 IS_UVAR_ALL == 1) UVAR_INPUT(CPT_H3D) = L
2565
2566 IR_INPUT(CPT_H3D) = -1
2567.AND. IF (IR_MAX /= 0 IS_IR_ALL == 1) IR_INPUT(CPT_H3D) = M
2568
2569 IS_INPUT(CPT_H3D) = -1
2570.AND. IF (IS_MAX /= 0 IS_IS_ALL == 1) IS_INPUT(CPT_H3D) = N
2571
2572 IT_INPUT(CPT_H3D) = -1
2573.AND. IF (IT_MAX /= 0 IS_IT_ALL == 1) IT_INPUT(CPT_H3D) = O
2574
2575 IDS_INPUT(CPT_H3D) = -1
2576 IF(ID /= 0) IDS_INPUT(CPT_H3D) = ID
2577.AND. IF ((KEY3_GLOB(1:7) == 'FAILURE')(CPT_IRUP > 0)) THEN
2578 IF (IS_ID_ALL == 1) THEN
2579 IDS_INPUT(CPT_H3D) = IRUP_ID_ALL(P)
2580 IRUP_H3D(CPT_H3D) = P
2581 ELSE
2582 IRUP_H3D(CPT_H3D) = 1
2583 ENDIF
2584 ENDIF
2585
2586 MODES_INPUT(CPT_H3D) = -1
2587 IF (IS_MODE_ALL == 1) MODES_INPUT(CPT_H3D) = Q
2588.AND. IF (IS_MODE_ALL == 0 MODE >= 1) MODES_INPUT(CPT_H3D) = MODE
2589
2590 GAUSS_INPUT(CPT_H3D) = -1
2591
2592 IS_AVAILABLE_KEY(CPT_H3D) = 1
2593
2594 ENDDO
2595 ENDDO
2596 ENDDO
2597 ENDDO
2598 ENDDO
2599 ENDDO
2600 ENDDO
2601 ENDIF
2602 ENDIF
2603
2604.AND..AND. ELSEIF(H3D_KEYWORD_QUAD%IS_LAYER == 0 IS_LAYER == 0
2605.AND..AND. . H3D_KEYWORD_QUAD%IS_IR == 0 IS_IR == 0
2606.AND..AND. . H3D_KEYWORD_QUAD%IS_IS == 0 IS_IS == 0
2607.AND..AND. . H3D_KEYWORD_QUAD%IS_IT == 0 IS_IT == 0
2608.AND..AND. . H3D_KEYWORD_QUAD%IS_UVAR == 0 IS_UVAR == 0
2609.AND..AND. . H3D_KEYWORD_QUAD%IS_ID == 0 IS_ID == 0
2610 . H3D_KEYWORD_QUAD%IS_MODE == 0) THEN
2611 CPT_H3D = CPT_H3D + 1
2612 LAYER_INPUT(CPT_H3D) = -1
2613 UVAR_INPUT (CPT_H3D)= -1
2614 MDSVAR_INPUT(CPT_H3D)= -1
2615 MDSVAR_INPUT1(CPT_H3D)= -1
2616 MDSVAR_INPUT2(CPT_H3D)= -1
2617 GAUSS_INPUT(CPT_H3D) = -1
2618 IR_INPUT(CPT_H3D) = -1
2619 IS_INPUT(CPT_H3D) = -1
2620 IT_INPUT(CPT_H3D) = -1
2621 IDS_INPUT(CPT_H3D) = -1
2622 MODES_INPUT(CPT_H3D) = -1
2623 IS_AVAILABLE_KEY(CPT_H3D) = 1
2624 ENDIF
2625 ENDIF
2626
2627 DO K=1,CPT_H3D
2628.AND. IF (IS_AVAILABLE_KEY(K) == 1 IS_SCALAR == 1)THEN
2629
2630 ! ---------------------------------------------------------------------------------------------
2631 ! /H3D/ELEM/FAILURE Specific output name
2632 ! ---------------------------------------------------------------------------------------------
2633.AND. IF ((KEY3_GLOB(1:7) == 'FAILURE')(CPT_IRUP > 0)) THEN
2634 TEST_CHAIN = ''
2635 IF (CPT_MOD > 0) THEN
2636 WRITE(TEST_CHAIN,'(A,A,A,A)') "failure:",TRIM(FAIL_NAME(IRUP_H3D(K))),"; ",
2637 . TRIM(MODNAME(IRUP_H3D(K),MODES_INPUT(K)))
2638 ELSE
2639 WRITE(TEST_CHAIN,'(A,A,A)') "failure:",TRIM(FAIL_NAME(IRUP_H3D(K))),"; failure index"
2640 ENDIF
2641 H3D_KEYWORD_QUAD_SCALAR(J)%TEXT1 = TEST_CHAIN
2642 ENDIF
2643
2644 CALL CREATE_H3D_QUAD_SCALAR(H3D_DATA,ID_INPUT,
2645 . TRIM(H3D_KEYWORD_QUAD_SCALAR(J)%TEXT1),
2646 . LEN_TRIM(H3D_KEYWORD_QUAD_SCALAR(J)%TEXT1),
2647 . H3D_KEYWORD_QUAD_SCALAR(J)%COMMENT,80,IPART,KEY3_GLOB,
2648 . LAYER_INPUT(K),IR_INPUT(K),IS_INPUT(K),IT_INPUT(K),
2649 . UVAR_INPUT(K),IDS_INPUT(K),MODES_INPUT(K),IGRPART)
2650 IOK_H3DKEY = 1
2651 ENDIF
2652
2653.AND. IF (IS_AVAILABLE_KEY(K) == 1 IS_VECTOR == 1)THEN
2654
2655 CALL CREATE_H3D_QUAD_VECTOR(H3D_DATA,ID_INPUT,
2656 . TRIM(H3D_KEYWORD_QUAD_VECTOR(J)%TEXT1),
2657 . LEN_TRIM(H3D_KEYWORD_QUAD_VECTOR(J)%TEXT1),
2658 . H3D_KEYWORD_QUAD_VECTOR(J)%COMMENT,80,IPART,KEY3_GLOB,
2659 . LAYER_INPUT(K),IR_INPUT(K),IS_INPUT(K),IT_INPUT(K),
2660 . UVAR_INPUT(K),IGRPART )
2661 IOK_H3DKEY = 1
2662 ENDIF
2663
2664.AND. IF (IS_AVAILABLE_KEY(K) == 1 IS_TENSOR == 1)THEN
2665
2666 CALL CREATE_H3D_QUAD_TENSOR(H3D_DATA,H3D_KEYWORD_QUAD_TENSOR(J)%ID,ID_INPUT,
2667 . TRIM(H3D_KEYWORD_QUAD_TENSOR(J)%TEXT1),
2668 . LEN_TRIM(H3D_KEYWORD_QUAD_TENSOR(J)%TEXT1),
2669 . H3D_KEYWORD_QUAD_TENSOR(J)%COMMENT,80,IPART,KEY3_GLOB,
2670 . LAYER_INPUT(K),IR_INPUT(K),IS_INPUT(K),IT_INPUT(K),
2671 . UVAR_INPUT(K),IGRPART )
2672 IOK_H3DKEY = 1
2673 ENDIF
2674 ENDDO
2675 ENDDO
2676 ENDIF
2677
2678
2679.OR..OR..OR. IF(KEY2 == 'SHELL' KEY2 =='ELEM' KEY2 =='SOLID'
2680.OR..OR..OR. . KEY2 == 'BRICK' KEY2 =='QUAD' KEY2 =='BEAM '
2681.OR..OR. . KEY2 == 'SPRING' KEY2 =='TRUSS'KEY2 =='SPH') THEN
2682
2683 DEALLOCATE (LAYER_INPUT)
2684 DEALLOCATE (IPT_INPUT)
2685 DEALLOCATE (PLY_INPUT)
2686 DEALLOCATE (UVAR_INPUT)
2687 DEALLOCATE (GAUSS_INPUT)
2688 DEALLOCATE (IR_INPUT)
2689 DEALLOCATE (IS_INPUT)
2690 DEALLOCATE (IT_INPUT)
2691 DEALLOCATE (IDS_INPUT)
2692 DEALLOCATE (IRUP_H3D)
2693 DEALLOCATE (IS_AVAILABLE_KEY)
2694 DEALLOCATE (MDSVAR_INPUT)
2695 DEALLOCATE (MDSVAR_INPUT1)
2696 DEALLOCATE (MDSVAR_INPUT2)
2697 DEALLOCATE (MDSVAR_INPUT_TMP)
2698 DEALLOCATE (MDSVAR_INPUT1_TMP)
2699 DEALLOCATE (MDSVAR_INPUT2_TMP)
2700 DEALLOCATE (MODES_INPUT)
2701 ENDIF
2702 IF (ALLOCATED(IS_LAYER_MAT)) DEALLOCATE (IS_LAYER_MAT)
2703
2704.AND. IF (IOK_H3DKEY == 0 ISHELL_NPT_CHECK == 0) THEN
2705 IF (ISPMD == 0) CALL ANCMSG(MSGID=275,c1='/H3D/'//KEY2//'/'//KEY3//'/'//KEY4//'/'//KEY5//'/'//KEY6,
2706 . ANMODE=ANINFO)
2707 IF (ISPMD == 0) CALL ARRET(2)
2708 ENDIF
2709 ENDDO
2710 ENDDO
2711
2712 IF( H3D_DATA%IPART_SELECT == 0 ) CALL CREATE_H3D_PARTS_ALL(H3D_DATA,IPART)
2713
2714 CPT = 0
2715 DO I=1,H3D_DATA%N_OUTP_H3D
2716 IF (H3D_DATA%OUTPUT_LIST(I)%OK == 1) THEN
2717 CPT = CPT + 1
2718 H3D_DATA%OUTPUT_LIST(I)%N_OUTP = CPT + 2
2719 ELSE
2720 H3D_DATA%OUTPUT_LIST(I)%N_OUTP = 0
2721 ENDIF
2722 ENDDO
2723 IF (IS_SKING > 0) THEN
2724 ISKIND=0
2725 IF (IOUTER==1) ISKIND=ISKIND+1
2726 IF (IPEXT==1) ISKIND=ISKIND+2
2727 CALL H3D_SKIN_DIM(IPARG ,NUMSKIN, NUMSKING,TAG_SKINS6,
2728 . IBCL ,ILOADP ,LLOADP ,LOADS ,
2729 . NUMSKINP0,NUMSKINP,ISKIND,PBLAST )
2730 END IF
2731
2732
2733
2734
2735
2736
2737
2738 H3D_DATA%N_SCAL_CSE_FRICINT = NINEFRIC
2739 IF (H3D_DATA%N_SCAL_CSE_FRICINT > 0)THEN
2740 ! Allocate INTERFACE Remote EFRICFI Array
2741 DO I=1,NINTER
2742 ITYP = IPARI(7,I)
2743.OR..OR..OR. IF(ITYP==7ITYP==10ITYP==11
2744.AND..OR..OR. + (ITYP==17IPARI(33,I)==0)ITYP==20
2745.OR..OR..OR. + ITYP==22ITYP==23ITYP==24
2746 + ITYP==25)THEN
2747
2748 IF(H3D_DATA%N_CSE_FRIC_INTER(I) >0) THEN
2749 LENR=0
2750 DO P = 1, NSPMD
2751 LENR = LENR + NSNFI(I)%P(P)
2752 ENDDO
2753 IERROR = 0
2754 ALLOCATE(EFRICFI(I)%P(LENR),STAT=IERROR)
2755 IF(IERROR/=0) THEN
2756 CALL ANCMSG(MSGID=20,ANMODE=ANINFO)
2757 CALL ARRET(2)
2758 ENDIF
2759 EFRICFI(I)%P(1:LENR)=ZERO
2760 ENDIF
2761 ENDIF
2762 ENDDO
2763 ENDIF
2764
2765 IF (H3D_DATA%N_SCAL_CSE_FRIC > 0)THEN
2766 ! Allocate INTERFACE Remote EFRICGFI Array
2767 DO I=1,NINTER
2768 ITYP = IPARI(7,I)
2769.OR..OR..OR. IF(ITYP==7ITYP==10ITYP==11
2770.AND..OR..OR. + (ITYP==17IPARI(33,I)==0)ITYP==20
2771.OR..OR..OR. + ITYP==22ITYP==23ITYP==24
2772 + ITYP==25)THEN
2773 LENR=0
2774 DO P = 1, NSPMD
2775 LENR = LENR + NSNFI(I)%P(P)
2776 ENDDO
2777 IERROR = 0
2778 ALLOCATE(EFRICGFI(I)%P(LENR),STAT=IERROR)
2779 IF(IERROR/=0) THEN
2780 CALL ANCMSG(MSGID=20,ANMODE=ANINFO)
2781 CALL ARRET(2)
2782 ENDIF
2783 EFRICGFI(I)%P(1:LENR)=ZERO
2784 ENDIF
2785 ENDDO
2786 ENDIF
2787
2788 DEALLOCATE(H3D_KEYWORD_NODAL_SCALAR)
2789 DEALLOCATE(H3D_KEYWORD_NODAL_VECTOR)
2790 DEALLOCATE(H3D_KEYWORD_NODAL_TENSOR)
2791 DEALLOCATE(H3D_KEYWORD_ONED_SCALAR)
2792 DEALLOCATE(H3D_KEYWORD_ONED_VECTOR)
2793 DEALLOCATE(H3D_KEYWORD_ONED_TENSOR)
2794 DEALLOCATE(H3D_KEYWORD_ONED_TORSOR)
2795 DEALLOCATE(H3D_KEYWORD_SHELL_SCALAR)
2796 DEALLOCATE(H3D_KEYWORD_SHELL_VECTOR)
2797 DEALLOCATE(H3D_KEYWORD_SHELL_TENSOR)
2798 DEALLOCATE(H3D_KEYWORD_SOLID_SCALAR)
2799 DEALLOCATE(H3D_KEYWORD_SOLID_VECTOR)
2800 DEALLOCATE(H3D_KEYWORD_SOLID_TENSOR)
2801 DEALLOCATE(H3D_KEYWORD_SPH_SCALAR)
2802 DEALLOCATE(H3D_KEYWORD_SPH_TENSOR)
2803 DEALLOCATE(H3D_KEYWORD_QUAD_SCALAR)
2804 DEALLOCATE(H3D_KEYWORD_QUAD_VECTOR)
2805 DEALLOCATE(H3D_KEYWORD_QUAD_TENSOR)
2806 DEALLOCATE(ID_MAT_MDS)
2807 IF (ALLOCATED(IRUP_ID_ALL)) DEALLOCATE (IRUP_ID_ALL)
2808
2809 RETURN
subroutine h3d_list_1d_scalar(h3d_keyword_oned_scalar, geo, nkey)
subroutine h3d_list_1d_tensor(h3d_keyword_oned_tensor, geo, nkey)
subroutine h3d_list_1d_torsor(h3d_keyword_oned_torsor, geo, nkey)
subroutine h3d_list_1d_vector(h3d_keyword_oned_vector, geo, nkey)
subroutine h3d_list_nodal_scalar(h3d_keyword_nodal_scalar, geo, nkey)
subroutine h3d_list_nodal_tensor(h3d_keyword_nodal_tensor, geo, nkey)
subroutine h3d_list_nodal_vector(h3d_keyword_nodal_vector, geo, nkey)
subroutine h3d_list_quad_scalar(h3d_keyword_quad_scalar, geo, igeo, multi_fvm, nkey)
subroutine h3d_list_quad_tensor(h3d_keyword_quad_tensor, geo, igeo, nkey)
subroutine h3d_list_quad_vector(h3d_keyword_quad_vector, geo, igeo, nkey)
subroutine h3d_list_shell_scalar(h3d_keyword_shell_scalar, geo, igeo, multi_fvm, nkey)
subroutine h3d_list_shell_tensor(h3d_keyword_shell_tensor, geo, igeo, nkey)
subroutine h3d_list_shell_vector(h3d_keyword_shell_vector, geo, igeo, nkey)
subroutine h3d_list_solid_scalar(h3d_keyword_solid_scalar, geo, igeo, multi_fvm, nkey)
subroutine h3d_list_solid_tensor(h3d_keyword_solid_tensor, geo, igeo, nkey)
subroutine h3d_list_solid_vector(h3d_keyword_solid_vector, geo, igeo, nkey)
subroutine h3d_list_sph_scalar(h3d_keyword_sph_scalar, geo, igeo, nkey)
subroutine h3d_list_sph_tensor(h3d_keyword_sph_tensor, geo, igeo, nkey)
integer, parameter ncharline100
integer, parameter ncharkey
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)