92 SUBROUTINE lech3d(GEO,IGEO,IPM,IPART,H3D_DATA,MULTI_FVM,IPARI,IPARG,TAG_SKINS6,
93 . MDS_LABEL,MDS_OUTPUT_TABLE,MDS_NMAT,MAX_DEPVAR,MDS_NDEPSVAR,
94 . ELBUF_STR,STACK,IBCL,ILOADP,LLOADP,LOADS,MAT_PARAM,PBLAST,
112 USE output_mod ,
ONLY : h3d_has_noda_pext
116#include "implicit_f.inc"
120#include "com04_c.inc"
121#include "com08_c.inc"
122#include "param_c.inc"
123#include "scr17_c.inc"
125#include "com01_c.inc"
127#include "vect01_c.inc"
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) ::
142 TYPE (MATPARAM_STRUCT_) ,
DIMENSION(NUMMAT) ,
INTENT(INOUT) :: MAT_PARAM
143 TYPE (PBLAST_) :: PBLAST
144 TYPE(
group_) ,
DIMENSION(NGRPART) ,
INTENT(IN) :: IGRPART
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
152 . is_empty_key2,is_empty_key3,is_empty_key4,is_empty_key5,is_empty_key6,is_empty_key7,is_empty_key8,
153 . is_ply_key4,is_ply_key5,is_ply_key6,is_ply_key7,is_ply_key8,is_all,is_upper,is_lower,is_def,
154 . is_layer_key4,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_irup,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
179 INTEGER IBID1,IBID2,IBID3,IBID4
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)::KEY3_GLOB
193 CHARACTER*64 MDS_LABEL_TMP
195 INTEGER,
DIMENSION(:),
ALLOCATABLE ::
196 . layer_input,ipt_input,ply_input,uvar_input,gauss_input,
197 . ir_input,is_input,it_input,is_available_key,inter_input,
198 . mdsvar_input,mdsvar_input1,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
202 TYPE (H3D_KEYWORD) H3D_KEYWORD_NODE,H3D_KEYWORD_SHELL,H3D_KEYWORD_SOLID,H3D_KEYWORD_QUAD,H3D_KEYWORD_ONED
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 :: H3D_KEYWORD_ONED_SCALAR
208 TYPE (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
223 TYPE (H3D_NUMBER_OF_KEY) :: H3D_NUM_KEY
225 TYPE(buf_lay_) ,
POINTER :: BUFLY
226 TYPE(buf_fail_) ,
POINTER :: FBUF
227 INTEGER,
DIMENSION(:,:),
ALLOCATABLE :: IS_LAYER_MAT
229 CHARACTER*64 TEST_CHAIN
230 CHARACTER(LEN=NCHARTITLE),
DIMENSION(:),
ALLOCATABLE :: FAIL_NAME
231 CHARACTER(LEN=NCHARTITLE),
DIMENSION(:,:),
ALLOCATABLE :: MODNAME
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
238 h3d_data%TH3D_STOP = zero
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
261 ALLOCATE(modname(1,1))
266 h3d_data%IPART_SELECT = 0
276 ALLOCATE(h3d_data%N_SKID_INTER(ninter))
277 h3d_data%N_SKID_INTER(1:ninter) = 0
280 ALLOCATE(h3d_data%N_CSE_FRIC_INTER(ninter))
281 h3d_data%N_CSE_FRIC_INTER(1:ninter) = 0
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=
''
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
434 CALL h3d_list_quad_scalar(h3d_keyword_quad_scalar, geo, igeo, multi_fvm, h3d_num_key%QUAD_SCALAR)
442 IF ((numsphg > 0).and.(h3d_data%DTH3D0 > zero))
THEN
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
455 ELSEIF (ID_DEF==2) THEN
463 CALL CREATE_H3D_INPUT(H3D_DATA,DUM,DUM,DUM,NBC,KEY0,KEY2,KEY3,KEY4,KEY5,KEY6,KEY7,KEY8)
471 DO ID_INPUT=1,H3D_DATA%N_INPUT_H3D
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
555 IF ( KEY3=='pext.OR.
'KEY4=='pext
') IPEXT=1
556 IF ( KEY4=='outer.OR.
'KEY5=='outer') iouter=1
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
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 )
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 )
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)
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 )
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 )
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 )
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 )
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 )
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 )
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 )
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 )
719 IF ( is_char_key3 == 1 .AND. is_empty_key3 == 0)
THEN
721 IF ( key3(i:i) /=
' ' )
THEN
723 key3_glob(cpt:cpt) = key3(i:i)
727 IF ( is_char_key4 == 1 .AND. is_empty_key4 == 0 )
THEN
729 key3_glob(cpt:cpt) =
'/'
731 IF ( key4(i:i) /=
' ' )
THEN
733 key3_glob(cpt:cpt) = key4(i:i)
737 IF ( is_char_key5 == 1 .AND. is_empty_key5 == 0 )
THEN
739 key3_glob(cpt:cpt) =
'/'
741 IF ( key5(i:i) /=
' ' )
THEN
743 key3_glob(cpt:cpt) = key5(i:i)
747 IF ( is_char_key6 == 1 .AND. is_empty_key6 == 0 )
THEN
749 key3_glob(cpt:cpt) =
'/'
751 IF ( key6(i:i) /=
' ' )
THEN
753 key3_glob(cpt:cpt) = key6(i:i)
757 IF ( is_char_key7 == 1 .AND. is_empty_key7 == 0 )
THEN
759 key3_glob(cpt:cpt) =
'/'
761 IF ( key7(i:i) /=
' ' )
THEN
763 key3_glob(cpt:cpt) = key7(i:i)
767 IF ( is_char_key8 == 1 .AND. is_empty_key8 == 0 )
THEN
769 key3_glob(cpt:cpt) =
'/'
771 IF ( key8(i:i) /=
' ' )
THEN
773 key3_glob(cpt:cpt) = key8(i:i)
782 IF(igeo(11,k) == 9 .OR. igeo(11,k) == 11 .OR. igeo(11,k) == 16)
784 IF(igeo(11,k) == 10 .OR. igeo(11,k) == 11 .OR. igeo(11,k) == 16)
786 IF(igeo(11,k) == 17 .OR. igeo(11,k) == 51 .OR. igeo(11,k) == 52)
792 IF (ipm(2,k) == 200)
THEN
794 id_mat_mds(cpt) = ipm(1,k)
795 index_mat_mds(cpt) = k
803 key3_read = key3_glob
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)
812 IF(key2 ==
'PART')
THEN
815 h3d_data%IPART_SELECT = 1
819 IF(key2 ==
'NODA')
THEN
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)))
826 jmax=
max(h3d_num_key%NODAL_SCALAR, h3d_num_key%NODAL_VECTOR, h3d_num_key%NODAL_TENSOR)
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
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
846 IF(ipari(15,k) == inter)
THEN
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
861 h3d_data%N_SCAL_CSE_FRIC = 1
865 IF(ninter_max /= 0)
THEN
868 IF(key3_glob(1:4) ==
'SKID' )
THEN
869 cpt_h3d = cpt_h3d + 1
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
877 IF(h3d_data%N_CSE_FRIC_INTER(k) ==0)
THEN
878 ninefric = ninefric +1
879 cpt_h3d = cpt_h3d + 1
881 inter_input(cpt_h3d) = k
882 is_available_key(cpt_h3d) = 1
883 h3d_data%N_CSE_FRIC_INTER(k) = k
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
890 inter_input(cpt_h3d) = n19
891 is_available_key(cpt_h3d) = 1
892 h3d_data%N_CSE_FRIC_INTER(k) = n19
894 h3d_data%N_CSE_FRIC_INTER(k) = n19
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
904 cpt_h3d = cpt_h3d + 1
905 inter_input(cpt_h3d) = 0
907 is_available_key(cpt_h3d) = 1
909 IF(key3_glob(1:4) ==
'PEXT')
THEN
910 h3d_has_noda_pext = 1
913 IF ( is_scalar == 1 )
THEN
915 IF (is_available_key(k) == 1 .AND. is_scalar == 1)
THEN
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)
924 IF ( key3_glob == h3d_keyword_nodal_vector(j)%KEY3 )
THEN
926 . trim(h3d_keyword_nodal_vector(j)%TEXT1),
927 . len_trim(h3d_keyword_nodal_vector(j
928 . h3d_keyword_nodal_vector(j)%COMMENT,80,ipart,key3_glob,
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,
944 DEALLOCATE (inter_input)
945 DEALLOCATE (is_available_key)
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
973 IF (is_layer_all == 1)
THEN
975 IF(igeo(11,k) == 10 .OR. igeo(11,k) == 11 .OR. igeo(11,k) == 16)
THEN
976 nlay_max =
max(nlay_max,igeo(4,k))
977 ELSEIF(igeo(11,k) == 20 .OR. igeo(11,k) == 21 .OR. igeo(11,k) == 22)
THEN
978 nlay_max =
max(nlay_max,
max(1,igeo(30,k)))
986 IF(igeo(11,k) == 1 .OR. igeo(11,k) == 9)
THEN
987 nip_elem_max =
max(nip_elem_max,igeo(4,k))
988 IF (igeo(4,k)==0)
THEN
990 nip_elem_max = nip_elem_max + 1
992 ELSEIF(igeo(11,k) == 18)
THEN
993 nip_elem_max =
max(nip_elem_max,igeo(3,k))
996 IF(is_ipt_all == 1 .AND. nip_elem_max == 0) ishell_npt_check = 1
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
1004 IF(igeo(11,k) == 19)
THEN
1005 nply_max = nply_max + 1
1006 id_ply(nply_max) = igeo(1,k)
1008 mat_ply(nply_max) = igeo(101,k)
1009 nip_ply_max =
max(nip_ply_max,igeo(44,k))
1013 nply_max = nply_max + 1
1022 IF (mat_ply(k) == imat)
THEN
1023 mat_ply(k) = mat_param(imat)%MAT_ID
1029 nip_max =
max(nip_elem_max,nip_ply_max)
1031 IF (is_uvar_all == 1)
THEN
1033 nuvar_max =
max(nuvar_max,ipm(8,k))
1036 IF (is_mdsvar_all == 1)
THEN
1037 IF(key3_glob(1:3) ==
'MDS' )
THEN
1039 nmdsvar_max = nmdsvar_max + mds_ndepsvar(k)
1044 IF (is_mdsvar_def == 1)
THEN
1045 IF(key3_glob(1:3) ==
'MDS' )
THEN
1047 DO l=1,mds_ndepsvar(k)
1048 nmdsvar_max = nmdsvar_max+mds_output_table(l,k)
1055 IF (is_ir_all == 1)
THEN
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
1061 ELSEIF(igeo(4,k) == 8)
THEN
1064 nptr=
max(2,igeo(4,k)/100)
1065 ir_max =
max(ir_max,nptr)
1068 IF(igeo(4,k) == 4)
THEN
1074 ELSEIF(igeo(11,k) == 43)
THEN
1075 ir_max =
max(ir_max,4)
1081 IF (is_is_all == 1)
THEN
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
1086 IF(igeo(10,k)==15)
THEN
1087 is_max =
max(is_max,igeo(4,k))
1088 ELSEIF(igeo(4,k) == 1)
THEN
1090 ELSEIF(igeo(4,k) == 8)
THEN
1093 npts=
max(2,mod(igeo(4,k)/10,10))
1094 is_max =
max(is_max,npts)
1097 IF(igeo(4,k) == 4)
THEN
1103 ELSEIF(igeo(11,k) == 43)
THEN
1104 is_max =
max(is_max,1)
1110 IF (is_it_all == 1)
THEN
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
1116 ELSEIF(igeo(4,k) == 8)
THEN
1119 nptt=
max(2,mod(igeo(4,k),10))
1120 it_max =
max(it_max,nptt)
1122 ELSEIF(igeo(11,k) == 43)
THEN
1123 it_max =
max(it_max,1)
1131 IF ((is_ir_all + is_is_all+is_it_all)>0)
THEN
1133 IF(igeo(10,k)==14.AND. (igeo(11,k) == 20 .OR.
1134 . igeo(11,k) == 21 .OR. igeo(11,k) == 22))
THEN
1142 IF (nptt==0) nptt= igeo(15,k)
1144 IF (npts==0) npts= igeo(15,k)
1146 IF (nptr==0) nptr= igeo(15,k)
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)
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)
1163 IF (is_id_all == 1)
THEN
1165 IF (ipm(2,k) == 36)
THEN
1167 ELSEIF (ipm(2,k) == 78)
THEN
1169 ELSEIF (ipm(2,k) == 87)
THEN
1182 IF (key3_glob(1:7) ==
'FAILURE')
THEN
1188 IF ((is_mode > 0).OR.(is_mode_all > 0))
THEN
1191 IF (is_id_all > 0)
THEN
1194 IF (
ALLOCATED(modname))
DEALLOCATE
1195 IF (
ALLOCATED(fail_name))
DEALLOCATE(fail_name)
1196 IF (
ALLOCATED(irup_id_all))
DEALLOCATE(irup_id_all)
1199 nfail = mat_param(imat)%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)
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
1219 nfail = mat_param(imat)%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
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
1244 IF (cpt_irup == 0)
THEN
1245 IF (ispmd == 0)
THEN
1246 WRITE(test_chain,
'(10A)')
"/H3D/""/"
1247 . trim(key3),
"/",trim(key4),
"/",
1248 . trim(key5),
"/",trim(key6)
1260 IF (cpt_mod == 0)
THEN
1261 IF (ispmd == 0)
THEN
1262 WRITE(test_chain,
'(10A)')
"/H3D/",trim(key2),
"/",
1263 . trim(key3),
"/",trim(key4),
"/",
1274 ELSEIF (is_id > 0)
THEN
1276 IF (
ALLOCATED(modname))
DEALLOCATE(modname)
1277 IF (
ALLOCATED(fail_name))
DEALLOCATE(fail_name)
1279 nfail = mat_param(imat)%NFAIL
1282 IF (mat_param(imat)%FAIL(j)%FAIL_ID ==
id)
THEN
1283 nmod = mat_param(imat)%FAIL(j)%NMOD
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
1289 ELSEIF (is_mode > 0)
THEN
1294 ALLOCATE(fail_name(1))
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)
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)
1335 IF (is_id_all > 0)
THEN
1338 IF (
ALLOCATED(fail_name))
DEALLOCATE(fail_name)
1339 IF (
ALLOCATED(irup_id_all))
DEALLOCATE(irup_id_all)
1342 nfail = mat_param(imat)%NFAIL
1345 IF (mat_param(imat)%FAIL(j)%FAIL_ID > 0)
THEN
1346 cpt_irup = cpt_irup + 1
1353 ALLOCATE(fail_name(cpt_irup))
1354 ALLOCATE(irup_id_all(cpt_irup))
1355 irup_id_all(1:cpt_irup) = 0
1358 nfail = mat_param(imat)%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
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)
1387 ELSEIF (is_id > 0)
THEN
1391 IF (
ALLOCATED(fail_name))
DEALLOCATE(fail_name)
1393 nfail = mat_param(imat)%NFAIL
1396 IF (mat_param(imat)%FAIL(j)%FAIL_ID ==
id)
THEN
1397 ALLOCATE(fail_name(1))
1399 fail_name(1) = mat_param(imat)%FAIL(j)%KEYWORD
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)
1428 IF ((key3_glob(1:4) ==
'DAMG').AND.((is_mode > 0).OR.(is_mode_all > 0)))
THEN
1435 IF (
ALLOCATED(modname))
DEALLOCATE(modname)
1437 IF (mat_param(imat)%MAT_ID ==
id)
THEN
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
1445 ELSEIF (is_mode > 0)
THEN
1448 IF ((nmod > 0).AND.(mode <= nmod)) cpt_mod = 1
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)
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)
1482 IF (ispmd == 0)
THEN
1483 WRITE(test_chain,
'(10A)')
"/H3D/",trim(key2),
"/",
1484 . trim(key3),
"/",trim(key4),
"/",
1494 ELSEIF ((key3_glob(1:4) ==
'DAMG').AND.(is_id > 0))
THEN
1497 IF (mat_param(imat)%MAT_ID ==
id)
THEN
1498 mlw = mat_param(imat)%ILAW
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)
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)*
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))
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)))
1551 is_available_key(:) = 0
1553 mdsvar_input1(:) = 0
1554 mdsvar_input2(:) = 0
1559 IF (is_mdsvar_all == 1)
THEN
1560 IF(key3_glob(1:3) ==
'MDS' )
THEN
1562 DO l=1,mds_ndepsvar(k)
1564 mdsvar_input_tmp(cpt) = k
1565 mdsvar_input1_tmp(cpt) = l
1566 mdsvar_input2_tmp(cpt) = id_mat_mds(k)
1571 IF (is_mdsvar_def == 1)
THEN
1572 IF(key3_glob(1:3) ==
'MDS' )
THEN
1574 DO l=1,mds_ndepsvar(k)
1575 IF(mds_output_table(l,k) /= 0)
THEN
1577 mdsvar_input_tmp(cpt) = k
1578 mdsvar_input1_tmp(cpt) = l
1579 mdsvar_input2_tmp(cpt) = id_mat_mds(k)
1589 IF(.NOT.
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
1592 IF(is_mdsvar == 1)
THEN
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 )
1604 nlay = elbuf_str(ng)%NLAY
1605 isubstack = iparg(71,ng)
1607 nuvar = elbuf_str(ng)%BUFLY(j)%NVAR_MAT
1608 IF(iuvar <= nuvar)
THEN
1610 IF (igtyp == 17 .OR. 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)
1616 imat = elbuf_str(ng)%BUFLY(j)%IMAT
1618 is_layer_mat(imat,j) = 1
1625 IF(key2 == 'shell.OR.
' KEY2 =='elem
') THEN
1628 JMAX=MAX(H3D_NUM_KEY%SHELL_SCALAR, H3D_NUM_KEY%SHELL_VECTOR, H3D_NUM_KEY%SHELL_TENSOR)
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
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
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
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
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
1678 IF(H3D_KEYWORD_SHELL%IS_PLY == 1) THEN
1679 IF(PLY /= 0) PLY_INPUT(CPT_H3D) = PLY
1682 IF(H3D_KEYWORD_SHELL%IS_UVAR == 1) THEN
1683 IF(IUVAR /= 0) UVAR_INPUT(CPT_H3D) = IUVAR
1686 IF(H3D_KEYWORD_SHELL%IS_ID == 1) THEN
1687 IF(ID /= 0) IDS_INPUT(CPT_H3D) = ID
1688 IF ((KEY3_GLOB(1:7) == 'failure.AND.
')(CPT_IRUP > 0)) THEN
1689 IRUP_H3D(CPT_H3D) = 1
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))
1701 IF(H3D_KEYWORD_SHELL%IS_MODE == 1) THEN
1702 IF(MODE /= 0) MODES_INPUT(CPT_H3D) = MODE
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))
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
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
1727 !< Loop over ply failure criteria IDs
1729 IF (IS_ID_ALL == 1) THEN
1730 IF (MAT_PARAM(IMAT)%FAIL(IFAIL)%FAIL_ID == IRUP_ID_ALL(P)) THEN
1734 IF (MAT_PARAM(IMAT)%FAIL(IFAIL)%FAIL_ID == ID) THEN
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
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
1754 CPT_H3D = CPT_H3D + 1
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
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
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
1783 IPT_INPUT(CPT_H3D) = -1
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
1798 IPT_INPUT(CPT_H3D) = -1
1802 UVAR_INPUT(CPT_H3D) = -1
1803.AND.
IF (NUVAR_MAX /= 0 IS_UVAR_ALL == 1) THEN
1804 UVAR_INPUT(CPT_H3D) = N
1806.AND.
IF (IS_UVAR_ALL == 0 IUVAR >= 1) UVAR_INPUT(CPT_H3D) = IUVAR
1808 MDSVAR_INPUT(CPT_H3D) = -1
1809 MDSVAR_INPUT1(CPT_H3D) = -1
1810.AND..AND.
IF (NMDSVAR_MAX /= 0 IS_MDSVAR_ALL == 1
1811 . KEY3_GLOB(1:3) == 'mds.AND.
' 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))
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)
1823.AND..AND.
IF (NMDSVAR_MAX /= 0 IS_MDSVAR_DEF == 1
1824 . KEY3_GLOB(1:3) == 'mds.AND.
' 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)
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
1835 IF ((KEY3_GLOB(1:7) == 'failure.AND.
')(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
1840 IRUP_H3D(CPT_H3D) = 1
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
1848 GAUSS_INPUT(CPT_H3D) = -1
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
1854 IF(LAYER_INPUT(CPT_H3D) /= -1) ISH_NPT0=0
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
1870 CPT_H3D = CPT_H3D - 1
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
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
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))
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)
1938 ! ---------------------------------------------------------------------------------------------
1939 ! /H3D/ELEM/FAILURE Specific output name
1940 ! ---------------------------------------------------------------------------------------------
1941 IF ((KEY3_GLOB(1:7) == 'failure.AND.
')(CPT_IRUP > 0)) THEN
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)))
1947 WRITE(TEST_CHAIN,'(a,a,a)
') "Failure:",TRIM(FAIL_NAME(IRUP_H3D(K))),"; Failure index"
1949 H3D_KEYWORD_SHELL_SCALAR(J)%TEXT1 = TEST_CHAIN
1952 ! ---------------------------------------------------------------------------------------------
1953 ! /H3D/ELEM/DAMG Specific output name
1954 ! ---------------------------------------------------------------------------------------------
1955 IF ((KEY3_GLOB(1:4) == 'damg.AND.
')(CPT_MOD > 0)) THEN
1957 WRITE(TEST_CHAIN,'(a,i3,a,a)
') "Damage: LAW",MLW,"; ",TRIM(MODNAME(1,MODES_INPUT(K)))
1958 H3D_KEYWORD_SHELL_SCALAR(J)%TEXT1 = TEST_CHAIN
1959 ELSEIF ((KEY3_GLOB(1:4) == 'damg.AND.
')(CPT_LAWID > 0)) THEN
1961 WRITE(TEST_CHAIN,'(a,i3,a)
') "Damage: LAW",MLW,"; Damage index"
1962 H3D_KEYWORD_SHELL_SCALAR(J)%TEXT1 = TEST_CHAIN
1963 ELSEIF ((KEY3_GLOB(1:4) == 'damg.AND..AND.
')(CPT_MOD == 0)(CPT_LAWID == 0)) THEN
1964 H3D_KEYWORD_SHELL_SCALAR(J)%TEXT1 = "Damage:Damage index"
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)
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 )
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)
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)
2005 IF(KEY2 == 'solid.OR.
' KEY2 == 'brick.OR.
' KEY2 =='elem
') THEN
2007 JMAX=MAX(H3D_NUM_KEY%SOLID_SCALAR, H3D_NUM_KEY%SOLID_VECTOR, H3D_NUM_KEY%SOLID_TENSOR)
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
2017 IS_CORNER_DATA = H3D_KEYWORD_SOLID_TENSOR(J)%IS_CORNER_DATA
2019.OR..OR.
IF ( IS_SCALAR == 1 IS_VECTOR == 1 IS_TENSOR == 1 ) THEN
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)
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
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
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
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
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
2065 IF(H3D_KEYWORD_SOLID%IS_UVAR == 1) THEN
2066 IF(IUVAR /= 0) UVAR_INPUT(CPT_H3D) = IUVAR
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))
2077 IF(H3D_KEYWORD_SOLID%IS_IR == 1) THEN
2078 IF(IR /= 0) IR_INPUT(CPT_H3D) = IR
2081 IF(H3D_KEYWORD_SOLID%IS_IS == 1) THEN
2082 IF(IS /= 0) IS_INPUT(CPT_H3D) = IS
2085 IF(H3D_KEYWORD_SOLID%IS_IT == 1) THEN
2086 IF(IT /= 0) IT_INPUT(CPT_H3D) = IT
2089 IF(H3D_KEYWORD_SOLID%IS_ID == 1) THEN
2090 IF(ID /= 0) IDS_INPUT(CPT_H3D) = ID
2091 IF ((KEY3_GLOB(1:7) == 'failure.AND.
')(CPT_IRUP > 0)) THEN
2092 IRUP_H3D(CPT_H3D) = 1
2096 IF(H3D_KEYWORD_SOLID%IS_MODE == 1) THEN
2097 IF(MODE /= 0) MODES_INPUT(CPT_H3D) = MODE
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
2113 LAYER_INPUT(CPT_H3D) = -1
2114.AND.
IF (NLAY_MAX /= 0 IS_LAYER_ALL == 1) LAYER_INPUT(CPT_H3D) = K
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
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 . KEY3_GLOB(1:3) == 'mds.AND.
' 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)
2130.AND.
IF (IS_MDSVAR_ALL == 0 IMDSVAR >= 1) MDSVAR_INPUT(CPT_H3D) = IMDSVAR
2133.AND..AND.
IF (NMDSVAR_MAX /= 0 IS_MDSVAR_DEF == 1
2134 . KEY3_GLOB(1:3) == 'mds.AND.
' 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)
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
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
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
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
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
2160 IF ((KEY3_GLOB(1:7) == 'failure.AND.
')(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
2165 IRUP_H3D(CPT_H3D) = 1
2168 GAUSS_INPUT(CPT_H3D) = -1
2170 IS_AVAILABLE_KEY(CPT_H3D) = 1
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
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)
2217 IF (IS_MDSVAR ==1) MDS_LABEL_TMP = MDS_LABEL(MDSVAR_INPUT1(K), MDSVAR_INPUT(K))
2219 ! ---------------------------------------------------------------------------------------------
2220 ! /H3D/ELEM/FAILURE Specific output name
2221 ! ---------------------------------------------------------------------------------------------
2222 IF ((KEY3_GLOB(1:7) == 'failure.AND.
')(CPT_IRUP > 0)) THEN
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)))
2228 WRITE(TEST_CHAIN,'(a,a,a)
') "Failure:",TRIM(FAIL_NAME(IRUP_H3D(K))),"; Failure index"
2230 H3D_KEYWORD_SOLID_SCALAR(J)%TEXT1 = TEST_CHAIN
2233 ! ---------------------------------------------------------------------------------------------
2234 ! /H3D/ELEM/DAMG Specific output name
2235 ! ---------------------------------------------------------------------------------------------
2236 IF ((KEY3_GLOB(1:4) == 'damg.AND.
')(CPT_MOD > 0)) THEN
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 ELSEIF ((key3_glob(1:4) ==
'DAMG').AND.(cpt_lawid > 0))
THEN
2242 WRITE(test_chain,
'(A,I3,A)')
"Damage: LAW",mlw,
"; Damage index"
2243 h3d_keyword_solid_scalar(j)%TEXT1 = test_chain
2244 ELSEIF ((key3_glob(1:4) == 'damg.AND..AND.
')(CPT_MOD == 0)(CPT_LAWID == 0)) THEN
2245 H3D_KEYWORD_SOLID_SCALAR(J)%TEXT1 = "Damage:Damage index"
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)
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)
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)
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)
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)
2296 IF(KEY2 == 'sph.OR.
' KEY2 =='elem
') THEN
2298 JMAX=MAX(H3D_NUM_KEY%SPH_SCALAR, H3D_NUM_KEY%SPH_TENSOR)
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
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 IF ((KEY3_GLOB(1:7) == 'failure.AND.
')(CPT_IRUP > 0)) THEN
2310 IRUP_H3D(CPT_H3D) = 1
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
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
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 IF ((KEY3_GLOB(1:7) == 'failure.AND.
')(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
2334 IRUP_H3D(CPT_H3D) = 1
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
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
2353 IF ( KEY3_GLOB == H3D_KEYWORD_SPH_SCALAR(J)%KEY3 )THEN
2355 ! ---------------------------------------------------------------------------------------------
2356 ! /H3D/ELEM/FAILURE Specific output name
2357 ! ---------------------------------------------------------------------------------------------
2358 IF((KEY3_GLOB(1:7) == 'failure.AND.
')(CPT_IRUP > 0)) THEN
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)))
2365 WRITE(TEST_CHAIN,'(a,a,a)
') "Failure:",TRIM(FAIL_NAME(IRUP_H3D(K))),"; Failure index"
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)
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)
2382 IF ( KEY3_GLOB == H3D_KEYWORD_SPH_TENSOR(J)%KEY3 )THEN
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)
2392 IF(KEY2 == 'beam.OR.
' KEY2 == 'spring.OR.
' KEY2 == 'truss.OR.
' KEY2 =='elem
') THEN
2394 JMAX=MAX(H3D_NUM_KEY%ONED_SCALAR, H3D_NUM_KEY%ONED_VECTOR, H3D_NUM_KEY%ONED_TENSOR,
2395 . H3D_NUM_KEY%ONED_TORSOR)
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
2408.OR..OR..OR.
IF ( IS_SCALAR == 1 IS_VECTOR == 1 IS_TENSOR == 1 IS_TORSOR == 1 ) THEN
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)
2415 IF ( H3D_KEYWORD_ONED%IS_IPT /= 0 ) THEN
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
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
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 )
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)
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)
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)
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)
2467 ENDDO ! DO K=1,CPT_H3D
2472 IF(KEY2 == 'quad.OR.
' KEY2 =='elem
') THEN
2474 JMAX=MAX(H3D_NUM_KEY%QUAD_SCALAR, H3D_NUM_KEY%QUAD_VECTOR, H3D_NUM_KEY%QUAD_TENSOR)
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
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
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
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
2522 IF(H3D_KEYWORD_QUAD%IS_UVAR == 1) THEN
2523 IF(IUVAR /= 0) UVAR_INPUT(CPT_H3D) = IUVAR
2526 IF(H3D_KEYWORD_QUAD%IS_IR == 1) THEN
2527 IF(IR /= 0) IR_INPUT(CPT_H3D) = IR
2530 IF(H3D_KEYWORD_QUAD%IS_IS == 1) THEN
2531 IF(IS /= 0) IS_INPUT(CPT_H3D) = IS
2534 IF(H3D_KEYWORD_QUAD%IS_IT == 1) THEN
2535 IF(IT /= 0) IT_INPUT(CPT_H3D) = IT
2538 IF(H3D_KEYWORD_QUAD%IS_ID == 1) THEN
2539 IF(ID /= 0) IDS_INPUT(CPT_H3D) = ID
2540 IF ((KEY3_GLOB(1:7) == 'failure.AND.
')(CPT_IRUP > 0)) THEN
2541 IRUP_H3D(CPT_H3D) = 1
2545 IF(H3D_KEYWORD_QUAD%IS_MODE == 1) THEN
2546 IF (MODE /= 0) MODES_INPUT(CPT_H3D) = MODE
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
2560 LAYER_INPUT(CPT_H3D) = -1
2561.AND.
IF (NLAY_MAX /= 0 IS_LAYER_ALL == 1) LAYER_INPUT(CPT_H3D) = K
2563 UVAR_INPUT(CPT_H3D) = -1
2564.AND.
IF (NUVAR_MAX /= 0 IS_UVAR_ALL == 1) UVAR_INPUT(CPT_H3D) = L
2566 IR_INPUT(CPT_H3D) = -1
2567.AND.
IF (IR_MAX /= 0 IS_IR_ALL == 1) IR_INPUT(CPT_H3D) = M
2569 IS_INPUT(CPT_H3D) = -1
2570.AND.
IF (IS_MAX /= 0 IS_IS_ALL == 1) IS_INPUT(CPT_H3D) = N
2572 IT_INPUT(CPT_H3D) = -1
2573.AND.
IF (IT_MAX /= 0 IS_IT_ALL == 1) IT_INPUT(CPT_H3D) = O
2575 IDS_INPUT(CPT_H3D) = -1
2576 IF(ID /= 0) IDS_INPUT(CPT_H3D) = ID
2577 IF ((KEY3_GLOB(1:7) == 'failure.AND.
')(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
2582 IRUP_H3D(CPT_H3D) = 1
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
2590 GAUSS_INPUT(CPT_H3D) = -1
2592 IS_AVAILABLE_KEY(CPT_H3D) = 1
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
2628.AND.
IF (IS_AVAILABLE_KEY(K) == 1 IS_SCALAR == 1)THEN
2630 ! ---------------------------------------------------------------------------------------------
2631 ! /H3D/ELEM/FAILURE Specific output name
2632 ! ---------------------------------------------------------------------------------------------
2633 IF ((KEY3_GLOB(1:7) == 'failure.AND.
')(CPT_IRUP > 0)) THEN
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)))
2639 WRITE(TEST_CHAIN,'(a,a,a)
') "Failure:",TRIM(FAIL_NAME(IRUP_H3D(K))),"; Failure index"
2641 H3D_KEYWORD_QUAD_SCALAR(J)%TEXT1 = TEST_CHAIN
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)
2653.AND.
IF (IS_AVAILABLE_KEY(K) == 1 IS_VECTOR == 1)THEN
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 )
2664.AND.
IF (IS_AVAILABLE_KEY(K) == 1 IS_TENSOR == 1)THEN
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 )
2679 IF(KEY2 == 'shell.OR.
' KEY2 =='elem.OR.
' KEY2 =='solid.OR.
'
2680 . KEY2 == 'brick.OR.
' KEY2 =='quad.OR.
' KEY2 =='beam .OR.
'
2681 . KEY2 == 'spring.OR.
' KEY2 =='truss.OR.
'KEY2 =='sph
') THEN
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)
2702 IF (ALLOCATED(IS_LAYER_MAT)) DEALLOCATE (IS_LAYER_MAT)
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,
2707 IF (ISPMD == 0) CALL ARRET(2)
2712 IF( H3D_DATA%IPART_SELECT == 0 ) CALL CREATE_H3D_PARTS_ALL(H3D_DATA,IPART)
2715 DO I=1,H3D_DATA%N_OUTP_H3D
2716 IF (H3D_DATA%OUTPUT_LIST(I)%OK == 1) THEN
2718 H3D_DATA%OUTPUT_LIST(I)%N_OUTP = CPT + 2
2720 H3D_DATA%OUTPUT_LIST(I)%N_OUTP = 0
2723 IF (IS_SKING > 0) THEN
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 )
2738 H3D_DATA%N_SCAL_CSE_FRICINT = NINEFRIC
2739 IF (H3D_DATA%N_SCAL_CSE_FRICINT > 0)THEN
2740 ! Allocate INTERFACE Remote EFRICFI Array
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
2748 IF(H3D_DATA%N_CSE_FRIC_INTER(I) >0) THEN
2751 LENR = LENR + NSNFI(I)%P(P)
2754 ALLOCATE(EFRICFI(I)%P(LENR),STAT=IERROR)
2756 CALL ANCMSG(MSGID=20,ANMODE=ANINFO)
2759 EFRICFI(I)%P(1:LENR)=ZERO
2765 IF (H3D_DATA%N_SCAL_CSE_FRIC > 0)THEN
2766 ! Allocate INTERFACE Remote EFRICGFI Array
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
2775 LENR = LENR + NSNFI(I)%P(P)
2778 ALLOCATE(EFRICGFI(I)%P(LENR),STAT=IERROR)
2780 CALL ANCMSG(MSGID=20,ANMODE=ANINFO)
2783 EFRICGFI(I)%P(1:LENR)=ZERO
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)