40 SUBROUTINE hm_yctrl(UNITAB,LSUBMODEL,IGRBRIC,IXC, IXTG,PTSHEL,PTSH3N,NUSPHCEL)
53#include "implicit_f.inc"
63 TYPE (UNIT_TYPE_),
INTENT(IN) ::UNITAB
64 TYPE (GROUP_) ,
DIMENSION(NGRBRIC) :: IGRBRIC
67 INTEGER IXTG(NIXTG,NUMELTG) ,IXC(NIXC,NUMELC)
68 INTEGER,
INTENT(INOUT) :: PTSHEL(NUMELC),PTSH3N(NUMELTG)
69 INTEGER,
INTENT(INOUT) :: NUSPHCEL
75 . ,NIP,NUVAR,,J1,NU,IP,N,NPSOLID,
76 . K,IHBE,NPG,ND,NVAR_SHELL,NPT,NE,
77 . NVSHELL0,NUSHELL0,NORTSHEL0,NUSOLID0,NELS,KK,JJ,
78 . ISOLNOD,ISOLID,IFRAM,IORTH,IREP,IGTYP,ISH3N,NDIR,NLAYERS,
79 . UID,SUB_ID,NLAY,,NPTS,NPTT,IFAIL,IRUPT_TYP,,
80 . ILAY,IMAT,NPT_MAX,NUBEAM0,NVSH_STRA,PROP,NSROT
81 INTEGER IGBR, JGBR, IOK
82 CHARACTER(LEN=NCHARKEY) :: KEY2,KEY3,KEY
86 INTEGER ID_ELEM,NB_INIBRI,NB_INISHE,NB_INISH3,NB_ELEMENTS,
87 . NB_INITRUSS,NB_INIBEAM,NB_INISPRI,NB_INIQUA,IE,KTRIELC,
88 . KTRIELTG,NELT,NB_INISPHCEL
90 INTEGER,
DIMENSION(:),
ALLOCATABLE :: KSYSUSRTG ,KSYSUSR,WORK,ITRI,
132 ALLOCATE (ksysusr(2*numelc))
133 ALLOCATE (ksysusrtg(2*numeltg))
134 ALLOCATE (work(70000))
135 nelt =
max(numelc, numeltg)
136 ALLOCATE(itri(nelt),index(2*nelt))
149 is_available = .false.
152 IF (isigi==-3.OR.isigi==-4.OR.isigi==-5)
THEN
159 IF ( nb_inibri > 0 )
THEN
168 SELECT CASE (key(1:len_trim(key)))
172 CALL hm_get_intv(
'inibri_fill_count',nb_elements,is_available,lsubmodel)
173 numsol = numsol + nb_elements
178 CALL hm_get_intv(
'inibri_epsp_count',nb_elements,is_available,lsubmodel)
179 numsol = numsol + nb_elements
183 CALL hm_get_intv(
'inibri_ener_count',nb_elements,is_available,lsubmodel)
184 numsol = numsol + nb_elements
188 CALL hm_get_intv(
'inibri_dens_count',nb_elements,is_available,lsubmodel)
189 numsol = numsol + nb_elements
193 CALL hm_get_intv('inibri_stress_count
',NB_ELEMENTS,IS_AVAILABLE,LSUBMODEL)
194 NUMSOL = NUMSOL + NB_ELEMENTS
198 CALL HM_GET_INTV('inibri_aux_count
',NB_ELEMENTS,IS_AVAILABLE,LSUBMODEL)
199 NUMSOL = NUMSOL + NB_ELEMENTS
202 CALL HM_GET_INT_ARRAY_INDEX('brick_id
',ID_ELEM,J,IS_AVAILABLE,LSUBMODEL)
203 CALL HM_GET_INT_ARRAY_INDEX('nb_integr
',NPT,J,IS_AVAILABLE,LSUBMODEL)
204 CALL HM_GET_INT_ARRAY_INDEX('isolnod
',ISOLNOD,J,IS_AVAILABLE,LSUBMODEL)
205 CALL HM_GET_INT_ARRAY_INDEX('isolid
',JJHBE,J,IS_AVAILABLE,LSUBMODEL)
206 CALL HM_GET_INT_ARRAY_INDEX('nvars
',NUVAR,J,IS_AVAILABLE,LSUBMODEL)
209 NUSOLID = MAX(NUSOLID,NPT*NUVAR)
210 ENDDO ! DO J=1,NB_ELEMENTS
214 CALL HM_GET_INTV('inibri_strs_f_count
',NB_ELEMENTS,IS_AVAILABLE,LSUBMODEL)
217 CALL HM_GET_INT_ARRAY_INDEX('nb_integr
',NPT,J,IS_AVAILABLE,LSUBMODEL)
220 NVSOLID1 = MAX (NVSOLID1,NPT*9 + 4)
221 ENDDO ! DO J=1,NB_ELEMENTS
225 CALL HM_GET_INTV('inibri_strs_fglo_count
',NB_ELEMENTS,IS_AVAILABLE,LSUBMODEL)
228 CALL HM_GET_INT_ARRAY_INDEX('nb_integr
',NPT,J,IS_AVAILABLE,LSUBMODEL)
229 CALL HM_GET_INT_ARRAY_INDEX('grbric_id
',IGBR,J,IS_AVAILABLE,LSUBMODEL)
235 IF (IGBR == IGRBRIC(K)%ID) THEN
242 CALL ANCMSG(MSGID=1611,MSGTYPE=MSGERROR,ANMODE=ANINFO,C1='strs_fglo
',I1=IGBR)
244 NUMSOL = NUMSOL + IGRBRIC(JGBR)%NENTITY
248 NVSOLID1 = MAX (NVSOLID1,NPT*9 + 4)
249 ENDDO ! DO J=1,NB_ELEMENTS
253 CALL HM_GET_INTV('inibri_stra_f_count
',NB_ELEMENTS,IS_AVAILABLE,LSUBMODEL)
255 NUMSOL = NUMSOL + NB_ELEMENTS
257 CALL HM_GET_INT_ARRAY_INDEX('nb_integr
',NPT,J,IS_AVAILABLE,LSUBMODEL)
258 NVSOLID2 = MAX(NVSOLID2, MAX(1,NPT)*6)
259 ENDDO ! DO J=1,NB_ELEMENTS
263 CALL HM_GET_INTV('inibri_stra_fglo_count
',NB_ELEMENTS,IS_AVAILABLE,LSUBMODEL)
265 NUMSOL = NUMSOL + NB_ELEMENTS
267 CALL HM_GET_INT_ARRAY_INDEX('nb_integr
',NPT,J,IS_AVAILABLE,LSUBMODEL)
268 NVSOLID2 = MAX(NVSOLID2, MAX(1,NPT)*6)
269 ENDDO ! DO J=1,NB_ELEMENTS
273 CALL HM_GET_INTV('inibri_fail_count
',NB_ELEMENTS,IS_AVAILABLE,LSUBMODEL)
275 NUMSOL = NUMSOL + NB_ELEMENTS
277 CALL HM_GET_INT_ARRAY_INDEX('nlay
',NLAY,J,IS_AVAILABLE,LSUBMODEL)
278 CALL HM_GET_INT_ARRAY_INDEX('nptr
',NPTR,J,IS_AVAILABLE,LSUBMODEL)
279 CALL HM_GET_INT_ARRAY_INDEX('npts
',NPTS,J,IS_AVAILABLE,LSUBMODEL)
280 CALL HM_GET_INT_ARRAY_INDEX('nptt
',NPTT,J,IS_AVAILABLE,LSUBMODEL)
281 CALL HM_GET_INT_ARRAY_INDEX('nvar',NVAR_RUPT,J,IS_AVAILABLE,LSUBMODEL)
282 NVSOLID4 = MAX(NVSOLID4,NPTR*NPTS*NPTT*NLAY*5*NVAR_RUPT)
283 ENDDO ! DO J=1,NB_ELEMENTS
287 CALL HM_GET_INTV('inibri_scale_yld_count
',NB_ELEMENTS,IS_AVAILABLE,LSUBMODEL)
290 NUMSOL = NUMSOL + NB_ELEMENTS
293 CALL HM_GET_INT_ARRAY_INDEX('nptr
',NPTR,J,IS_AVAILABLE,LSUBMODEL)
294 CALL HM_GET_INT_ARRAY_INDEX('npts
',NPTS,J,IS_AVAILABLE,LSUBMODEL)
295 CALL HM_GET_INT_ARRAY_INDEX('nptt
',NPTT,J,IS_AVAILABLE,LSUBMODEL)
296 CALL HM_GET_INT_ARRAY_INDEX('nlay
',NLAY,J,IS_AVAILABLE,LSUBMODEL)
297 NVSOLID5 = MAX(NVSOLID5,NPTR*NPTS*NPTT*NLAY + 7)
298 ENDDO ! DO J=1,NB_ELEMENTS
302 CALL HM_GET_INTV('inibri_ortho_count
',NB_ELEMENTS,IS_AVAILABLE,LSUBMODEL)
304 NUMSOL = NUMSOL + NB_ELEMENTS
306 CALL HM_GET_INT_ARRAY_INDEX('nb_layer
',NLAYERS,J,IS_AVAILABLE,LSUBMODEL)
307 NVSOLID3 = MAX(NVSOLID3,NLAYERS * 6)
308 ENDDO ! DO J=1,NB_ELEMENTS
312 CALL HM_GET_INTV('inibri_eref_count
',NB_ELEMENTS,IS_AVAILABLE,LSUBMODEL)
314 NUMSOL = NUMSOL + NB_ELEMENTS
316 CALL HM_GET_INT_ARRAY_INDEX('isolnod
',ISOLNOD,J,IS_AVAILABLE,LSUBMODEL)
317 CALL HM_GET_INT_ARRAY_INDEX('nsrot
',NSROT,J,IS_AVAILABLE,LSUBMODEL)
319 NVSOLID6 = MAX(NVSOLID6, (ISOLNOD+NSROT)*3)
320 ENDDO ! DO J=1,NB_ELEMENTS
324 END SELECT ! SELECT CASE(KEY)
326 ENDDO ! DO I=1,NB_INIBRI
327 ENDIF ! IF ( NB_INIBRI > 0 )
335 CALL HM_OPTION_COUNT('/inishe
', NB_INISHE)
336 IF ( NB_INISHE > 0 ) THEN
338 IF (KTRIELC == 0) THEN
341 ITRI(IE) = IXC(NIXC,IE)
343 CALL MY_ORDERS(0,WORK,ITRI,INDEX,NUMELC,1)
346 KSYSUSR(J) =IXC(NIXC,IE)
352 ! Start reading /INISHE card
353 CALL HM_OPTION_START('/inishe
')
358 CALL HM_OPTION_READ_KEY(LSUBMODEL,
362 IF (KEY2 /= ' ') GLOB = .TRUE.
364 SELECT CASE (KEY(1:LEN_TRIM(KEY)))
369 CALL HM_GET_INTV('inishe_epsp_f_count
',NB_ELEMENTS,IS_AVAILABLE,LSUBMODEL)
372 ! Reading --- ID_ELEM, NIP, NPG, THK ---
373 CALL HM_GET_INT_ARRAY_INDEX('nb_integr
',NIP,J,IS_AVAILABLE,LSUBMODEL)
374 CALL HM_GET_INT_ARRAY_INDEX('npg
',NPG,J,IS_AVAILABLE,LSUBMODEL)
375 CALL HM_GET_INT_ARRAY_INDEX('shell_id
',ID_ELEM,J,IS_AVAILABLE,LSUBMODEL)
377 IE=UEL2SYS(ID_ELEM,KSYSUSR,NUMELC)
379.AND.
IF(IE > 0 PTSHEL(IE)== 0 ) THEN
380 NUMSHEL = NUMSHEL + 1
384 NVAR_SHELL = MAX(NVAR_SHELL, MAX(1,NPG)*9)
386 NVAR_SHELL = MAX(NVAR_SHELL, MAX(1,NIP)*MAX(1,NPG)*6)
389 ENDDO ! DO J=1,NB_ELEMENTS
394 CALL HM_GET_INTV('inishe_strs_f_glob_count
',NB_ELEMENTS,IS_AVAILABLE,LSUBMODEL)
398 ! Reading --- ID_ELEM, NIP, NPG, THK ---
399 CALL HM_GET_INT_ARRAY_INDEX('shell_id
',ID_ELEM,J,IS_AVAILABLE,LSUBMODEL)
400 CALL HM_GET_INT_ARRAY_INDEX('nb_integr
',NIP,J,IS_AVAILABLE,LSUBMODEL)
401 CALL HM_GET_INT_ARRAY_INDEX('npg
',NPG,J,IS_AVAILABLE,LSUBMODEL)
403 IE=UEL2SYS(ID_ELEM,KSYSUSR,NUMELC)
405.AND.
IF(IE > 0 PTSHEL(IE)== 0 ) THEN
406 NUMSHEL = NUMSHEL + 1
410 NVAR_SHELL = MAX(NVAR_SHELL, MAX(1,NPG)*13)
412 NVAR_SHELL = MAX(NVAR_SHELL, MAX(1,NIP)*MAX(1,NPG)*8)
415 ENDDO ! DO J=1,NB_ELEMENTS
417.NOT.
ELSEIF ( GLOB ) THEN
419 CALL HM_GET_INTV('inishe_strs_f_count
',NB_ELEMENTS,IS_AVAILABLE,LSUBMODEL)
422 ! Reading CARD_1 --- ID_ELEM, NIP, NPG, THK ---
423 CALL HM_GET_INT_ARRAY_INDEX('nb_integr
',NIP,J,IS_AVAILABLE,LSUBMODEL)
424 CALL HM_GET_INT_ARRAY_INDEX('npg
',NPG,J,IS_AVAILABLE,LSUBMODEL)
425 CALL HM_GET_INT_ARRAY_INDEX('shell_id
',ID_ELEM,J,IS_AVAILABLE,LSUBMODEL)
426 IE=UEL2SYS(ID_ELEM,KSYSUSR,NUMELC)
430.AND.
IF(IE > 0 PTSHEL(IE)== 0 ) THEN
431 NUMSHEL = NUMSHEL + 1
435 NVAR_SHELL = MAX(NVAR_SHELL, MAX(1,NPG)*9)
437 NVAR_SHELL = MAX(NVAR_SHELL, MAX(1,NIP)*MAX(1,NPG)*6)
440 ENDDO ! DO J=1,NB_ELEMENTS
447 CALL HM_GET_INTV('inishe_stra_f_glob_count
',NB_ELEMENTS,IS_AVAILABLE,LSUBMODEL)
450 CALL HM_GET_INT_ARRAY_INDEX('nb_integr
',NIP,J,IS_AVAILABLE,LSUBMODEL)
451 CALL HM_GET_INT_ARRAY_INDEX('npg
',NPG,J,IS_AVAILABLE,LSUBMODEL)
452 CALL HM_GET_INT_ARRAY_INDEX('shell_id
',ID_ELEM,J,IS_AVAILABLE,LSUBMODEL)
453 IE=UEL2SYS(ID_ELEM,KSYSUSR,NUMELC)
457.AND.
IF(IE > 0 PTSHEL(IE)== 0 ) THEN
458 NUMSHEL = NUMSHEL + 1
462 NVSH_STRA = MAX(NVSH_STRA,2*MAX(1,NPG)*7)
463!! NVSH_STRA = MAX(NVSH_STRA,NIP*MAX(1,NPG)*7)
464 ENDDO ! DO J=1,NB_ELEMENTS
466.NOT.
ELSEIF ( GLOB ) THEN
468 CALL HM_GET_INTV('inishe_stra_f_count
',NB_ELEMENTS,IS_AVAILABLE,LSUBMODEL)
471 CALL HM_GET_INT_ARRAY_INDEX('npg
',NPG,J,IS_AVAILABLE,LSUBMODEL)
472 CALL HM_GET_INT_ARRAY_INDEX('shell_id
',ID_ELEM,J,IS_AVAILABLE,LSUBMODEL)
473 IE=UEL2SYS(ID_ELEM,KSYSUSR,NUMELC)
476 NVAR_SHELL = MAX(NVAR_SHELL, MAX(1,NPG)*8)
477.AND.
IF(IE > 0 PTSHEL(IE)== 0 ) THEN
478 NUMSHEL = NUMSHEL + 1
481 ENDDO ! DO J=1,NB_ELEMENTS
486 CALL HM_GET_INTV('no_elems
',NB_ELEMENTS,IS_AVAILABLE,LSUBMODEL)
489 CALL HM_GET_INT_ARRAY_INDEX('shell_id
',ID_ELEM,J,IS_AVAILABLE,LSUBMODEL)
490 IE=UEL2SYS(ID_ELEM,KSYSUSR,NUMELC)
492.AND.
IF(IE > 0 PTSHEL(IE)== 0 ) THEN
493 NUMSHEL = NUMSHEL + 1
501 CALL HM_GET_INTV('no_blocks',nb_elements,is_available,lsubmodel)
505 ie=uel2sys(id_elem,ksysusr,numelc)
507 IF(ie > 0 .AND. ptshel(ie)== 0 )
THEN
508 numshel = numshel + 1
515 CALL hm_get_intv(
'inishe_ortho_count',nb_elements,is_available,lsubmodel)
519 ie=uel2sys(id_elem,ksysusr,numelc)
521 IF(ie > 0 .AND. ptshel(ie)== 0 )
THEN
522 numshel = numshel + 1
530 ie=uel2sys(id_elem,ksysusr,numelc)
532 IF(ie > 0 .AND. ptshel(ie)== 0 )
THEN
533 numshel = numshel + 1
537 nvar_shell =
max(nvar_shell, 9)
539 nvar_shell =
max(nvar_shell,
max(1,nip)*24)
542 nortshel =
max(nortshel, nortshel0 +
max(1,nip)*2)
549 CALL hm_get_intv(
'inishe_orth_loc_count',nb_elements,is_available,lsubmodel)
556 ie=uel2sys(id_elem,ksysusr,numelc)
558 IF(ie > 0 .AND. ptshel(ie)== 0 )
THEN
559 numshel = numshel + 1
563 nvar_shell =
max(nvar_shell,
max(1,npg)*9)
565 nvar_shell =
max(nvar_shell,
max(1,nip)*24)
568 nortshel =
max(nortshel, nortshel0 +
max(1,nip)*2)
569 IF (ndir == 2) nortshel =
max(nortshel, nortshel0 +
max(1,nip)*4)
574 CALL hm_get_intv(
'inishe_scale_yld_count',nb_elements,is_available,lsubmodel)
581 ie=uel2sys(id_elem,ksysusr,numelc)
583 IF(ie > 0 .AND. ptshel(ie)== 0 )
THEN
584 numshel = numshel + 1
588 nvar_shell =
max(nvar_shell,
max(1,npg)*9)
590 nvar_shell =
max(nvar_shell,
max(1,nip)*
max(1,npg)*6)
592 nvshell2 =
max(nvshell2,
max(1,npg)*
max(1,nip))
597 CALL hm_get_intv(
'inishe_aux_count',nb_elements,is_available,lsubmodel)
605 ie=uel2sys(id_elem,ksysusr,numelc)
607 IF(ie > 0 .AND. ptshel(ie)== 0 )
THEN
608 numshel = numshel + 1
612 nvar_shell =
max(nvar_shell,
max(1,npg)*9)
614 nvar_shell =
max(nvar_shell,
max(1,nip)*24)
616 nushell =
max(nushell,nushell0+
max(1,npg)*
max(1,nip)*nuvar)
621 CALL hm_get_intv(
'inishe_fail_count',nb_elements,is_available,lsubmodel)
630 ie=uel2sys(id_elem,ksysusr,numelc)
632 IF(ie > 0 .AND. ptshel(ie)== 0 )
THEN
633 numshel = numshel + 1
639 npt_max =
max(nptt,nlay)
640 nvar_shell =
max(nvar_shell,
max(1,nlay)*24)
641 nvshell1 =
max(nvshell1,npg*npt_max*5*nvar_rupt)
656 IF ( nb_inish3 > 0 )
THEN
658 IF (ktrieltg==0)
THEN
661 itri(ie) = ixtg(nixtg,ie)
663 CALL my_orders(0,work,itri,index,numeltg,1)
666 ksysusrtg(j) =ixtg(nixtg,ie)
667 ksysusrtg(numeltg+j)=ie
681 IF (key2 /=
' ') glob = .true.
683 SELECT CASE (key(1:len_trim(key)))
687 CALL hm_get_intv(
'inish3_epsp_f_count',nb_elements,is_available,lsubmodel)
695 ie = uel2sys(id_elem,ksysusrtg,numeltg)
697 IF(ie > 0 .AND. ptsh3n(ie) == 0)
THEN
698 numsh3n = numsh3n + 1
703 nvar_shell =
max(nvar_shell,
max(1,npg)*9)
705 nvar_shell =
max(nvar_shell,
max(1,nip)*
max(1,npg)*6)
714 CALL hm_get_intv(
'inish3_strs_f_glob_count',nb_elements,is_available,lsubmodel)
721 ie = uel2sys(id_elem,ksysusrtg,numeltg)
723 IF(ie > 0 .AND. ptsh3n(ie) == 0)
THEN
724 numsh3n = numsh3n + 1
729 nvar_shell =
max(nvar_shell,
max(1,npg)*13)
731 nvar_shell =
max(nvar_shell,
max(1,nip)*
max(1,npg)*8)
737 ELSEIF ( .NOT. glob )
THEN
739 CALL hm_get_intv(
'inish3_strs_f_count',nb_elements,is_available,lsubmodel)
746 IE = UEL2SYS(ID_ELEM,KSYSUSRTG,NUMELTG)
748.AND.
IF(IE > 0 PTSH3N(IE) == 0) THEN
749 NUMSH3N = NUMSH3N + 1
754 NVAR_SHELL = MAX(NVAR_SHELL, MAX(1,NPG)*9)
756 NVAR_SHELL = MAX(NVAR_SHELL, MAX(1,NIP)*MAX(1,NPG)*6)
759 ENDDO ! DO J=1,NB_ELEMENTS
766 CALL HM_GET_INTV('inish3_stra_f_glob_count
',NB_ELEMENTS,IS_AVAILABLE,LSUBMODEL)
769 CALL HM_GET_INT_ARRAY_INDEX('nb_integr
',NIP,J,IS_AVAILABLE,LSUBMODEL)
770 CALL HM_GET_INT_ARRAY_INDEX('npg
',NPG,J,IS_AVAILABLE,LSUBMODEL)
771 CALL HM_GET_INT_ARRAY_INDEX('shell_id
',ID_ELEM,J,IS_AVAILABLE,LSUBMODEL)
772 IE = UEL2SYS(ID_ELEM,KSYSUSRTG,NUMELTG)
774.AND.
IF(IE > 0 PTSH3N(IE) == 0) THEN
775 NUMSH3N = NUMSH3N + 1
781 NVSH_STRA = MAX(NVSH_STRA,2*MAX(1,NPG)*7)
782!! NVSH_STRA = MAX(NVSH_STRA,NIP*MAX(1,NPG)*7)
783 ENDDO ! DO J=1,NB_ELEMENTS
785.NOT.
ELSEIF ( GLOB ) THEN
787 CALL HM_GET_INTV('inish3_stra_f_count
',NB_ELEMENTS,IS_AVAILABLE,LSUBMODEL)
790 CALL HM_GET_INT_ARRAY_INDEX('npg
',NPG,J,IS_AVAILABLE,LSUBMODEL)
791 CALL HM_GET_INT_ARRAY_INDEX('shell_id
',ID_ELEM,J,IS_AVAILABLE,LSUBMODEL)
792 IE = UEL2SYS(ID_ELEM,KSYSUSRTG,NUMELTG)
794.AND.
IF(IE > 0 PTSH3N(IE) == 0) THEN
795 NUMSH3N = NUMSH3N + 1
799 NVAR_SHELL = MAX(NVAR_SHELL, MAX(1,NPG)*8)
800 ENDDO ! DO J=1,NB_ELEMENTS
805 CALL HM_GET_INTV('no_elems
',NB_ELEMENTS,IS_AVAILABLE,LSUBMODEL)
808 CALL HM_GET_INT_ARRAY_INDEX('shell_id
',ID_ELEM,J,IS_AVAILABLE,LSUBMODEL)
809 IE = UEL2SYS(ID_ELEM,KSYSUSRTG,NUMELTG)
811.AND.
IF(IE > 0 PTSH3N(IE) == 0) THEN
812 NUMSH3N = NUMSH3N + 1
815 ENDDO ! DO J=1,NB_ELEMENTS
819 CALL HM_GET_INTV('no_blocks
',NB_ELEMENTS,IS_AVAILABLE,LSUBMODEL)
822 CALL HM_GET_INT_ARRAY_INDEX('shell_id
',ID_ELEM,J,IS_AVAILABLE,LSUBMODEL)
823 IE = UEL2SYS(ID_ELEM,KSYSUSRTG,NUMELTG)
825.AND.
IF(IE > 0 PTSH3N(IE) == 0) THEN
826 NUMSH3N = NUMSH3N + 1
829 ENDDO ! DO J=1,NB_ELEMENTS
833 CALL HM_GET_INTV('inish3_ortho_count
',NB_ELEMENTS,IS_AVAILABLE,LSUBMODEL)
836 CALL HM_GET_INT_ARRAY_INDEX('nb_integr
',NIP,J,IS_AVAILABLE,LSUBMODEL)
837 CALL HM_GET_INT_ARRAY_INDEX('shell_id
',ID_ELEM,J,IS_AVAILABLE,LSUBMODEL)
838 IE = UEL2SYS(ID_ELEM,KSYSUSRTG,NUMELTG)
840.AND.
IF(IE > 0 PTSH3N(IE) == 0) THEN
841 NUMSH3N = NUMSH3N + 1
846 NVAR_SHELL = MAX(NVAR_SHELL, 9)
848 NVAR_SHELL = MAX(NVAR_SHELL, MAX(1,NIP)*24)
851 NORTSHEL = MAX(NORTSHEL, NORTSHEL0 + MAX(1,NIP)*2)
853 ENDDO ! DO J=1,NB_ELEMENTS
857 CALL HM_GET_INTV('inish3_orth_loc_count
',NB_ELEMENTS,IS_AVAILABLE,LSUBMODEL)
861 CALL HM_GET_INT_ARRAY_INDEX('nb_lay
',NIP,J,IS_AVAILABLE,LSUBMODEL)
862 CALL HM_GET_INT_ARRAY_INDEX('npg
',NPG,J,IS_AVAILABLE,LSUBMODEL)
863 CALL HM_GET_INT_ARRAY_INDEX('ndir
',NDIR,J,IS_AVAILABLE,LSUBMODEL)
864 CALL HM_GET_INT_ARRAY_INDEX('shell_id
',ID_ELEM,J,IS_AVAILABLE,LSUBMODEL)
865 IE = UEL2SYS(ID_ELEM,KSYSUSRTG,NUMELTG)
867.AND.
IF(IE > 0 PTSH3N(IE) == 0) THEN
868 NUMSH3N = NUMSH3N + 1
873 NVAR_SHELL = MAX(NVAR_SHELL, MAX(1,NPG)*9)
875 NVAR_SHELL = MAX(NVAR_SHELL, MAX(1,NIP)*24)
878 NORTSHEL = MAX(NORTSHEL, NORTSHEL0 + MAX(1,NIP)*2)
879 IF (NDIR == 2) NORTSHEL = MAX(NORTSHEL, NORTSHEL0 + MAX(1,NIP)*4)
880 ENDDO ! DO J=1,NB_ELEMENTS
884 CALL HM_GET_INTV('inish3_scale_yld_count
',NB_ELEMENTS,IS_AVAILABLE,LSUBMODEL)
887 CALL HM_GET_INT_ARRAY_INDEX('nb_integr
',NIP,J,IS_AVAILABLE,LSUBMODEL)
888 CALL HM_GET_INT_ARRAY_INDEX('npg
',NPG,J,IS_AVAILABLE,LSUBMODEL)
889 CALL HM_GET_INT_ARRAY_INDEX('shell_id
',ID_ELEM,J,IS_AVAILABLE,LSUBMODEL)
890 IE = UEL2SYS(ID_ELEM,KSYSUSRTG,NUMELTG)
892.AND.
IF(IE > 0 PTSH3N(IE) == 0) THEN
893 NUMSH3N = NUMSH3N + 1
898 NVAR_SHELL = MAX(NVAR_SHELL, MAX(1,NPG)*9)
900 NVAR_SHELL = MAX(NVAR_SHELL, MAX(1,NIP)*MAX(1,NPG)*6)
902 NVSHELL2 = MAX(NVSHELL2,MAX(1,NPG)*MAX(1,NIP))
903 ENDDO ! DO J=1,NB_ELEMENTS
907 CALL HM_GET_INTV('inish3_aux_count
',NB_ELEMENTS,IS_AVAILABLE,LSUBMODEL)
910 CALL HM_GET_INT_ARRAY_INDEX('nb_integr
',NIP,J,IS_AVAILABLE,LSUBMODEL)
911 CALL HM_GET_INT_ARRAY_INDEX('npg
',NPG,J,IS_AVAILABLE,LSUBMODEL)
912 CALL HM_GET_INT_ARRAY_INDEX('nvars
',NUVAR,J,IS_AVAILABLE,LSUBMODEL)
913 CALL HM_GET_INT_ARRAY_INDEX('shell_id
',ID_ELEM,J,IS_AVAILABLE,LSUBMODEL)
914 IE = UEL2SYS(ID_ELEM,KSYSUSRTG,NUMELTG)
916.AND.
IF(IE > 0 PTSH3N(IE) == 0) THEN
917 NUMSH3N = NUMSH3N + 1
922 NVAR_SHELL = MAX(NVAR_SHELL, MAX(1,NPG)*9)
924 NVAR_SHELL = MAX(NVAR_SHELL, MAX(1,NIP)*24)
926 NUSHELL = MAX(NUSHELL,NUSHELL0+MAX(1,NPG)*MAX(1,NIP)*NUVAR)
927 ENDDO ! DO J=1,NB_ELEMENTS
931 CALL HM_GET_INTV('inish3_fail_count
',NB_ELEMENTS,IS_AVAILABLE,LSUBMODEL)
933 CALL HM_GET_INT_ARRAY_INDEX('nlay
',NLAY,J,IS_AVAILABLE,LSUBMODEL)
934 CALL HM_GET_INT_ARRAY_INDEX('npg
',NPG,J,IS_AVAILABLE,LSUBMODEL)
935 CALL HM_GET_INT_ARRAY_INDEX('nptt
',NPTT,J,IS_AVAILABLE,LSUBMODEL)
936 CALL HM_GET_INT_ARRAY_INDEX('lay_id
',ILAY,J,IS_AVAILABLE,LSUBMODEL)
937 CALL HM_GET_INT_ARRAY_INDEX('nvar',NVAR_RUPT,J,IS_AVAILABLE,LSUBMODEL)
938 CALL HM_GET_INT_ARRAY_INDEX('shell_id
',ID_ELEM,J,IS_AVAILABLE,LSUBMODEL)
939 IE = UEL2SYS(ID_ELEM,KSYSUSRTG,NUMELTG)
941.AND.
IF(IE > 0 PTSH3N(IE) == 0) THEN
942 NUMSH3N = NUMSH3N + 1
948 NPT_MAX = MAX(NPTT,NLAY)
949 NVAR_SHELL = MAX(NVAR_SHELL, MAX(1,NLAY)*24)
950 NVSHELL1 = MAX(NVSHELL1,NPG*NPT_MAX*5*NVAR_RUPT)
951 ENDDO ! DO J=1,NB_ELEMENTS
956 END SELECT ! SELECT CASE(KEY)
958 ENDDO ! DO I=1,NB_INISH3
959 ENDIF ! IF ( NB_INISH3 > 0 )
963 INISHVAR1 = NVAR_SHELL + NVSHELL0 + NPT
964 NVSHELL = INISHVAR1 + NVSH_STRA
970 CALL HM_OPTION_COUNT('/initruss
', NB_INITRUSS)
972 IF ( NB_INITRUSS > 0 ) THEN
973 ! Start reading /INITRUSS card
974 CALL HM_OPTION_START('/initruss
')
978 CALL HM_OPTION_READ_KEY(LSUBMODEL,
981 SELECT CASE (KEY(1:LEN_TRIM(KEY)))
985 CALL HM_GET_INTV('no_of_elems',nb_elements,is_available,lsubmodel)
987 numtrus = numtrus + nb_elements
989 nvtruss = nvtruss + 6*nb_elements
1004 IF ( nb_inibeam > 0 )
THEN
1014 SELECT CASE (key(1:len_trim(key)))
1020 CALL hm_get_intv(
'inibeam_count',nb_elements,is_available,lsubmodel)
1022 numbeam = numbeam + nb_elements
1029 nvbeam = nvbeam + 11
1030 IF (igtyp == 3)
THEN
1032 ELSEIF (igtyp == 18)
THEN
1033 nvbeam = nvbeam + 4*nip
1041 CALL hm_get_intv(
'inibeam_count',nb_elements,is_available,lsubmodel)
1043 numbeam = numbeam + nb_elements
1051 IF (igtyp == 18)
THEN
1052 nubeam =
max(nubeam,nubeam0 + nip*nuvar)
1070 IF ( nb_inispri > 0 )
THEN
1080 SELECT CASE (key(1:len_trim(key)))
1086 CALL hm_get_intv(
'size_spring',nb_elements,is_available,lsubmodel)
1088 numspri = numspri + nb_elements
1096 IF (igtyp == 4)
THEN
1098 nvspri = nvspri + 10
1100 ELSEIF (igtyp == 12)
THEN
1102 nvspri = nvspri + 11
1104 ELSEIF (igtyp == 26)
THEN
1108 ELSEIF (igtyp == 8 .OR. igtyp == 13 .OR.
1109 . igtyp == 23 .OR. igtyp == 25)
THEN
1111 nvspri = nvspri + 43
1114 ELSEIF (igtyp == 29 .OR. igtyp == 30 .OR. igtyp == 31 .OR.
1115 . igtyp == 32 .OR. igtyp == 33 .OR. igtyp == 35 .OR.
1116 . igtyp == 36 .OR. igtyp == 44 .OR. igtyp == 45 .OR.
1119 nvspri = nvspri + 16 + nuvar
1139 IF ( nb_iniqua > 0 )
THEN
1148 CALL hm_get_intv(
'no_blocks',nb_elements,is_available,lsubmodel)
1151 numquad = numquad + nb_elements
1164 IF ( nb_inisphcel > 0 )
THEN
1173 CALL hm_get_intv(
'no_blocks',nb_elements,is_available,lsubmodel)
1175 numsphy = numsphy + nb_elements
1177 SELECT CASE (key(1:len_trim(key)))
1184 ! Reading --- ID_ELEM, Prop ... ---
1185 CALL HM_GET_INT_ARRAY_INDEX('nvarsph
' ,NUVAR,J,IS_AVAILABLE,LSUBMODEL)
1187 NUSPHCEL = MAX(NUSPHCEL,NUVAR)
1188 ENDDO ! DO J=1,NB_ELEMENTS
1192 END SELECT ! SELECT CASE(KEY)
1194 ENDDO ! DO I=1,NB_INISPHCEL
1196 ENDIF ! IF ( NB_INISPHCEL > 0 )
1200.OR..OR.
ENDIF ! IF (ISIGI==-3ISIGI==-4ISIGI==-5)
1204 CALL ANCMSG(MSGID=557,
1206 . ANMODE=ANINFO_BLIND_1)