OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
lech3d.F File Reference
#include "implicit_f.inc"
#include "com04_c.inc"
#include "com08_c.inc"
#include "param_c.inc"
#include "scr17_c.inc"
#include "task_c.inc"
#include "com01_c.inc"
#include "spmd_c.inc"
#include "vect01_c.inc"

Go to the source code of this file.

Functions/Subroutines

subroutine lech3d (output, geo, igeo, ipm, ipart, h3d_data, multi_fvm, ipari, iparg, tag_skins6, mds_label, mds_output_table, mds_nmat, max_depvar, mds_ndepsvar, elbuf_str, stack, ibcl, iloadp, lloadp, loads, mat_param, pblast, igrpart, npc, tf, snpc, stf)

Function/Subroutine Documentation

◆ lech3d()

subroutine lech3d ( type(output_), intent(inout) output,
geo,
integer, dimension(npropgi,numgeo) igeo,
integer, dimension(npropmi,nummat) ipm,
integer, dimension(lipart1,*) ipart,
type (h3d_database) h3d_data,
type (multi_fvm_struct), intent(in) multi_fvm,
integer, dimension(npari,*) ipari,
integer, dimension(nparg,ngroup) iparg,
integer, dimension(*) tag_skins6,
character*64, dimension(1024,mds_nmat) mds_label,
integer, dimension(max_depvar,mds_nmat) mds_output_table,
integer mds_nmat,
integer max_depvar,
integer, dimension(*) mds_ndepsvar,
type(elbuf_struct_), dimension(ngroup), target elbuf_str,
type (stack_ply) stack,
integer, dimension(*) ibcl,
integer, dimension(*) iloadp,
integer, dimension(*) lloadp,
type (loads_), intent(in) loads,
type (matparam_struct_), dimension(nummat), intent(inout) mat_param,
type (pblast_) pblast,
type(group_), dimension(ngrpart), intent(in) igrpart,
integer, dimension(snpc), intent(in) npc,
dimension(stf), intent(in) tf,
integer, intent(in) snpc,
integer, intent(in) stf )

Definition at line 93 of file lech3d.F.

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