65
66
67
75 USE matparam_def_mod
77 use element_mod , only : nixs,nixq,nixc,nixt,nixp,nixr,nixtg
78
79
80
81#include "implicit_f.inc"
82
83
84
85#include "com01_c.inc"
86#include "com04_c.inc"
87#include "drape_c.inc"
88#include "param_c.inc"
89#include "scr17_c.inc"
90#include "scry_c.inc"
91#include "vect01_c.inc"
92
93
94
95 TYPE (UNIT_TYPE_),INTENT(IN) ::UNITAB
96 INTEGER IXS(NIXS,*), IXQ(NIXQ,*) ,IXC(NIXC,*),
97 . IGEO(NPROPGI,*) , (NIXT,*) ,IXP(NIXP,*), IXR(NIXR,*),
98 . IXTG(NIXTG,*) , INDEX(*) ,ITRI(*) ,IPM(NPROPMI,*),
99 . KSYSUSR(*) , IDRAPE(NPLYMAX,*)
100 INTEGER NSIGI, , NSIGS, NSIGSPH, NSIGRS,
101 . ISOLNODD00(*), NSIGBEAM, NSIGTRUSS, STRSGLOB(*),
102 . STRAGLOB(*), ORTHOGLOB(*), ISIGSH, IYLDINI, FAIL_INI(5),
103 . IUSOLYLD, IUSER,VARMAX
104 INTEGER ID_SIGSH(*), ID_SOLID_SIGI(*), ID_QUAD_SIGI(*)
105 INTEGER ID_SIGSPRI(*), ID_SIGBEAM(*), ID_SIGTRUSS(*)
106 INTEGER WORK(*)
107 INTEGER NIBRICK, NIQUAD, NISHELL, , NISPRING, NIBEAM, NITRUSS
109 . geo(*),pm(npropm,*),rtrans(ntransf,*),
110 . sigi(nsigs,*),sigsh(
max(1,nsigsh),*),sigtruss(nsigtruss,*),
111 . sigsp(nsigi,*),sigsph
112
113 TYPE(SUBMODEL_DATA) LSUBMODEL(*)
114 TYPE (GROUP_) , DIMENSION(NGRBRIC) :: IGRBRIC
115
116 TYPE(MAPPING_STRUCT_) :: MAP_TABLES
117 INTEGER, DIMENSION(NPARG,NGROUP) ,INTENT(IN):
118INTEGER, INTENT(INOUT) :: PTSHEL(NUMELC),PTSH3N(NUMELTG)
119 TYPE (STACK_PLY) :: STACK
120 INTEGER, INTENT(IN) :: IWORKSH(3,NUMELC + NUMELTG)
121 INTEGER, INTENT(IN) :: IOUT
122 TYPE (MATPARAM_STRUCT_) ,DIMENSION(NUMMAT) ,INTENT(INOUT) :: MAT_PARAM
123 INTEGER, INTENT(INOUT) :: NISPHCEL
124 INTEGER, INTENT(IN) :: NUMSPH
125 INTEGER, INTENT(IN) :: NISP
126 INTEGER, INTENT(IN) :: KXSP(NISP,NUMSPH)
127 INTEGER, INTENT(INOUT) :: ID_SIGSPH(NUMSPH)
128
129
130
131 INTEGER K, N, I,J, L,, ISOLNOD,IGTYP,
132 . IHBE, ISH3N,IIS,NIP,IPG,NPG,PT,NPP,
133 . IP,JJ,,
134 . NVARSH,KK,UID,IFLAGUNIT,
135 . IUNIT, JJHBE,
136 . NUVARD00, NDIR, NPGTMP,
137 . NPTR,NPTS,NPTT,JR,JS,JT,NFAIL(5),IMAT,ILAW,
138 . JL,NPT_MAX,MLAWLY,IPMAT,NVARBEAM,IFAIL,NEM1,
139 . IRUPT_TYP,NVAR_RUPT,IOK,NVMAX,FLAGDEG,NUM_LINES,NMAX_AUX,NMAX_FAIL,
140 . ISUBSTACK,NSLICE,IPNPT_LAY,IPT
141 INTEGER IE, IR, IS, IT, BRIGLOB, SUB_ID, NLAY, ILAY, PID
142 INTEGER KTRIELS, KTRIELC, KTRIELTG, KTRIELSPR, KTRIELBEAM, KTRIELTRUSS,
143 . KTRIELTQUAD, KTRIELSPHCEL
144 INTEGER IGBR, JGBR, I1, SIZE,NSROT,NG,ITYR,NFTR,NELR,ISMRAD
145
146
148 . em , eb, h1, h2, h3,
149 . r0 , ein, vx, vy, vz, phi1, phi2, scaleyld,
150 . epsp, angle1, angle2,
area,
for,ener,dens,
153 . s(6),
154
155 . tmpval(varmax),
156 . tmpval1(varmax),tmpval2(varmax),tmpval3(varmax),
157 . tmpval4(varmax),tmpval5(varmax),tmpval6(varmax),
158 . tmpval7(varmax),tmpval8(varmax),tmpval9(varmax),
159 . tmpval10(varmax),tmpval11(varmax),tmpval12(varmax),
160 . tmpval13(varmax)
161
162 INTEGER, DIMENSION(:), ALLOCATABLE :: KSYSUSRTG ,KSYSUSRS,INDEXS,ITRIS,
163 . KSYSUSRQ,INDEXQ,ITRIQ,IES2IPARG,MLAW_LY,ITRISPH,INDEXSPH,KSYSUSRSPH
164
165 CHARACTER(LEN=NCHARKEY) :: KEY,KEY2
166 CHARACTER(LEN=NCHARTITLE) :: TITR
167 CHARACTER*15,KEYWORD
168 INTEGER NONEXIST
169
171 INTEGER UEL2SYS
172
173 LOGICAL IS_AVAILABLE,GLOB
174
175 INTEGER NB_INIBRI,NB_INISHE,NB_INISH3,NB_ELEMENTS,ID_ELEM,
176 . INI,K0,NB_INITRUSS,NB_INIBEAM,NB_INISPRI,NB_INIQUA,
177 . SUB_INDEX,ISTRSF,ISTRSFG,ISTRAF,ISTRAFG,ISTAT,NB_INISPHCEL
179 . thk,for1,for2,for3,mom1,mom2,mom3
180
181 INTEGER SET_USRTOS
183
184
185
186
187
188 sub_index = 0
189 nonexist = 0
190
191 ALLOCATE (itris(numels))
192 ALLOCATE (indexs(2*numels))
193 ALLOCATE (ksysusrs(2*numels))
194 ALLOCATE (ksysusrtg(2*numeltg))
195 ALLOCATE (itriq(numelq))
196 ALLOCATE (indexq(2*numelq))
197 ALLOCATE (ksysusrq(2*numelq))
198 ALLOCATE (ies2iparg(numels) ,stat=istat)
199 ALLOCATE (itrisph(numsph))
200 ALLOCATE (indexsph(2*numsph))
201 ALLOCATE (ksysusrsph(2*numsph))
202 IF (istat /= 0)
CALL ancmsg(msgid=268,anmode=aninfo,
203 . msgtype=msgerror,
204 . c1='IES2IPARG')
205
206 IF (numels > 0) itris(1:numels) = 0
207 IF (numels > 0) indexs(1:2*numels) = 0
208 IF (numels > 0) ksysusrs(1:2*numels)=0
209 IF (numeltg > 0) ksysusrtg(1:2*numeltg)=0
210 IF (numelq > 0) itriq(1:numelq) = 0
211 IF (numelq > 0) indexq(1:2*numelq) = 0
212 IF (numelq > 0) ksysusrq(1:2*numelq)=0
213 IF (numels > 0) ies2iparg(1:numels) = 0
214
215 ktriels = 0
216 ktrielc = 0
217 ktrieltg = 0
218 ktrielspr = 0
219 ktrielbeam = 0
220 ktrieltruss = 0
221 ktrieltquad = 0
222 ktrielsphcel = 0
223 nem1 = 0
224
225
226
227 is_available = .false.
228 glob = .false.
229
230
231
232
234
235 IF ( nb_inibri > 0 ) THEN
236
237 DO ng=1,ngroup
238 ityr=iparg(5,ng)
239 nftr=iparg(3,ng)
240 nelr=iparg(2,ng)
241 IF (ityr /= 1 ) cycle
242 DO i=1,nelr
243 ies2iparg(i+nftr) = ng
244 ENDDO
245 END DO
246
247
249 istrsf=0
250 istrsfg=0
251 istraf=0
252 istrafg=0
253
254 DO ini=1,nb_inibri
255
257 . unit_id = uid,
258 . submodel_index = sub_index,
259 . submodel_id = sub_id,
260 . keyword2 = key)
261
262
263 SELECT CASE (key(1:len_trim(key)))
264
265 CASE ( 'STRS_FGLO' )
266 istrsfg=1
267 CASE ( 'STRS_F' )
268 istrsf=1
269 CASE ( 'STRA_FGLO' )
270 istrafg=1
271 CASE ( 'STRA_F' )
272 istraf=1
273 END SELECT
274 END DO
275 IF (istrsfg>0.AND.istrsf>0) THEN
276 CALL ancmsg(msgid=2044,anmode=aninfo,msgtype=msgwarning)
277 END IF
278 IF (istrafg>0.AND.istraf>0) THEN
279 CALL ancmsg(msgid=2045,anmode=aninfo,msgtype=msgwarning)
280 END IF
281 END IF
282
283 briglob = 0
284 nibrick = 0
285 i = 0
286
287
288 IF ( nb_inibri > 0 ) THEN
289
290
292
293
294 IF(ktriels==0)THEN
295 DO ie = 1, numels
296 itris(ie) = ixs(nixs,ie)
297 END DO
298 CALL my_orders(0,work,itris,indexs,numels,1)
299 DO j = 1, numels
300 ie=indexs(j)
301 ksysusrs(j) =ixs(nixs,ie)
302 ksysusrs(numels+j)=ie
303 END DO
304 ktriels=1
305 END IF
306
307 DO ini=1,nb_inibri
308
310 . unit_id = uid,
311 . submodel_index = sub_index,
312 . submodel_id = sub_id,
313 . keyword2 = key)
314
315 iflagunit = 0
316 DO iunit=1,unitab%NUNITS
317 IF (unitab%UNIT_ID(iunit) == uid) THEN
318 iflagunit = 1
319 EXIT
320 ENDIF
321 ENDDO
322 IF (uid/=0.AND.iflagunit == 0) THEN
323 CALL ancmsg(msgid=659,anmode=aninfo,msgtype=msgerror,
324 . i2=uid,i1=sub_id,c1='INIBRI',
325 . c2='INIBRI',c3=' ')
326 ENDIF
327
328 SELECT CASE (key(1:len_trim(key)))
329
330 CASE ( 'FILL' )
331
332 CALL hm_get_intv(
'inibri_fill_count',nb_elements,is_available,lsubmodel)
333
334 DO j=1,nb_elements
335
338
339 i=i+1
340 id_solid_sigi(i) = id_elem
341 sigi(11,i) = fill
342
343 ENDDO
344
345 CASE ( 'EPSP' )
346
347 CALL hm_get_intv(
'inibri_epsp_count',nb_elements,is_available,lsubmodel)
348
349 DO j=1,nb_elements
350
353
354 i=i+1
355 id_solid_sigi(i) = id_elem
356 sigi(10,i) = epsp
357
358 ENDDO
359
360 CASE ( 'ENER' )
361
362 CALL hm_get_intv(
'inibri_ener_count',nb_elements,is_available,lsubmodel)
363
364 DO j=1,nb_elements
365
368
369 i=i+1
370 id_solid_sigi(i) = id_elem
371 sigi(9,i) = ener
372
373 ENDDO
374
375 CASE ( 'DENS' )
376
377 CALL hm_get_intv(
'inibri_dens_count',nb_elements,is_available,lsubmodel
378
379 DO j=1,nb_elements
380
383
384 i=i+1
385 id_solid_sigi(i) = id_elem
386 sigi(8,i) = dens
387
388 ENDDO
389
390 CASE ( 'STRESS' )
391
392 CALL hm_get_intv(
'inibri_stress_count',nb_elements,is_available,lsubmodel)
393
394 DO j=1,nb_elements
395
403
404 i=i+1
405 id_solid_sigi(i) = id_elem
406 DO k=1,6
407 sigi(k,i) = s(k)
408 ENDDO
409
410 ENDDO
411
412 CASE ( 'AUX' )
413
414 CALL hm_get_intv(
'inibri_aux_count',nb_elements,is_available,lsubmodel)
415
416 DO j=1,nb_elements
417
423
424 ie=
uel2sys(id_elem,ksysusrs,numels)
425
426 IF (ie == 0) THEN
427
428 nonexist = nonexist+1
429 ELSE
430 keyword = '/INIBRI/AUX '
431 i=i+1
432 nlay=0
433 id_solid_sigi(i) = id_elem
434 iuser = 1
435 sigsp(nvsolid1 + nvsolid2 +1 , i) = isolnod
436 sigsp(nvsolid1 + nvsolid2 +2 , i) = npt
437 sigsp(nvsolid1 + nvsolid2 +3 , i) = nuvar
438 sigsp(nvsolid1 + nvsolid2 +4 , i) = jjhbe
439
441 1 ixs ,igeo ,itris ,isolnodd00 ,ie ,
442 2 npt ,nlay ,isolnod ,jjhbe ,igtyp ,
443 3 isrot ,keyword )
444
445 imat = ixs(1,ie)
446 ilaw = ipm(2,imat)
447 nuvard00 = ipm(8,imat)
448 IF (nuvard00 > nuvar) THEN
450 . msgtype=msgwarning,
451 . anmode=aninfo,
452 . i1=itris(ie),
453 . c1='NUMBER OF USER VARIABLES',
454 . c2='MATERIAL LAW ',
455 . i2=ipm(1,ixs(10,ie)),
456 . c3='/INIBRI/AUX')
457 ENDIF
458 IF ((ilaw == 36 .and. (nuvar < 4 .or. nuvard00 > 3) .and.
459 . nuvard00 < nuvar) .or.
460 . (ilaw /= 36 .and. ilaw /= 78 .and. ilaw /= 87 .and. ilaw /= 112 .and. nuvard00 < nuvar)) THEN
462 . msgtype=msgerror,
463 . anmode=aninfo,
464 . i1=itris(ie),
465 . c1='NUMBER OF USER VARIABLES',
466 . c2='MATERIAL LAW ',
467 . i2=ipm(1,ixs(10,ie)),
468 . c3='/INIBRI/AUX')
469 ENDIF
470
471 nmax_aux = npt*nuvar
473 DO jj=1,npt
474 iis = nvsolid1 + nvsolid2 + 4 + nuvar*(jj - 1)
475 DO k=1,nuvar
476 l = nuvar*(jj-1) + k
477 sigsp(iis + k,i) = tmpval(l)
478 ENDDO
479 ENDDO
480 ENDIF
481 ENDDO
482
483 CASE ( 'STRS_FGLO' )
484
485 keyword='/INIBRI/STRS_FG'
486 igtyp = 0
487 briglob = 1
488
489 CALL hm_get_intv(
'inibri_strs_fglo_count',nb_elements,is_available,lsubmodel)
490
491 DO j=1,nb_elements
492
500
503
504 IF (jjhbe == 2) jjhbe = 1
505 IF (igbr > 0) THEN
506 DO k=1,ngrbric
507 IF (igbr == igrbric(k)%ID) THEN
508 jgbr = k
509 EXIT
510 ENDIF
511 ENDDO
512 ie = igrbric(jgbr)%ENTITY(1)
513 id_elem = ixs(nixs,ie)
514 ENDIF
515
516
517
518
519
520 ie=
uel2sys(id_elem,ksysusrs,numels)
521
522 IF (ie == 0) THEN
523
524 nonexist = nonexist+1
525 ELSEIF (strsglob(ie) >= 0) THEN
526
527 ELSE
528
529 i=i+1
530 id_solid_sigi(i) = id_elem
531 sigsp(2,i) = npt
532
533
534 IF (briglob == 1) strsglob(ie)=1
535
537 1 ixs ,igeo ,itris ,isolnodd00 ,ie ,
538 2 npt ,nlay ,isolnod ,jjhbe ,igtyp ,
539 3 isrot ,keyword )
540
541 IF ( (isolnod == 8 .AND. (jjhbe==1.OR.jjhbe==2.OR.jjhbe==12.OR.jjhbe==24)
542 . .AND. igtyp /= 43) .OR.(isolnod == 4 .AND. isrot == 0)
543 . .OR.(isolnod == 4 .AND. isrot == 3).OR.jjhbe==5) THEN
544
545 IF(isolnod == 8 .AND. jjhbe == 12) THEN
546 sigsp(2,i) = npt
547 sigsp(1,i) = 1
548 DO k=1,6
549 sigi(k,i) = zero
550 ENDDO
551 sigi(10,i) = zero
552
553 SIZE = npt
563
564 DO k=1,npt
565 iis= 4 + (k-1)*9
566 ein = tmpval1(k)
567 r0 = tmpval2(k)
568 sigsp(iis+8,i) = ein
569 sigsp(iis+9,i) = r0
570
571 s(1) = tmpval3(k)
572 s(2) = tmpval4(k)
573 s(3) = tmpval5(k)
574
575 s(4) = tmpval6(k)
576 s(5) = tmpval7(k)
577 s(6) = tmpval8(k)
578 IF (sub_id /= 0)
CALL subrottens(s,rtrans,sub_id,lsubmodel)
579 sigsp(iis+1,i) = s(1)
580 sigsp(iis+2,i) = s(2)
581 sigsp(iis+3,i) = s(3)
582 sigsp(iis+4,i) = s(4)
583 sigsp(iis+5,i) = s(5)
584 sigsp(iis+6,i) = s(6)
585
586 epsp = tmpval9(k)
587 sigsp(iis+7,i) = epsp
588 ENDDO
589 ELSE
590
591 SIZE = npt
601
602 sigsp(2,i) = npt
603 IF (npt == 8) THEN
604 sigsp(1,i) = 1
605 sigi(8,i) = tmpval2(1)
606 sigi(9,i) = tmpval1(1)
607 ELSEIF (npt == 1) THEN
608 sigi(8,i) = tmpval2(1)
609 sigi(9,i) = tmpval1(1)
610 ENDIF
611 sigsp(3,i) = tmpval1(
612 sigsp(4,i) = tmpval2(1)
613
614 IF (npt == 1) THEN
615 s(1) = tmpval3(1)
616 s(2) = tmpval4(1)
617 s(3) = tmpval5(1)
618 s(4) = tmpval6(1)
619 s(5) = tmpval7(1)
620 s(6) = tmpval8(1)
621 IF (sub_id /= 0)
CALL subrottens(s,rtrans,sub_id,lsubmodel)
622 sigi(1,i) = s(1)
623 sigi(2,i) = s(2)
624 sigi(3,i) = s(3)
625 sigi(4,i) = s(4)
626 sigi(5,i) = s(5)
627 sigi(6,i) = s(6)
628 sigi(10,i)= tmpval9(1)
629 ELSE
630 DO k=1,6
631 sigi(k,i) = zero
632 ENDDO
633 sigi(10,i) = zero
634 DO k=1,npt
635 iis= 4 + (k-1)*7
636 s(1) = tmpval3(k)
637 s(2) = tmpval4(k)
638 s(3) = tmpval5(k)
639 sigsp(iis+1,i) = s(1)
640 sigsp(iis+2,i) = s(2)
641 sigsp(iis+3,i) = s(3)
642 s(4) = tmpval6(k)
643 s(5) = tmpval7(k)
644 s(6) = tmpval8(k)
645 IF (sub_id /= 0)
CALL subrottens(s,rtrans,sub_id,lsubmodel)
646 sigsp(iis+1,i) = s(1)
647 sigsp(iis+2,i) = s(2)
648 sigsp(iis+3,i) = s(3)
649 sigsp(iis+4,i) = s(4)
650 sigsp(iis+5,i) = s(5)
651 sigsp(iis+6,i) = s(6)
652 epsp = tmpval9(k)
653 sigsp(iis+7,i) = epsp
654 DO l=1,6
655 sigi(l,i) = sigi(l,i) + fourth*sigsp(iis+l,i)
656 ENDDO
657 sigi(10,i)= sigi(10,i) + fourth*sigsp
658 ENDDO
659 ENDIF ! npt
660 ENDIF
661
662 ELSE
663
664
665 IF (isolnod == 16) THEN
666
667 SIZE = nptt*nptr*nlay
677
678 kk = 0
679 DO jt=1,nptt
680 DO jr=1,nptr
681 DO jl=1,nlay
682 k = jr + ( (jl-1) + (jt-1)*nlay )*nptr
683 iis = 1 + (k-1)*9
684
685 kk = kk + 1
686
687 s(1) = tmpval1(kk)
688 s(2) = tmpval2(kk)
689 s(3) = tmpval3(kk)
690 s(4) = tmpval4(kk)
691 s(5) = tmpval5(kk)
692 s(6) = tmpval6(kk)
693 IF (sub_id /= 0)
CALL subrottens(s,rtrans,sub_id,lsubmodel)
694 sigsp(iis+1,i) = s(1)
695 sigsp(iis+2,i) = s(2)
696 sigsp(iis+3,i) = s(3)
697 sigsp(iis+4,i) = s(4)
698 sigsp(iis+5,i) = s(5)
699 sigsp(iis+6,i) = s(6)
700 epsp = tmpval7(kk)
701 ein = tmpval8(kk)
702 r0 = tmpval9(kk)
703 sigsp(iis+7,i) = epsp
704 sigsp(iis+8,i) = ein
705 sigsp(iis+9,i) = r0
706 ENDDO
707 ENDDO
708 ENDDO
709
710 ELSEIF (isolnod == 20) THEN
711
712 SIZE = nptt*npts*nptr
722
723
724 kk = 0
725
726 DO jt=1,nptt
727 DO js=1,npts
728 DO jr=1,nptr
729 k = jr + ( (js-1) + (jt-1)*npts )*nptr
730 iis = 1 + (k-1)*9
731
732 kk = kk + 1
733
734 s(1) = tmpval1(kk)
735 s(2) = tmpval2(kk)
736 s(3) = tmpval3(kk)
737 s(4) = tmpval4(kk)
738 s(5) = tmpval5(kk)
739 s(6) = tmpval6(kk)
740 IF (sub_id /= 0)
CALL subrottens(s,rtrans,sub_id,lsubmodel)
741 sigsp(iis+1,i) = s(1)
742 sigsp(iis+2,i) = s(2)
743 sigsp(iis+3,i) = s(3)
744 sigsp(iis+4,i) = s(4)
745 sigsp(iis+5,i) = s(5)
746 sigsp(iis+6,i) = s(6)
747 epsp = tmpval7(kk)
748 ein = tmpval8(kk)
749 r0 = tmpval9(kk)
750 sigsp(iis+7,i) = epsp
751 sigsp(iis+8,i) = ein
752 sigsp(iis+9,i) = r0
753 ENDDO
754 ENDDO
755 ENDDO
756
757 ELSE
758
759 IF (igtyp == 22) THEN
760
761 SIZE = nptr*npts*nptt
771
772
773 kk = 0
774
775 DO jr=1,nptr
776 DO js=1,npts
777 DO jt=1,nptt
778 k = jr + ( (js-1) + (jt-1)*npts )*nptr
779 iis = 1 + (k-1)*9
780
781 kk = kk + 1
782
783 s(1) = tmpval1(kk)
784 s(2) = tmpval2(kk)
785 s(3) = tmpval3(kk)
786 s(4) = tmpval4(kk)
787 s(5) = tmpval5(kk)
788 s(6) = tmpval6(kk)
789 IF (sub_id /= 0)
CALL subrottens(s,rtrans,sub_id,lsubmodel)
790 sigsp(iis+1,i) = s(1)
791 sigsp(iis+2,i) = s(2)
792 sigsp(iis+3,i) = s(3)
793 sigsp(iis+4,i) = s(4)
794 sigsp(iis+5,i) = s(5)
795 sigsp(iis+6,i) = s(6)
796 epsp = tmpval7(kk)
797 ein = tmpval8(kk)
798 r0 = tmpval9(kk)
799 sigsp(iis+7,i) = epsp
800 sigsp(iis+8,i) = ein
801 sigsp(iis+9,i) = r0
802 ENDDO
803 ENDDO
804 ENDDO
805
806 ELSE
807
808 SIZE = npt
818
819 DO k=1,npt
820 iis= 1 + (k-1)*9
821 s(1) = tmpval1(k)
822 s(2) = tmpval2(k)
823 s(3) = tmpval3(k)
824 s(4) = tmpval4(k)
825 s(5) = tmpval5(k)
826 s(6) = tmpval6(k)
827 IF (sub_id /= 0)
CALL subrottens(s,rtrans,sub_id,lsubmodel)
828 sigsp(iis+1,i) = s(1)
829 sigsp(iis+2,i) = s(2)
830 sigsp(iis+3,i) = s(3)
831 sigsp(iis+4,i) = s(4)
832 sigsp(iis+5,i) = s(5)
833 sigsp(iis+6,i) = s(6)
834 epsp = tmpval7(k)
835 ein = tmpval8(k)
836 r0 = tmpval9(k)
837 sigsp(iis+7,i) = epsp
838 sigsp(iis+8,i) = ein
839 sigsp(iis+9,i) = r0
840 ENDDO
841 ENDIF
842 ENDIF
843 ENDIF
844 ENDIF
845
846 IF (igbr > 0) THEN
847 i1 = i
848 DO k = 2,igrbric(jgbr)%NENTITY
849 ie = igrbric(jgbr)%ENTITY(k)
851 1 ixs ,igeo ,itris ,isolnodd00 ,ie ,
852 2 npt ,nlay ,isolnod ,jjhbe ,igtyp ,
853 3 isrot ,keyword )
854 IF (strsglob(ie) >= 0) cycle
855 IF (briglob == 1) strsglob(ie)=1
856 i = i+1
857 id_solid_sigi(i) = ixs(11,ie)
858 DO l = 1,nsigi
859 sigsp(l,i) = sigsp(l,i1)
860 ENDDO
861 DO l = 1,nsigs
862 sigi(l,i) = sigi(l,i1)
863 ENDDO
864 ENDDO
865 ENDIF
866
867 ENDDO
868
869 CASE ( 'STRS_F' )
870
871 keyword='/INIBRI/STRS_F '
872 igtyp = 0
873
874 CALL hm_get_intv(
'inibri_strs_f_count',nb_elements,is_available,lsubmodel)
875
876 DO j=1,nb_elements
877
882
888
889 IF (igbr > 0) THEN
890 DO k=1,ngrbric
891 IF (igbr == igrbric(k)%ID) THEN
892 jgbr = k
893 EXIT
894 ENDIF
895 ENDDO
896 ie = igrbric(jgbr)%ENTITY(1)
897 id_elem = ixs(nixs,ie)
898 ENDIF
899
900
901
902
903 ie=
uel2sys(id_elem,ksysusrs,numels)
904
905 IF (ie == 0) THEN
906
907 nonexist = nonexist+1
908 ELSEIF (strsglob(ie) >= 0) THEN
909! --- treated already
910 ELSE
911
912 i=i+1
913 IF (jjhbe == 2) jjhbe = 1
914 id_solid_sigi(i) = id_elem
915 sigsp(2,i) = npt
916
918 1 ixs ,igeo ,itris ,isolnodd00 ,ie ,
919 2 npt ,nlay ,isolnod ,jjhbe ,igtyp ,
920 3 isrot ,keyword )
921
922 strsglob(ie) = 0
923 IF ( (isolnod == 8 .AND. (jjhbe==1.OR.jjhbe==2.OR.jjhbe==12.OR.jjhbe==24)
924 . .AND. igtyp /= 43) .OR.(isolnod == 4 .AND. isrot == 0)
925 . .OR.(isolnod == 4 .AND. isrot == 3).OR.jjhbe==5) THEN
926
927 IF(isolnod == 8 .AND. jjhbe == 12) THEN
928 sigsp(2,i) = npt
929 sigsp(1,i) = 1
930 DO k=1,6
931 sigi(k,i) = zero
932 ENDDO
933 sigi(10,i) = zero
934
935 SIZE = npt
945
946 DO k=1,npt
947 iis= 4 + (k-1)*9
948 ein = tmpval1(k)
949 r0 = tmpval2(k)
950 sigsp(iis+8,i) = ein
951 sigsp(iis+9,i) = r0
952
953 s(1) = tmpval3(k)
954 s(2) = tmpval4(k)
955 s(3) = tmpval5(k)
956
957 s(4) = tmpval6(k)
958 s(5) = tmpval7(k)
959 s(6) = tmpval8(k)
960
961 sigsp(iis+1,i) = s(1)
962 sigsp(iis+2,i) = s(2)
963 sigsp(iis+3,i) = s(3)
964 sigsp(iis+4,i) = s(4)
965 sigsp(iis+5,i) = s(5)
966 sigsp(iis+6,i) = s(6)
967
968 epsp = tmpval9(k)
969 sigsp(iis+7,i) = epsp
970 ENDDO
971 ELSE
972
973 SIZE = npt
983
984 sigsp(2,i) = npt
985 IF(npt == 8)THEN
986 sigsp(1,i) = 1
987 sigi(8,i) = tmpval2(1)
988 sigi(9,i
989 ELSEIF(npt == 1) THEN
990 sigi(8,i) = tmpval2(1)
991 sigi(9,i) = tmpval1(1)
992 ENDIF
993 sigsp(3,i) = tmpval1(1)
994 sigsp(4,i) = tmpval2(1)
995
996 IF (npt == 1) THEN
997
998 s(1) = tmpval3(1)
999 s(2) = tmpval4(1)
1000 s(3) = tmpval5(1)
1001 s(4) = tmpval6(1)
1002 s(5) = tmpval7(1)
1003 s(6) = tmpval8(1)
1004
1005 sigi(1,i) = s(1)
1006 sigi(2,i) = s(2)
1007 sigi(3,i) = s(3)
1008 sigi(4,i) = s(4)
1009 sigi(5,i) = s(5)
1010 sigi(6,i) = s(6)
1011 sigi(10,i)= tmpval9(1)
1012 ELSE
1013 DO k=1,6
1014 sigi(k,i) = zero
1015 ENDDO
1016 sigi(10,i) = zero
1017
1018 DO k=1,npt
1019 iis= 4 + (k-1)*7
1020 s(1) = tmpval3(k)
1021 s(2) = tmpval4(k)
1022 s(3) = tmpval5(k)
1023 sigsp(iis+1,i) = s(1)
1024 sigsp(iis+2,i)
1025 sigsp(iis+3,i) = s(3)
1026 s(4) = tmpval6(k)
1027
1028 s(6) = tmpval8(k)
1029
1030 sigsp(iis+1,i) = s(1)
1031 sigsp(iis+2,i) = s(2)
1032 sigsp(iis+3,i) = s(3)
1033 sigsp(iis+4,i) = s(4)
1034 sigsp(iis+5,i) = s(5)
1035 sigsp(iis+6,i) = s(6)
1036 epsp = tmpval9(k)
1037 sigsp(iis+7,i) = epsp
1038 DO l=1,6
1039 sigi(l,i) = sigi(l,i) + fourth*sigsp(iis+l,i)
1040 ENDDO
1041 sigi(10,i)= sigi(10,i) + fourth*sigsp(iis+7,i)
1042 ENDDO
1043 ENDIF
1044 ENDIF
1045
1046 ELSE
1047
1048
1049 IF (isolnod == 16) THEN
1050
1051 SIZE = nptt*nptr*nlay
1061
1062
1063 kk = 0
1064
1065 DO jt=1,nptt
1066 DO jr=1,nptr
1067 DO jl=1,nlay
1068 k = jr + ( (jl-1) + (jt-1)*nlay )*nptr
1069 iis = 1 + (k-1)*9
1070
1071 kk = kk + 1
1072
1073 s(1) = tmpval1(kk)
1074 s(2) = tmpval2(kk)
1075 s(3) = tmpval3(kk)
1076 s(4) = tmpval4(kk)
1077 s(5) = tmpval5(kk)
1078 s(6) = tmpval6(kk)
1079
1080 sigsp(iis+1,i) = s(1)
1081 sigsp(iis+2,i) = s(2)
1082 sigsp(iis+3,i) = s(3)
1083 sigsp(iis+4,i) = s(4)
1084 sigsp(iis+5,i) = s(5)
1085 sigsp(iis+6,i) = s(6)
1086 epsp = tmpval7(kk)
1087 ein = tmpval8(kk)
1088 r0 = tmpval9(kk)
1089 sigsp(iis+7,i) = epsp
1090 sigsp(iis+8,i) = ein
1091 sigsp(iis+9,i) = r0
1092 ENDDO
1093 ENDDO
1094 ENDDO
1095
1096 ELSEIF (isolnod == 20) THEN
1097
1098 SIZE = nptt*npts*nptr
1108
1109
1110 kk = 0
1111
1112 DO jt=1,nptt
1113 DO js=1,npts
1114 DO jr=1,nptr
1115 k = jr + ( (js-1) + (jt-1)*npts )*nptr
1116 iis = 1 + (k-1)*9
1117
1118 kk = kk + 1
1119
1120 s(1) = tmpval1(kk)
1121 s(2) = tmpval2(kk)
1122 s(3) = tmpval3(kk)
1123 s(4) = tmpval4(kk)
1124 s(5) = tmpval5(kk)
1125 s(6) = tmpval6(kk)
1126
1127 sigsp(iis+1,i) = s(1)
1128 sigsp(iis+2,i) = s(2)
1129 sigsp(iis+3,i) = s(3)
1130 sigsp(iis+4,i) = s(4)
1131 sigsp(iis+5,i) = s(5)
1132 sigsp(iis+6,i) = s(6)
1133 epsp = tmpval7(kk)
1134 ein = tmpval8(kk)
1135 r0 = tmpval9(kk)
1136 sigsp(iis+7,i) = epsp
1137 sigsp(iis+8,i) = ein
1138 sigsp(iis+9,i) = r0
1139 ENDDO
1140 ENDDO
1141 ENDDO
1142
1143 ELSE
1144
1145 IF (igtyp == 22) THEN
1146
1147 SIZE = nptr*npts*nptt
1157
1158
1159 kk = 0
1160
1161 DO jr=1,nptr
1162 DO js=1,npts
1163 DO jt=1,nptt
1164 k = jr + ( (js-1) + (jt-1)*npts )*nptr
1165 iis = 1 + (k-1)*9
1166
1167 kk = kk + 1
1168
1169 s(1) = tmpval1(kk)
1170 s(2) = tmpval2(kk)
1171 s(3) = tmpval3(kk)
1172 s(4) = tmpval4(kk)
1173 s(5) = tmpval5(kk)
1174 s(6) = tmpval6(kk)
1175
1176 sigsp(iis+1,i) = s(1)
1177 sigsp(iis+2,i) = s(2)
1178 sigsp(iis+3,i) = s(3)
1179 sigsp(iis+4,i) = s(4)
1180 sigsp(iis+5,i) = s(5)
1181 sigsp(iis+6,i) = s(6)
1182 epsp = tmpval7(kk)
1183 ein = tmpval8(kk)
1184 r0 = tmpval9(kk)
1185 sigsp(iis+7,i) = epsp
1186 sigsp(iis+8,i) = ein
1187 sigsp(iis+9,i) = r0
1188 ENDDO
1189 ENDDO
1190 ENDDO
1191
1192 ELSE
1193
1194 SIZE = npt
1204
1205 DO k=1,npt
1206 iis= 1 + (k-1)*9
1207 s(1) = tmpval1(k)
1208 s(2) = tmpval2(k)
1209 s(3) = tmpval3(k)
1210 s(4) = tmpval4(k)
1211 s(5) = tmpval5(k)
1212 s(6) = tmpval6(k)
1213
1214 sigsp(iis+1,i) = s(1)
1215 sigsp(iis+2,i) = s(2)
1216 sigsp(iis+3,i) = s(3)
1217 sigsp(iis+4,i) = s(4)
1218 sigsp(iis+5,i) = s(5)
1219 sigsp(iis+6,i) = s(6)
1220 epsp = tmpval7(k)
1221 ein = tmpval8
1222
1223 sigsp(iis+7,i) = epsp
1224 sigsp(iis+8,i) = ein
1225 sigsp(iis+9,i) = r0
1226 ENDDO
1227 ENDIF
1228 ENDIF
1229 ENDIF
1230 ENDIF ! IF (ie == 0)
1231
1232 IF (igbr > 0) THEN
1233 i1 = i
1234 DO k = 2,igrbric(jgbr)%NENTITY
1235 ie = igrbric(jgbr)%ENTITY(k)
1237 1 ixs ,igeo ,itris ,isolnodd00 ,ie ,
1238 2 npt ,nlay ,isolnod ,jjhbe
1239 3 isrot ,keyword )
1240
1241 IF (strsglob(ie) >= 0) cycle
1242 strsglob(ie)=0
1243 i = i+1
1244 id_solid_sigi(i) = ixs(11,ie)
1245 DO l = 1,nsigi
1246 sigsp(l,i) = sigsp(l,i1)
1247 ENDDO
1248 DO l = 1,nsigs
1249 sigi(l,i) = sigi(l,i1)
1250 ENDDO
1251 ENDDO
1252 ENDIF
1253
1254 ENDDO
1255
1256
1257 CASE ( 'STRA_F' )
1258
1259 CALL hm_get_intv(
'inibri_stra_f_count',nb_elements,is_available,lsubmodel)
1260
1261 keyword='/INIBRI/STRA_F '
1262 igtyp = 0
1263
1264 DO j=1,nb_elements
1265
1272 CALL HM_GET_INT_ARRAY_INDEX('nptt' ,NPTT,J,IS_AVAILABLE,LSUBMODEL)
1273 CALL HM_GET_INT_ARRAY_INDEX('nlay' ,NLAY,J,IS_AVAILABLE,LSUBMODEL)
1274!
1275 I=I+1
1276 IF (JJHBE == 2) JJHBE = 1
1277 ID_SOLID_SIGI(I) = ID_ELEM
1278!
1279! ELT = SET_USRTOS(ID_ELEM,MAP_TABLES%ISOLM,NUMELS)
1280! IE = MAP_TABLES%ISOLM(ELT,2)
1281!
1282 IE=UEL2SYS(ID_ELEM,KSYSUSRS,NUMELS)
1283
1284
1285
1286!
1287 IF (IE == 0) THEN
1288 ! Solid was not found. Issue a Warning & Skip.
1289 NONEXIST = NONEXIST+1
1290 ELSEIF (STRAGLOB(IE)>=0) THEN
1291 ELSE
1292 CALL LEC_INISTATE_D00_BRICK_CHECK (
1293 1 IXS ,IGEO ,ITRIS ,ISOLNODD00 ,IE ,
1294 2 NPT ,NLAY ,ISOLNOD ,JJHBE ,IGTYP ,
1295 3 ISROT ,KEYWORD )
1296!
1297 STRAGLOB(IE) = 0
1298 IF ( ISOLNOD == 16 ) THEN
1299!
1300 SIZE = NPTT*NPTR*NLAY
1301 CALL HM_GET_FLOAT_ARRAY('epsilon_1' ,TMPVAL1,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
1302 CALL HM_GET_FLOAT_ARRAY('epsilon_2' ,TMPVAL2,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
1303 CALL HM_GET_FLOAT_ARRAY('epsilon_3' ,TMPVAL3,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
1304 CALL HM_GET_FLOAT_ARRAY('epsilon_12' ,TMPVAL4,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
1305 CALL HM_GET_FLOAT_ARRAY('epsilon_23' ,TMPVAL5,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
1306 CALL HM_GET_FLOAT_ARRAY('epsilon_31' ,TMPVAL6,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
1307!
1308!
1309 KK = 0
1310!
1311 DO JT=1,NPTT
1312 DO JR=1,NPTR
1313 DO JL=1,NLAY
1314 K = JR + ( (JL-1) + (JT-1)*NLAY )*NPTR
1315 IIS= NVSOLID1 + (K-1)*6
1316!
1317 KK = KK + 1
1318!
1319 S(1) = TMPVAL1(KK)
1320 S(2) = TMPVAL2(KK)
1321 S(3) = TMPVAL3(KK)
1322 S(4) = TMPVAL4(KK)
1323 S(5) = TMPVAL5(KK)
1324 S(6) = TMPVAL6(KK)
1325!
1326 SIGSP(IIS+1,I) = S(1)
1327 SIGSP(IIS+2,I) = S(2)
1328 SIGSP(IIS+3,I) = S(3)
1329 SIGSP(IIS+4,I) = S(4)
1330 SIGSP(IIS+5,I) = S(5)
1331 SIGSP(IIS+6,I) = S(6)
1332 ENDDO ! DO JL=1,NLAY
1333 ENDDO ! DO JR=1,NPTR
1334 ENDDO ! DO JT=1,NPTT
1335!
1336 ELSEIF ( ISOLNOD == 20 ) THEN
1337!
1338 SIZE = NPTT*NPTS*NPTR
1339 CALL HM_GET_FLOAT_ARRAY('epsilon_1' ,TMPVAL1,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
1340 CALL HM_GET_FLOAT_ARRAY('epsilon_2' ,TMPVAL2,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
1341 CALL HM_GET_FLOAT_ARRAY('epsilon_3' ,TMPVAL3,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
1342 CALL HM_GET_FLOAT_ARRAY('epsilon_12' ,TMPVAL4,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
1343 CALL HM_GET_FLOAT_ARRAY('epsilon_23' ,TMPVAL5,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
1344 CALL HM_GET_FLOAT_ARRAY('epsilon_31' ,TMPVAL6,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
1345!
1346!
1347 KK = 0
1348!
1349 DO JT=1,NPTT
1350 DO JS=1,NPTS
1351 DO JR=1,NPTR
1352 K = JR + ( (JS-1) + (JT-1)*NPTS )*NPTR
1353 IIS= NVSOLID1 + (K-1)*6
1354!
1355 KK = KK + 1
1356!
1357 S(1) = TMPVAL1(KK)
1358 S(2) = TMPVAL2(KK)
1359 S(3) = TMPVAL3(KK)
1360 S(4) = TMPVAL4(KK)
1361 S(5) = TMPVAL5(KK)
1362 S(6) = TMPVAL6(KK)
1363!
1364 SIGSP(IIS+1,I) = S(1)
1365 SIGSP(IIS+2,I) = S(2)
1366 SIGSP(IIS+3,I) = S(3)
1367 SIGSP(IIS+4,I) = S(4)
1368 SIGSP(IIS+5,I) = S(5)
1369 SIGSP(IIS+6,I) = S(6)
1370 ENDDO ! DO JR=1,NPTR
1371 ENDDO ! DO JS=1,NPTS
1372 ENDDO ! DO JT=1,NPTT
1373!
1374.OR..AND. ELSEIF ((IGTYP == 21 IGTYP == 22) JJHBE == 14) THEN
1375!
1376 SIZE = NPTR*NPTS*NPTT
1377 CALL HM_GET_FLOAT_ARRAY('epsilon_1' ,TMPVAL1,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
1378 CALL HM_GET_FLOAT_ARRAY('epsilon_2' ,TMPVAL2,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
1379 CALL HM_GET_FLOAT_ARRAY('epsilon_3' ,TMPVAL3,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
1380 CALL HM_GET_FLOAT_ARRAY('epsilon_12' ,TMPVAL4,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
1381 CALL HM_GET_FLOAT_ARRAY('epsilon_23' ,TMPVAL5,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
1382 CALL HM_GET_FLOAT_ARRAY('epsilon_31' ,TMPVAL6,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
1383!
1384!
1385 KK = 0
1386!
1387 DO JR=1,NPTR
1388 DO JS=1,NPTS
1389 DO JT=1,NPTT
1390 K = JR + ( (JS-1) + (JT-1)*NPTS )*NPTR
1391 IIS= NVSOLID1 + (K-1)*6
1392!
1393 KK = KK + 1
1394!
1395 S(1) = TMPVAL1(KK)
1396 S(2) = TMPVAL2(KK)
1397 S(3) = TMPVAL3(KK)
1398 S(4) = TMPVAL4(KK)
1399 S(5) = TMPVAL5(KK)
1400 S(6) = TMPVAL6(KK)
1401!
1402 SIGSP(IIS+1,I) = S(1)
1403 SIGSP(IIS+2,I) = S(2)
1404 SIGSP(IIS+3,I) = S(3)
1405 SIGSP(IIS+4,I) = S(4)
1406 SIGSP(IIS+5,I) = S(5)
1407 SIGSP(IIS+6,I) = S(6)
1408 ENDDO ! DO JT=1,NPTT
1409 ENDDO ! DO JS=1,NPTS
1410 ENDDO ! DO JR=1,NPTR
1411!
1412 ELSE
1413!
1414 SIZE = NPT
1415 CALL HM_GET_FLOAT_ARRAY('epsilon_1' ,TMPVAL1,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
1416 CALL HM_GET_FLOAT_ARRAY('epsilon_2' ,TMPVAL2,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
1417 CALL HM_GET_FLOAT_ARRAY('epsilon_3' ,TMPVAL3,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
1418 CALL HM_GET_FLOAT_ARRAY('epsilon_12' ,TMPVAL4,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
1419 CALL HM_GET_FLOAT_ARRAY('epsilon_23' ,TMPVAL5,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
1420 CALL HM_GET_FLOAT_ARRAY('epsilon_31' ,TMPVAL6,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
1421!
1422 DO K=1,NPT
1423 IIS= NVSOLID1 + (K-1)*6
1424 S(1) = TMPVAL1(K)
1425 S(2) = TMPVAL2(K)
1426 S(3) = TMPVAL3(K)
1427 S(4) = TMPVAL4(K)
1428 S(5) = TMPVAL5(K)
1429 S(6) = TMPVAL6(K)
1430!
1431 SIGSP(IIS+1,I) =S(1)
1432 SIGSP(IIS+2,I) =S(2)
1433 SIGSP(IIS+3,I) =S(3)
1434 SIGSP(IIS+4,I) =S(4)
1435 SIGSP(IIS+5,I) =S(5)
1436 SIGSP(IIS+6,I) =S(6)
1437 ENDDO ! DO K=1,NPT
1438
1439!
1440 ENDIF ! IF ( ISOLNOD == 16 )
1441 ENDIF ! IF (IE == 0)
1442 ENDDO ! DO J=1,NB_ELEMENTS
1443
1444
1445 CASE ( 'stra_fglo' )
1446
1447 CALL HM_GET_INTV('inibri_stra_fglo_count',NB_ELEMENTS,IS_AVAILABLE,LSUBMODEL)
1448!
1449 KEYWORD='/inibri/stra_f '
1450 IGTYP = 0
1451 BRIGLOB = 1
1452!
1453 DO J=1,NB_ELEMENTS
1454 ! Reading --- ID_ELEM, .... ---
1455 CALL HM_GET_INT_ARRAY_INDEX('brick_id' ,ID_ELEM,J,IS_AVAILABLE,LSUBMODEL)
1456 CALL HM_GET_INT_ARRAY_INDEX('nb_integr',NPT,J,IS_AVAILABLE,LSUBMODEL)
1457 CALL HM_GET_INT_ARRAY_INDEX('isolnod' ,ISOLNOD,J,IS_AVAILABLE,LSUBMODEL)
1458 CALL HM_GET_INT_ARRAY_INDEX('isolid' ,JJHBE,J,IS_AVAILABLE,LSUBMODEL)
1459 CALL HM_GET_INT_ARRAY_INDEX('nptr' ,NPTR,J,IS_AVAILABLE,LSUBMODEL)
1460 CALL HM_GET_INT_ARRAY_INDEX('npts' ,NPTS,J,IS_AVAILABLE,LSUBMODEL)
1461 CALL HM_GET_INT_ARRAY_INDEX('nptt' ,NPTT,J,IS_AVAILABLE,LSUBMODEL)
1462 CALL HM_GET_INT_ARRAY_INDEX('nlay' ,NLAY,J,IS_AVAILABLE,LSUBMODEL)
1463!
1464 I=I+1
1465 IF (JJHBE == 2) JJHBE = 1
1466 ID_SOLID_SIGI(I) = ID_ELEM
1467!
1468! ELT = SET_USRTOS(ID_ELEM,MAP_TABLES%ISOLM,NUMELS)
1469! IE = MAP_TABLES%ISOLM(ELT,2)
1470!
1471 IE=UEL2SYS(ID_ELEM,KSYSUSRS,NUMELS)
1472
1473
1474
1475!
1476!
1477 IF (IE == 0) THEN
1478 ! Solid was not found. Issue a Warning & Skip.
1479 NONEXIST = NONEXIST+1
1480 ELSEIF (STRAGLOB(IE)>=0) THEN
1481 ELSE
1482 CALL LEC_INISTATE_D00_BRICK_CHECK (
1483 1 IXS ,IGEO ,ITRIS ,ISOLNODD00 ,IE ,
1484 2 NPT ,NLAY ,ISOLNOD ,JJHBE ,IGTYP ,
1485 3 ISROT ,KEYWORD )
1486 IF (BRIGLOB == 1) STRAGLOB(IE)=1
1487!
1488 IF ( ISOLNOD == 16 ) THEN
1489!
1490 SIZE = NPTT*NPTR*NLAY
1491 CALL HM_GET_FLOAT_ARRAY('epsilon_1' ,TMPVAL1,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
1492 CALL HM_GET_FLOAT_ARRAY('epsilon_2' ,TMPVAL2,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
1493 CALL HM_GET_FLOAT_ARRAY('epsilon_3' ,TMPVAL3,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
1494 CALL HM_GET_FLOAT_ARRAY('epsilon_12' ,TMPVAL4,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
1495 CALL HM_GET_FLOAT_ARRAY('epsilon_23' ,TMPVAL5,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
1496 CALL HM_GET_FLOAT_ARRAY('epsilon_31' ,TMPVAL6,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
1497!
1498!
1499 KK = 0
1500!
1501 DO JT=1,NPTT
1502 DO JR=1,NPTR
1503 DO JL=1,NLAY
1504 K = JR + ( (JL-1) + (JT-1)*NLAY )*NPTR
1505 IIS= NVSOLID1 + (K-1)*6
1506!
1507 KK = KK + 1
1508!
1509 S(1) = TMPVAL1(KK)
1510 S(2) = TMPVAL2(KK)
1511 S(3) = TMPVAL3(KK)
1512 S(4) = TMPVAL4(KK)
1513 S(5) = TMPVAL5(KK)
1514 S(6) = TMPVAL6(KK)
1515 IF (SUB_ID /= 0) CALL SUBROTTENS(S,RTRANS,SUB_ID,LSUBMODEL)
1516 SIGSP(IIS+1,I) = S(1)
1517 SIGSP(IIS+2,I) = S(2)
1518 SIGSP(IIS+3,I) = S(3)
1519 SIGSP(IIS+4,I) = S(4)
1520 SIGSP(IIS+5,I) = S(5)
1521 SIGSP(IIS+6,I) = S(6)
1522 ENDDO ! DO JL=1,NLAY
1523 ENDDO ! DO JR=1,NPTR
1524 ENDDO ! DO JT=1,NPTT
1525!
1526 ELSEIF ( ISOLNOD == 20 ) THEN
1527!
1528 SIZE = NPTT*NPTS*NPTR
1529 CALL HM_GET_FLOAT_ARRAY('epsilon_1' ,TMPVAL1,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
1530 CALL HM_GET_FLOAT_ARRAY('epsilon_2' ,TMPVAL2,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
1531 CALL HM_GET_FLOAT_ARRAY('epsilon_3' ,TMPVAL3,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
1532 CALL HM_GET_FLOAT_ARRAY('epsilon_12' ,TMPVAL4,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
1533 CALL HM_GET_FLOAT_ARRAY('epsilon_23' ,TMPVAL5,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
1534 CALL HM_GET_FLOAT_ARRAY('epsilon_31' ,TMPVAL6,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
1535!
1536!
1537 KK = 0
1538!
1539 DO JT=1,NPTT
1540 DO JS=1,NPTS
1541 DO JR=1,NPTR
1542 K = JR + ( (JS-1) + (JT-1)*NPTS )*NPTR
1543 IIS= NVSOLID1 + (K-1)*6
1544!
1545 KK = KK + 1
1546!
1547 S(1) = TMPVAL1(KK)
1548 S(2) = TMPVAL2(KK)
1549 S(3) = TMPVAL3(KK)
1550 S(4) = TMPVAL4(KK)
1551 S(5) = TMPVAL5(KK)
1552 S(6) = TMPVAL6(KK)
1553 IF (SUB_ID /= 0) CALL SUBROTTENS(S,RTRANS,SUB_ID,LSUBMODEL)
1554 SIGSP(IIS+1,I) = S(1)
1555 SIGSP(IIS+2,I) = S(2)
1556 SIGSP(IIS+3,I) = S(3)
1557 SIGSP(IIS+4,I) = S(4)
1558 SIGSP(IIS+5,I) = S(5)
1559 SIGSP(IIS+6,I) = S(6)
1560 ENDDO ! DO JR=1,NPTR
1561 ENDDO ! DO JS=1,NPTS
1562 ENDDO ! DO JT=1,NPTT
1563!
1564.OR..AND. ELSEIF ((IGTYP == 21 IGTYP == 22) JJHBE == 14) THEN
1565!
1566 SIZE = NPTR*NPTS*NPTT
1567 CALL HM_GET_FLOAT_ARRAY('epsilon_1' ,TMPVAL1,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
1568 CALL HM_GET_FLOAT_ARRAY('epsilon_2' ,TMPVAL2,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
1569 CALL HM_GET_FLOAT_ARRAY('epsilon_3' ,TMPVAL3,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
1570 CALL HM_GET_FLOAT_ARRAY('epsilon_12' ,TMPVAL4,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
1571 CALL HM_GET_FLOAT_ARRAY('epsilon_23' ,TMPVAL5,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
1572 CALL HM_GET_FLOAT_ARRAY('epsilon_31' ,TMPVAL6,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
1573!
1574 KK = 0
1575!
1576 DO JR=1,NPTR
1577 DO JS=1,NPTS
1578 DO JT=1,NPTT
1579 K = JR + ( (JS-1) + (JT-1)*NPTS )*NPTR
1580 IIS= NVSOLID1 + (K-1)*6
1581!
1582 KK = KK + 1
1583!
1584 S(1) = TMPVAL1(KK)
1585 S(2) = TMPVAL2(KK)
1586 S(3) = TMPVAL3(KK)
1587 S(4) = TMPVAL4(KK)
1588 S(5) = TMPVAL5(KK)
1589 S(6) = TMPVAL6(KK)
1590 IF (SUB_ID /= 0) CALL SUBROTTENS(S,RTRANS,SUB_ID,LSUBMODEL)
1591 SIGSP(IIS+1,I) = S(1)
1592 SIGSP(IIS+2,I) = S(2)
1593 SIGSP(IIS+3,I) = S(3)
1594 SIGSP(IIS+4,I) = S(4)
1595 SIGSP(IIS+5,I) = S(5)
1596 SIGSP(IIS+6,I) = S(6)
1597 ENDDO ! DO JT=1,NPTT
1598 ENDDO ! DO JS=1,NPTS
1599 ENDDO ! DO JR=1,NPTR
1600!
1601 ELSE
1602!
1603 SIZE = NPT
1604 CALL HM_GET_FLOAT_ARRAY('epsilon_1' ,TMPVAL1,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
1605 CALL HM_GET_FLOAT_ARRAY('epsilon_2' ,TMPVAL2,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
1606 CALL HM_GET_FLOAT_ARRAY('epsilon_3' ,TMPVAL3,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
1607 CALL HM_GET_FLOAT_ARRAY('epsilon_12' ,TMPVAL4,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
1608 CALL HM_GET_FLOAT_ARRAY('epsilon_23' ,TMPVAL5,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
1609 CALL HM_GET_FLOAT_ARRAY('epsilon_31' ,TMPVAL6,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
1610!
1611 DO K=1,NPT
1612 IIS= NVSOLID1 + (K-1)*6
1613 S(1) = TMPVAL1(K)
1614 S(2) = TMPVAL2(K)
1615 S(3) = TMPVAL3(K)
1616 S(4) = TMPVAL4(K)
1617 S(5) = TMPVAL5(K)
1618 S(6) = TMPVAL6(K)
1619 IF (SUB_ID /= 0) CALL SUBROTTENS(S,RTRANS,SUB_ID,LSUBMODEL)
1620 SIGSP(IIS+1,I) =S(1)
1621 SIGSP(IIS+2,I) =S(2)
1622 SIGSP(IIS+3,I) =S(3)
1623 SIGSP(IIS+4,I) =S(4)
1624 SIGSP(IIS+5,I) =S(5)
1625 SIGSP(IIS+6,I) =S(6)
1626 ENDDO ! DO K=1,NPT
1627
1628!
1629 ENDIF ! IF ( ISOLNOD == 16 )
1630 ENDIF ! IF (IE == 0)
1631 ENDDO ! DO J=1,NB_ELEMENTS
1632
1633
1634 CASE ( 'fail' )
1635
1636 CALL HM_GET_INTV('inibri_fail_count',NB_ELEMENTS,IS_AVAILABLE,LSUBMODEL)
1637!
1638 DO J=1,NB_ELEMENTS
1639 CALL HM_GET_INT_ARRAY_INDEX('brick_id' ,ID_ELEM,J,IS_AVAILABLE,LSUBMODEL)
1640 CALL HM_GET_INT_ARRAY_INDEX('nlay',NLAY,J,IS_AVAILABLE,LSUBMODEL)
1641 CALL HM_GET_INT_ARRAY_INDEX('nptr',NPTR,J,IS_AVAILABLE,LSUBMODEL)
1642 CALL HM_GET_INT_ARRAY_INDEX('npts',NPTS,J,IS_AVAILABLE,LSUBMODEL)
1643 CALL HM_GET_INT_ARRAY_INDEX('nptt',NPTT,J,IS_AVAILABLE,LSUBMODEL)
1644 CALL HM_GET_INT_ARRAY_INDEX('lay_id',ILAY,J,IS_AVAILABLE,LSUBMODEL)
1645 CALL HM_GET_INT_ARRAY_INDEX('fail_id',ifail,j,is_available,lsubmodel)
1649
1651
1652
1653
1654
1655 ie=
uel2sys(id_elem,ksysusrs,numels)
1656
1657 nvmax = nvsolid4 /(nptr*npts*nptt*nlay*5)
1658
1659 IF(id_elem /= nem1) i=i+1
1660 nem1 = id_elem
1661 iok = 0
1662
1663 DO k=1,nummat
1664 IF(ipm(1,k) == imat)THEN
1665 imat = k
1666 iok = 1
1667 EXIT
1668 ENDIF
1669 ENDDO
1670
1671 IF (iok == 0) THEN
1673 . msgtype=msgerror,
1674 . anmode=aninfo,
1675 . i1=itris(ie),
1676 . c1='MATERIAL LAW',
1677 . c2='/INIBRI/FAIL')
1678 ENDIF
1679 id_solid_sigi(i) = id_elem
1680
1681 IF (ie == 0) THEN
1682
1683 nonexist = nonexist+1
1684 ELSE
1685 iok = 0
1686 DO k=1,5
1687 nfail(k) = mat_param(imat)%FAIL(k)%FAIL_ID
1688 IF (ifail == nfail(k) .AND.
1689 . irupt_typ == mat_param(imat)%FAIL(k)%IRUPT) THEN
1690 ifail = k
1691 fail_ini(ifail)=1
1692 iok = 1
1693 EXIT
1694 ENDIF
1695 ENDDO
1696 IF (iok == 0) THEN
1698 . msgtype=msgerror,
1699 . anmode=aninfo,
1700 . i1=itris(ie),
1701 . c1='FAILURE CRITERIA',
1702 . c2='/INIBRI/FAIL')
1703 ENDIF
1704
1705 iis= nvsolid1 + nvsolid2 + 4 + nusolid + nvsolid3
1706
1707 nmax_fail = num_lines*nvar_rupt
1709
1710 DO jj=1,num_lines
1711 DO k=1,nvar_rupt
1712 l = nvar_rupt*(jj-1) + k
1713 sigsp(iis+l+(ifail-1)*nlay*nptr*npts*nptt*nvmax+
1714 . (ilay-1)*nvmax*nptr*npts*nptt,i) = tmpval(l)
1715 ENDDO
1716 ENDDO
1717
1718 ENDIF
1719 ENDDO
1720
1721 CASE ( 'SCALE_YLD' )
1722
1723 CALL hm_get_intv(
'inibri_scale_yld_count',nb_elements,is_available,lsubmodel)
1724
1725 iusolyld = 1
1726 DO j=1,nb_elements
1732
1734
1735
1736! ie = map_tables%ISOLM(elt,2)
1737
1738 ie=
uel2sys(id_elem,ksysusrs,numels)
1739
1740 i=i+1
1741 IF (nlay == 0) nlay = 1
1742 sigi( 7,i) = id_elem
1743 id_solid_sigi(i) = id_elem
1744 iis = nvsolid1 + nvsolid2 + nvsolid3 + nusolid + 4 + nvsolid4
1745 sigsp(iis + 7,i) = id_elem
1746
1747 sigsp(iis +1 , i) = nptr
1748 sigsp(iis +2 , i) = npts
1749 sigsp(iis +3 , i) = nptt
1750 sigsp(iis +4 , i) = nlay
1751
1752 IF (ie == 0) THEN
1753
1754 nonexist = nonexist+1
1755 ELSE
1756 iis = nvsolid1 + nvsolid2 + nvsolid3 + nusolid + 4 + nvsolid4 + 7
1757
1758 SIZE = nlay*nptt*npts*nptr
1760
1761 DO ilay = 1,nlay
1762 DO it=1,nptt
1763 DO is=1,npts
1764 DO ir=1,nptr
1765 jj = nptr*npts*nptt*(ilay-1)+ nptr*npts*(it-1)+nptr*(is-1)+ir
1766 sigsp(iis+ jj ,i) = tmpval(jj)
1767 ENDDO
1768 ENDDO
1769 ENDDO
1770 ENDDO
1771
1772
1773 ENDIF
1774 ENDDO
1775
1776 CASE ( 'ORTHO' )
1777
1778 CALL hm_get_intv(
'inibri_ortho_count',nb_elements,is_available,lsubmodel)
1779
1780 keyword='/INIBRI/ORTHO '
1781 npt = 0
1782
1783 DO j=1,nb_elements
1789
1790 i=i+1
1791 id_solid_sigi(i) = id_elem
1792 IF (jjhbe == 2) jjhbe = 1
1793
1794
1795
1796
1797 ie=
uel2sys(id_elem,ksysusrs,numels)
1798
1799
1800 IF (ie == 0) THEN
1801
1802 nonexist = nonexist+1
1803 ELSE
1805 1 ixs ,igeo ,itris ,isolnodd00 ,ie ,
1806 2 npt ,nlay ,isolnod ,jjhbe ,igtyp ,
1807 3 isrot ,keyword )
1808
1809 iis= nvsolid1 + nvsolid2 + 4 + nusolid
1810
1811
1812 IF (igtyp /= 21 .AND. igtyp /= 22) THEN
1813 orthoglob(ie) = 1
1814 SIZE = nlay
1821
1822 DO k=1,nlay
1823 sigsp(iis+1,i) = tmpval1(k)
1824 sigsp(iis+2,i) = tmpval2(k)
1825 sigsp(iis+3,i) = tmpval3(k)
1826 sigsp(iis+4,i) = tmpval4(k)
1827 sigsp(iis+5,i) = tmpval5(k)
1828 sigsp(iis+6,i) = tmpval6(k)
1829 iis = iis + 6
1830 ENDDO
1831 ELSE
1832 SIZE = nlay
1835
1836 DO k=1,nlay
1837 sigsp(iis+1,i) = tmpval1(k)
1838 sigsp(iis+2,i) = tmpval2(k)
1839 iis = iis + 6
1840 ENDDO
1841 ENDIF
1842
1843 ENDIF
1844 ENDDO
1845
1846
1847 CASE ( 'EREF' )
1848
1849 CALL hm_get_intv(
'inibri_eref_count',nb_elements,is_available,lsubmodel)
1850
1851 keyword='/INIBRI/EREF '
1852
1853 DO j=1,nb_elements
1860
1861 i=i+1
1862 IF (jjhbe == 2) jjhbe = 1
1863 id_solid_sigi(i) = id_elem
1864
1865
1866
1867
1868 ie=
uel2sys(id_elem,ksysusrs,numels)
1869
1870
1871 IF (ie == 0) THEN
1872
1873 nonexist = nonexist+1
1874 ELSE
1876 1 ixs ,igeo ,itris ,isolnodd00 ,ie ,
1877 2 npt ,nlay ,isolnod ,jjhbe ,igtyp ,
1878 3 isrot ,keyword )
1879
1880
1881 pid = ixs(10,ie)
1882 ng = ies2iparg(ie)
1883 ismrad = iparg(9,ng)
1884 IF (ismrad/=ismstr.OR.(ismstr/=1.AND.ismstr<10)) THEN
1886 . msgtype=msgerror,
1887 . anmode=aninfo,
1888 . i1=itris(ie),
1889 . c1='SMALL STRAIN FORMULATION',
1890 . c2='SOLID PROPERTY',
1891 . i2=igeo(1,pid),
1892 . c3=keyword)
1893 ENDIF
1894 iis= nvsolid1 + nvsolid2 + nvsolid3 + nusolid+4 + nvsolid4 +
1895 . nvsolid5
1896
1897 SIZE = isolnod
1901
1902 DO k=1,isolnod
1903 s(1) =tmpval1(k)
1904 s(2) =tmpval2(k)
1905 s(3) =tmpval3(k)
1906 IF(sub_id /= 0 .AND.(ismstr==1.OR.ismstr==11))
1907 .
CALL subrotvect (s(1),s(2),s(3),rtrans,sub_id,lsubmodel)
1908 sigsp(iis+(k-1)*3+1,i) =s(1)
1909 sigsp(iis+(k-1)*3+2,i) =s(2)
1910 sigsp(iis+(k-1)*3+3,i) =s(3)
1911 ENDDO
1912 SIZE = nsrot
1916
1917 iis = iis + 3*isolnod
1918 DO k=1,nsrot
1919 s(1) =tmpval1(k)
1920 s(2) =tmpval2(k)
1921 s(3) =tmpval3(k)
1922 IF(sub_id /= 0 .AND.(ismstr==1.OR.ismstr==11))
1923 .
CALL subrotvect (s(1),s(2),s(3),rtrans,sub_id,lsubmodel)
1924 sigsp(iis+(k-1)*3+1,i) =s(1)
1925 sigsp(iis+(k-1)*3+2,i) =s(2)
1926 sigsp(iis+(k-1)*3+3,i) =s(3)
1927 ENDDO
1928 straglob(ie)=10
1929
1930 ENDIF
1931 ENDDO
1932
1933
1934 CASE DEFAULT
1935
1936 END SELECT
1937
1938 ENDDO
1939 ENDIF
1940
1941 nibrick = i
1942
1943
1944
1945 nishell = 0
1946 i = 0
1947
1949
1950 IF ( nb_inishe > 0 ) THEN
1951
1952
1954
1955
1956 IF (ktrielc == 0) THEN
1957
1958 DO ie = 1, numelc
1959 itri(ie) = ixc(nixc,ie)
1960 END DO
1961 CALL my_orders(0,work,itri,index,numelc,1)
1962 DO j = 1, numelc
1963 ie=index(j)
1964 ksysusr(j) =ixc(nixc,ie)
1965 ksysusr(numelc+j)=ie
1966 END DO
1967 ktrielc=1
1968 ENDIF
1969
1970 DO ini=1,nb_inishe
1971
1973 . unit_id = uid,
1974 . submodel_index = sub_index,
1975 . submodel_id = sub_id,
1976 . keyword2 = key,
1977 . keyword3 = key2)
1978
1979 IF (key2 /= ' ') glob = .true.
1980
1981 iflagunit = 0
1982 DO iunit=1,unitab%NUNITS
1983 IF (unitab%UNIT_ID(iunit) == uid) THEN
1984 iflagunit = 1
1985 EXIT
1986 ENDIF
1987 ENDDO
1988
1989 IF (uid /= 0.AND.iflagunit == 0) THEN
1990 CALL ancmsg(msgid=659,anmode=aninfo,msgtype=msgerror,
1991 . i2=uid, i1=sub_id, c1='INISHE',
1992 . c2='INISHE',
1993 . c3=' ')
1994 ENDIF
1995
1996 SELECT CASE (key(1:len_trim(key)))
1997
1998 CASE ( 'EPSP_F' )
1999
2000 isigsh =1
2001
2002 CALL hm_get_intv(
'inishe_epsp_f_count',nb_elements,is_available,lsubmodel)
2003
2004 DO j=1,nb_elements
2005
2010
2011
2012
2013
2014 ie=
uel2sys(id_elem,ksysusr,numelc)
2015
2016 IF (ie == 0) THEN
2017
2018 nonexist = nonexist+1
2019 ELSE
2020
2021
2022 ig = ixc(6,ie)
2023 ihbe = igeo(10,ig)
2024 IF (ihbe==12 .OR. ihbe==24) THEN
2025 npgtmp = 4
2026 ELSE
2027 npgtmp = 1
2028 ENDIF
2029 IF (npgtmp /= npg) THEN
2030 CALL fretitl2(titr,igeo(npropgi-ltitr+1,ig),ltitr)
2032 . anmode=aninfo,
2033 . msgtype=msgerror,
2034 . i1=igeo(1,ig),
2035 . c1=titr,
2036 . i2=id_elem)
2037 ENDIF
2038
2039 i = ptshel(ie)
2040 id_sigsh(i) = id_elem
2041 sigsh(1,i) = id_elem
2042 sigsh(2,i) = nip
2043 sigsh(3,i) = thk
2044 sigsh(nvshell - 1,i) = one
2045
2046 IF (npg <= 1) THEN
2047
2048 SIZE = nip*
max(npg,1)
2050
2051 pt=22
2053 k0 = 0
2054 DO WHILE(jj > 0)
2056 DO k=1,l
2057 sigsh(pt+(k-1)*6+5,i) = tmpval(k+k0)
2058 ENDDO
2059 k0=k0+5
2060 pt=pt+30
2061 jj=jj-5
2062 ENDDO
2063
2064 ELSEIF (npg > 1) THEN
2065 sigsh(nvshell,i) = npg
2066
2067 IF (nip == 0) THEN
2068
2069 SIZE = npg
2071
2072 pt=22
2073 DO k=1,npg
2074 sigsh(pt+(k-1)*9+5,i) = tmpval(k)
2075 ENDDO
2076 ELSE
2077
2078 SIZE = nip*npg
2080
2081 pt=22
2082 jj=nip*npg
2083 k0 = 0
2084 DO WHILE(jj > 0)
2086 DO k=1,l
2087 sigsh(pt+(k-1)*6+5,i) = tmpval(k+k0)
2088 ENDDO
2089
2090 k0=k0+5
2091 pt=pt+30
2092 jj=jj-5
2093 END DO
2094
2095 END IF
2096 END IF
2097 ENDIF
2098 ENDDO
2099
2100 CASE ( 'STRS_F' )
2101
2102 isigsh =1
2103
2104
2105
2106 IF ( glob ) THEN
2107 CALL hm_get_intv(
'inishe_strs_f_glob_count',nb_elements,is_available,lsubmodel)
2108
2109 DO j=1,nb_elements
2110
2115
2116
2117
2118
2119 ie=
uel2sys(id_elem,ksysusr,numelc)
2120
2121 IF (ie == 0) THEN
2122
2123 nonexist = nonexist+1
2124 ELSE
2125
2126
2127 ig = ixc(6,ie)
2128 ihbe = igeo(10,ig)
2129 IF (ihbe==12 .OR. ihbe==24) THEN
2130 npgtmp = 4
2131 ELSE
2132 npgtmp = 1
2133 ENDIF
2134 IF (npgtmp /= npg) THEN
2135 CALL fretitl2(titr,igeo(npropgi-ltitr+1,ig),ltitr)
2137 . anmode=aninfo,
2138 . msgtype=msgerror,
2139 . i1=igeo(1,ig),
2140 . c1=titr,
2141 . i2=id_elem)
2142 ENDIF
2143
2144
2150
2151 i = ptshel(ie)
2152 sigsh(1,i) = id_elem
2153 id_sigsh(i) = id_elem
2154 sigsh(2,i) = nip
2155 sigsh(3,i) = thk
2156 sigsh(4,i) = em
2157 sigsh(5,i) = eb
2158 sigsh(17,i) = one
2159 sigsh(nvshell - 1 , i) = one
2160
2161 IF (npg == 0 .OR. npg == 1) THEN
2162
2163 sigsh(14,i) = h1
2164 sigsh(15,i) = h2
2165 sigsh(16,i) = h3
2166
2167 IF (nip == 0) THEN
2168
2172
2176
2177
2181
2186
2187 ELSEIF (nip /= 0) THEN
2188
2189 SIZE = nip
2198
2199
2200 inishvar = 22 + nip*6
2201 DO n
2202 pt = 22 + (n-1)*6
2203
2204 sigsh(pt,i) = tmpval1(n)
2205 sigsh(pt + 1,i) = tmpval2(n)
2206 sigsh(inishvar + n,i) = tmpval3(n)
2207 sigsh(pt + 2,i) = tmpval4(n)
2208 sigsh(pt + 3,i) = tmpval5(n)
2209 sigsh(pt + 4,i) = tmpval6(n)
2210 sigsh(pt + 5,i) = tmpval7(n)
2211 sigsh(inishvar + nip + n,i) = tmpval8(n)
2212 ENDDO
2213 ENDIF
2214
2215 ELSEIF (npg > 1) THEN
2216
2217 sigsh(nvshell,i) = npg
2218
2219 IF (nip == 0) THEN
2220
2221 SIZE = npg
2225 CALL HM_GET_FLOAT_ARRAY('sigma_xy' ,TMPVAL4,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
2226 CALL HM_GET_FLOAT_ARRAY('sigma_yz' ,TMPVAL5,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
2227 CALL HM_GET_FLOAT_ARRAY('sigma_zx' ,TMPVAL6,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
2228 CALL HM_GET_FLOAT_ARRAY('sigma_bx' ,TMPVAL7,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
2229 CALL HM_GET_FLOAT_ARRAY('sigma_by' ,TMPVAL8,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
2230 CALL HM_GET_FLOAT_ARRAY('sigma_bz' ,TMPVAL9,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
2231 CALL HM_GET_FLOAT_ARRAY('sigma_bxy',TMPVAL10,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
2232 CALL HM_GET_FLOAT_ARRAY('sigma_byz',TMPVAL11,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
2233 CALL HM_GET_FLOAT_ARRAY('sigma_bzx',TMPVAL12,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
2234 CALL HM_GET_FLOAT_ARRAY('eps_p' ,TMPVAL13,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
2235!
2236 DO K=1,NPG
2237 PT= 22 + (K-1)*13
2238!
2239 SIGSH(PT ,I) = TMPVAL1(K)
2240 SIGSH(PT+1,I) = TMPVAL2(K)
2241 SIGSH(PT+2,I) = TMPVAL3(K)
2242 SIGSH(PT+3,I) = TMPVAL4(K)
2243 SIGSH(PT+4,I) = TMPVAL5(K)
2244 SIGSH(PT+5,I) = TMPVAL6(K)
2245 SIGSH(PT+6,I) = TMPVAL7(K)
2246 SIGSH(PT+7,I) = TMPVAL8(K)
2247 SIGSH(PT+8,I) = TMPVAL9(K)
2248 SIGSH(PT+9,I) = TMPVAL10(K)
2249 SIGSH(PT+10,I) = TMPVAL11(K)
2250 SIGSH(PT+11,I) = TMPVAL12(K)
2251 SIGSH(PT+12,I) = TMPVAL13(K)
2252 ENDDO ! DO K=1,NPG
2253!
2254 ELSE ! NIP > 0
2255!
2256 SIZE = NIP*NPG
2257 CALL HM_GET_FLOAT_ARRAY('sigma_x' ,TMPVAL1,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
2258 CALL HM_GET_FLOAT_ARRAY('sigma_y' ,TMPVAL2,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
2259 CALL HM_GET_FLOAT_ARRAY('sigma_z' ,TMPVAL3,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
2260 CALL HM_GET_FLOAT_ARRAY('sigma_xy',TMPVAL4,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
2261 CALL HM_GET_FLOAT_ARRAY('sigma_yz',TMPVAL5,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
2262 CALL HM_GET_FLOAT_ARRAY('sigma_zx',TMPVAL6,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
2263 CALL HM_GET_FLOAT_ARRAY('eps_p' ,TMPVAL7,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
2264 CALL HM_GET_FLOAT_ARRAY('pos_nip' ,TMPVAL8,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
2265
2266!
2267 PT = 22
2268 DO N=1,NIP
2269 DO K=1,NPG
2270 L = (N-1)*NPG+K
2271 ! Reading CARD_2 --- sigma_X, sigma_Y, sigma_Z ---
2272 SIGSH(PT ,I) = TMPVAL1(L)
2273 SIGSH(PT+1,I) = TMPVAL2(L)
2274 SIGSH(PT+2,I) = TMPVAL3(L)
2275 SIGSH(PT+3,I) = TMPVAL4(L)
2276 SIGSH(PT+4,I) = TMPVAL5(L)
2277 SIGSH(PT+5,I) = TMPVAL6(L)
2278 SIGSH(PT+6,I) = TMPVAL7(L)
2279 SIGSH(PT+7,I) = TMPVAL8(L)
2280 PT = PT + 8
2281 ENDDO ! DO N=1,NPG
2282 ENDDO ! DO N=1,NIP
2283 ENDIF ! IF (NIP == 0) THEN
2284!----
2285.OR. ENDIF ! IF (NPG == 0 NPG == 1)
2286!----
2287 ENDIF ! IF (IE == 0)
2288 ENDDO ! DO I=1,NB_ELEMENTS
2289
2290! --- 'strs_f' ---
2291
2292.NOT. ELSEIF ( GLOB ) THEN
2293!
2294 CALL HM_GET_INTV('inishe_strs_f_count',NB_ELEMENTS,IS_AVAILABLE,LSUBMODEL)
2295!
2296 DO J=1,NB_ELEMENTS
2297 ! Reading CARD_1 --- ID_ELEM, NIP, NPG, THK ---
2298 CALL HM_GET_INT_ARRAY_INDEX('shell_id',ID_ELEM,J,IS_AVAILABLE,LSUBMODEL)
2299 CALL HM_GET_INT_ARRAY_INDEX('nb_integr',NIP,J,IS_AVAILABLE,LSUBMODEL)
2300 CALL HM_GET_INT_ARRAY_INDEX('npg',NPG,J,IS_AVAILABLE,LSUBMODEL)
2301 CALL HM_GET_FLOAT_ARRAY_INDEX('thick',THK,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
2302!
2303! ELT = SET_USRTOS(ID_ELEM,MAP_TABLES%ISH4NM,NUMELC)
2304! IE = MAP_TABLES%ISH4NM(ELT,2)
2305!
2306 IE=UEL2SYS(ID_ELEM,KSYSUSR,NUMELC)
2307!
2308 IF (IE == 0) THEN
2309 ! Shell was not found. Issue a Warning & Skip.
2310 NONEXIST = NONEXIST+1
2311 ELSE
2312!
2313 ! check is SHELL is QEPH
2314 IG = IXC(6,IE)
2315 IHBE = IGEO(10,IG)
2316.OR. IF (IHBE==12 IHBE==24) THEN
2317 NPGTMP = 4
2318 ELSE
2319 NPGTMP = 1
2320 ENDIF
2321 IF (NPGTMP /= NPG) THEN
2322 CALL FRETITL2(TITR,IGEO(NPROPGI-LTITR+1,IG),LTITR)
2323 CALL ANCMSG(MSGID=26,
2324 . ANMODE=ANINFO,
2325 . MSGTYPE=MSGERROR,
2326 . I1=IGEO(1,IG),
2327 . C1=TITR,
2328 . I2=ID_ELEM)
2329 ENDIF
2330!
2331 ! Reading CARD_2 --- EM,EB,H1,H2,H3 ---
2332 CALL HM_GET_FLOAT_ARRAY_INDEX('em',EM,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
2333 CALL HM_GET_FLOAT_ARRAY_INDEX('eb',EB,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
2334 CALL HM_GET_FLOAT_ARRAY_INDEX('h1',H1,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
2335 CALL HM_GET_FLOAT_ARRAY_INDEX('h2',H2,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
2336 CALL HM_GET_FLOAT_ARRAY_INDEX('h3',H3,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
2337!
2338 I = PTSHEL(IE)
2339
2340 SIGSH(1,I) = ID_ELEM
2341 ID_SIGSH(I) = ID_ELEM
2342 SIGSH(2,I) = NIP
2343 SIGSH(3,I) = THK
2344 SIGSH(4,I) = EM
2345 SIGSH(5,I) = EB
2346 SIGSH(17,I) = ZERO
2347 SIGSH(NVSHELL - 1 , I) = ONE
2348!----
2349.OR. IF (NPG == 0 NPG == 1) THEN
2350!----
2351 SIGSH(14,I) = H1
2352 SIGSH(15,I) = H2
2353 SIGSH(16,I) = H3
2354!
2355 IF (NIP == 0) THEN
2356 ! Reading CARD_3 --- sigma_1, sigma_2, sigma_12, sigma_23, sigma_31 ---
2357 CALL HM_GET_FLOAT_ARRAY('sigma_1' ,SIGSH(22,I),1,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
2358 CALL HM_GET_FLOAT_ARRAY('sigma_2' ,SIGSH(23,I),1,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
2359 CALL HM_GET_FLOAT_ARRAY('sigma_12',SIGSH(24,I),1,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
2360 CALL HM_GET_FLOAT_ARRAY('sigma_23',SIGSH(25,I),1,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
2361 CALL HM_GET_FLOAT_ARRAY('sigma_31',SIGSH(26,I),1,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
2362!
2363 ! Reading CARD_4 --- eps_p, sigma_b1, sigma_b2, sigma_b12 ---
2364 CALL HM_GET_FLOAT_ARRAY('eps_p' ,SIGSH(27,I),1,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
2365 CALL HM_GET_FLOAT_ARRAY('sigma_b1' ,SIGSH(28,I),1,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
2366 CALL HM_GET_FLOAT_ARRAY('sigma_b2' ,SIGSH(29,I),1,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
2367 CALL HM_GET_FLOAT_ARRAY('sigma_b12',SIGSH(30,I),1,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
2368!
2369 ELSEIF (NIP /= 0) THEN
2370!
2371 SIZE = NIP
2372 CALL HM_GET_FLOAT_ARRAY('sigma_1' ,TMPVAL1,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
2373 CALL HM_GET_FLOAT_ARRAY('sigma_2' ,TMPVAL2,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
2374 CALL HM_GET_FLOAT_ARRAY('sigma_12',TMPVAL3,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
2375 CALL HM_GET_FLOAT_ARRAY('sigma_23',TMPVAL4,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
2376 CALL HM_GET_FLOAT_ARRAY('sigma_31',TMPVAL5,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
2377 CALL HM_GET_FLOAT_ARRAY('eps_p' ,TMPVAL6,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
2378!
2379!
2380 INISHVAR = 22 + NIP*6
2381 DO N=1,NIP
2382 PT = 22 + (N-1)*6
2383 ! Reading CARD_3 --- sigma_1, sigma_2, sigma_12 ---
2384 SIGSH(PT ,I) = TMPVAL1(N)
2385 SIGSH(PT+1,I) = TMPVAL2(N)
2386 SIGSH(PT+2,I) = TMPVAL3(N)
2387 SIGSH(PT+3,I) = TMPVAL4(N)
2388 SIGSH(PT+4,I) = TMPVAL5(N)
2389 SIGSH(PT+5,I) = TMPVAL6(N)
2390 ENDDO ! DO K=1,NIP
2391 ENDIF ! IF (NIP = 0) THEN
2392!----
2393 ELSEIF (NPG > 1) THEN
2394!----
2395 SIGSH(NVSHELL,I) = NPG
2396!
2397 IF (NIP == 0) THEN
2398!
2399 SIZE = NPG
2400 CALL HM_GET_FLOAT_ARRAY('sigma_1' ,TMPVAL1,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
2401 CALL HM_GET_FLOAT_ARRAY('sigma_2' ,TMPVAL2,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
2402 CALL HM_GET_FLOAT_ARRAY('sigma_12' ,TMPVAL3,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
2403 CALL HM_GET_FLOAT_ARRAY('sigma_23' ,TMPVAL4,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
2404 CALL HM_GET_FLOAT_ARRAY('sigma_31' ,TMPVAL5,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
2405 CALL HM_GET_FLOAT_ARRAY('eps_p' ,TMPVAL6,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
2406 CALL HM_GET_FLOAT_ARRAY('sigma_b1' ,TMPVAL7,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
2407 CALL HM_GET_FLOAT_ARRAY('sigma_b2' ,TMPVAL8,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
2408 CALL HM_GET_FLOAT_ARRAY('sigma_b12',TMPVAL9,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
2409!
2410 DO K=1,NPG
2411 PT= 22 + (K-1)*9
2412 ! Reading CARD_3 --- sigma_1, sigma_2, sigma_12, sigma_23, sigma_31 ---
2413 SIGSH(PT ,I) = TMPVAL1(K)
2414 SIGSH(PT+1,I) = TMPVAL2(K)
2415 SIGSH(PT+2,I) = TMPVAL3(K)
2416 SIGSH(PT+3,I) = TMPVAL4(K)
2417 SIGSH(PT+4,I) = TMPVAL5(K)
2418 SIGSH(PT+5,I) = TMPVAL6(K)
2419 SIGSH(PT+6,I) = TMPVAL7(K)
2420 SIGSH(PT+7,I) = TMPVAL8(K)
2421 SIGSH(PT+8,I) = TMPVAL9(K)
2422 ENDDO ! DO K=1,NPG
2423!
2424 ELSE ! NIP > 0
2425!
2426 SIZE = NIP*NPG
2427 CALL HM_GET_FLOAT_ARRAY('sigma_1' ,TMPVAL1,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
2428 CALL HM_GET_FLOAT_ARRAY('sigma_2' ,TMPVAL2,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
2429 CALL HM_GET_FLOAT_ARRAY('sigma_12',TMPVAL3,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
2430 CALL HM_GET_FLOAT_ARRAY('sigma_23',TMPVAL4,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
2431 CALL HM_GET_FLOAT_ARRAY('sigma_31',TMPVAL5,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
2432 CALL HM_GET_FLOAT_ARRAY('eps_p' ,TMPVAL6,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
2433!
2434 PT = 22
2435 DO N=1,NIP
2436 DO K=1,NPG
2437 L = (N-1)*NPG+K
2438 ! Reading CARD_3 --- sigma_1, sigma_2, sigma_12 ---
2439 SIGSH(PT ,I) = TMPVAL1(L)
2440 SIGSH(PT+1,I) = TMPVAL2(L)
2441 SIGSH(PT+2,I) = TMPVAL3(L)
2442 SIGSH(PT+3,I) = TMPVAL4(L)
2443 SIGSH(PT+4,I) = TMPVAL5(L)
2444 SIGSH(PT+5,I) = TMPVAL6(L)
2445
2446 PT = PT + 6
2447 ENDDO ! DO K=1,NPG
2448 ENDDO ! DO N=1,NIP
2449 ENDIF ! IF (NIP == 0) THEN
2450!----
2451.OR. ENDIF ! IF (NPG == 0 NPG == 1)
2452!----
2453 ENDIF ! IF (IE == 0)
2454 ENDDO ! DO I=1,NB_ELEMENTS
2455 ENDIF ! IF ( GLOB )
2456
2457 CASE ( 'stra_f' )
2458
2459
2460 ITHKSHEL =2
2461
2462 IF ( GLOB ) THEN
2463 CALL HM_GET_INTV('inishe_stra_f_glob_count',NB_ELEMENTS,IS_AVAILABLE,LSUBMODEL)
2464!
2465 DO J=1,NB_ELEMENTS
2466 ! Reading CARD_1 --- ID_ELEM, NIP, NPG, THK ---
2467 CALL HM_GET_INT_ARRAY_INDEX('shell_id',ID_ELEM,J,IS_AVAILABLE,LSUBMODEL)
2468 CALL HM_GET_INT_ARRAY_INDEX('nb_integr',NIP,J,IS_AVAILABLE,LSUBMODEL)
2469 CALL HM_GET_INT_ARRAY_INDEX('npg',NPG,J,IS_AVAILABLE,LSUBMODEL)
2470 CALL HM_GET_FLOAT_ARRAY_INDEX('thick',THK,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
2471!
2472! ELT = SET_USRTOS(ID_ELEM,MAP_TABLES%ISH4NM,NUMELC)
2473! IE = MAP_TABLES%ISH4NM(ELT,2)
2474!
2475 IE=UEL2SYS(ID_ELEM,KSYSUSR,NUMELC)
2476!
2477 IF (IE == 0) THEN
2478 ! Shell was not found. Issue a Warning & Skip.
2479 NONEXIST = NONEXIST+1
2480 ELSE
2481 I = PTSHEL(IE)
2482 SIGSH(1,I) = ID_ELEM
2483 ID_SIGSH(I) = ID_ELEM
2484 SIGSH(2,I) = NIP
2485 SIGSH(3,I) = THK
2486 SIGSH(17,I) = ONE
2487 SIGSH(NVSHELL - 1 , I) = ONE
2488
2489.OR. IF (NPG == 0 NPG == 1) THEN
2490 IG = IXC(6,IE)
2491 IHBE = IGEO(10,IG)
2492 IF (IHBE==24) SIGSH(NVSHELL,I) = 4
2493 ELSEIF (NPG>1 ) THEN
2494
2495 SIGSH(NVSHELL,I) = NPG
2496 ELSE
2497
2498.OR. ENDIF ! IF (NPG == 0 NPG == 1)
2499 PT = INISHVAR1
2500 IF (IHBE==24) THEN
2501 SIGSH(INISHVAR1,I) = MAX(1,NPG) !have to use this since SIGSH(NVSHELL,I) is used also for stress
2502 PT = PT +1
2503 END IF
2504 NPP = NIP
2505 IF (NPP==0) NPP=2
2506!===============================================
2507 SIZE = NPP*NPG
2508 CALL HM_GET_FLOAT_ARRAY('eps_xx' ,TMPVAL1,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
2509 CALL HM_GET_FLOAT_ARRAY('eps_yy' ,TMPVAL2,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
2510 CALL HM_GET_FLOAT_ARRAY('eps_zz' ,TMPVAL3,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
2511 CALL HM_GET_FLOAT_ARRAY('eps_xy' ,TMPVAL4,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
2512 CALL HM_GET_FLOAT_ARRAY('eps_yz' ,TMPVAL5,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
2513 CALL HM_GET_FLOAT_ARRAY('eps_zx' ,TMPVAL6,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
2514 CALL HM_GET_FLOAT_ARRAY('t' ,TMPVAL7,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
2515!
2516 DO N=1,MIN(2,NPP)
2517 DO IPG=1,MAX(1,NPG)
2518 L = (N-1)*MAX(1,NPG)+IPG
2519 SIGSH(PT ,I) = TMPVAL1(L)
2520 SIGSH(PT+1,I) = TMPVAL2(L)
2521 SIGSH(PT+2,I) = TMPVAL3(L)
2522 SIGSH(PT+3,I) = TMPVAL4(L)
2523 SIGSH(PT+4,I) = TMPVAL5(L)
2524 SIGSH(PT+5,I) = TMPVAL6(L)
2525 SIGSH(PT+6,I) = TMPVAL7(L)
2526 PT=PT+7
2527 ENDDO
2528 ENDDO
2529!===============================================
2530 ENDIF ! IF (IE == 0) THEN
2531 ENDDO ! DO J=1,NB_ELEMENTS
2532!
2533.NOT. ELSEIF ( GLOB ) THEN
2534!
2535 CALL HM_GET_INTV('inishe_stra_f_count',NB_ELEMENTS,IS_AVAILABLE,LSUBMODEL)
2536!
2537 DO J=1,NB_ELEMENTS
2538 ! Reading CARD_1 --- ID_ELEM, NIP, NPG, THK ---
2539 CALL HM_GET_INT_ARRAY_INDEX('shell_id',ID_ELEM,J,IS_AVAILABLE,LSUBMODEL)
2540 CALL HM_GET_INT_ARRAY_INDEX('nb_integr',NIP,J,IS_AVAILABLE,LSUBMODEL)
2541 CALL HM_GET_INT_ARRAY_INDEX('npg',NPG,J,IS_AVAILABLE,LSUBMODEL)
2542 CALL HM_GET_FLOAT_ARRAY_INDEX('thick',THK,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
2543!
2544! ELT = SET_USRTOS(ID_ELEM,MAP_TABLES%ISH4NM,NUMELC)
2545! IE = MAP_TABLES%ISH4NM(ELT,2)
2546!
2547 IE=UEL2SYS(ID_ELEM,KSYSUSR,NUMELC)
2548!
2549 IF (IE == 0) THEN
2550 ! Shell was not found. Issue a Warning & Skip.
2551 NONEXIST = NONEXIST+1
2552 ELSE
2553 I = PTSHEL(IE)
2554 SIGSH(1,I) = ID_ELEM
2555 ID_SIGSH(I) = ID_ELEM
2556 SIGSH(3,I) = THK
2557 SIGSH(NVSHELL - 1 , I) = ONE
2558!
2559.OR. IF (NPG == 0 NPG == 1) THEN
2560!
2561 IG = IXC(6,IE)
2562 IHBE = IGEO(10,IG)
2563 IF (IHBE==24) SIGSH(NVSHELL,I) = 4
2564!
2565 CALL HM_GET_FLOAT_ARRAY('eps_1' ,SIGSH(6,I),1,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
2566 CALL HM_GET_FLOAT_ARRAY('eps_2' ,SIGSH(7,I),1,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
2567 CALL HM_GET_FLOAT_ARRAY('eps_12' ,sigsh(8,i),1,j,is_available,lsubmodel,unitab)
2573
2574 ELSEIF (npg>1 ) THEN
2575
2576 sigsh(nvshell,i) = npg
2577
2578 sigsh(6,i) =zero
2579 sigsh(7,i) =zero
2580 sigsh(8,i) =zero
2581 sigsh(9,i) =zero
2582 sigsh(10,i)=zero
2583 sigsh(11,i)=zero
2584 sigsh(12,i)=zero
2585 sigsh(13,i)=zero
2586
2587 SIZE = npg
2596
2597 DO ipg=1,npg
2598
2599 sigsh(6,i) =sigsh(6,i) +tmpval1(ipg)/npg
2600 sigsh(7,i) =sigsh(7,i) +tmpval2(ipg)/npg
2601 sigsh(8,i) =sigsh(8,i) +tmpval3(ipg)/npg
2602 sigsh(9,i) =sigsh(9,i) +tmpval4(ipg)/npg
2603 sigsh(10,i)=sigsh(10,i)+tmpval5(ipg)/npg
2604 sigsh(11,i)=sigsh(11,i)+tmpval6(ipg)/npg
2605 sigsh(12,i)=sigsh(12,i)+tmpval7(ipg)/npg
2606 sigsh(13,i)=sigsh(13,i)+tmpval8(ipg)/npg
2607 END DO
2608 ELSE
2609
2610 ENDIF
2611 ENDIF
2612 ENDDO
2613 ENDIF
2614
2615
2616 CASE ( 'THICK' )
2617
2618 ithkshel = 1
2619
2620 CALL hm_get_intv(
'no_elems',nb_elements,is_available,lsubmodel)
2621
2622 DO j=1,nb_elements
2625
2626
2627
2628
2629
2630 ie=
uel2sys(id_elem,ksysusr,numelc)
2631
2632 IF (ie == 0) THEN
2633
2634 nonexist = nonexist+1
2635 ELSE
2636 i = ptshel(ie)
2637 sigsh(1,i) = id_elem
2638 id_sigsh(i) = id_elem
2639 sigsh(2,i) = 0
2640 sigsh(3,i) = thk
2641 ENDIF
2642 ENDDO
2643
2644 CASE ( 'EPSP' )
2645
2646
2647 CALL hm_get_intv(
'no_blocks',nb_elements,is_available,lsubmodel)
2648
2649 DO j=1,nb_elements
2652
2653
2654
2655
2656
2657 ie=
uel2sys(id_elem,ksysusr,numelc)
2658
2659 IF (ie == 0) THEN
2660
2661 nonexist = nonexist+1
2662 ELSE
2663 i = ptshel(ie)
2664 sigsh(1,i) = id_elem
2665 id_sigsh(i) = id_elem
2666 sigsh(2,i) = 0
2667 sigsh(27,i)= epsp
2668 ENDIF
2669 ENDDO
2670
2671 CASE ( 'ORTHO' )
2672
2673 CALL hm_get_intv(
'inishe_ortho_count',nb_elements,is_available,lsubmodel)
2674
2675 DO j=1,nb_elements
2678
2682
2683
2684
2685
2686 ie=
uel2sys(id_elem,ksysusr,numelc)
2687
2688 IF (ie == 0) THEN
2689
2690 nonexist = nonexist+1
2691 ELSE
2692
2693 ig = ixc(6,ie)
2694 ihbe = igeo(10,ig)
2695 igtyp=igeo(11,ig)
2696 iortshel = 1
2697 i = ptshel(ie)
2698 pt = nvshell + nushell
2699 sigsh(1,i) = id_elem
2700 id_sigsh(i) = id_elem
2701 IF ( igtyp == 9) nip = nint(geo(npropg*(ig-1)+6))
2702 sigsh(pt + 4 ,i) = nip
2703 sigsh(pt + 5 ,i) = one
2704 IF( ihbe==12 .OR. ihbe==24) THEN
2705 sigsh(nvshell,i) = 4
2706 ELSE
2707 sigsh(nvshell,i) = 1
2708 ENDIF
2709 sigsh(pt+1,i) = vx
2710 sigsh(pt+2,i) = vy
2711 sigsh(pt+3,i) = vz
2712 pt = pt + 5
2713 IF ( igtyp == 9 ) THEN
2716 sigsh(pt+1,i) = phi1*pi/hundred80
2717 sigsh(pt+2,i) = phi2*pi/hundred80
2718 pt = pt + 2
2719 ELSEIF (igtyp == 1 ) THEN
2721 . msgtype=msgerror,
2722 . anmode=aninfo,
2723 . c1='/INISHE/ORTHO',
2724 . c2='SHELL',
2725 . i2=id_elem,i1=igeo(1,ig))
2726 ELSE
2727 SIZE = nip
2730 DO jj = 1,nip
2731 sigsh(pt+1,i) = tmpval1(jj)*pi/hundred80
2732 sigsh(pt+2,i) = tmpval2(jj)*pi/hundred80
2733 pt = pt + 2
2734 ENDDO
2735 ENDIF
2736 ENDIF
2737 ENDDO
2738
2739 CASE ( 'ORTH_LOC' )
2740
2741 CALL hm_get_intv(
'inishe_orth_loc_count',nb_elements,is_available,lsubmodel)
2742
2743 DO j=1,nb_elements
2749
2750
2751
2752
2753
2754 ie=
uel2sys(id_elem,ksysusr,numelc)
2755
2756 IF (ie == 0) THEN
2757
2758 nonexist = nonexist+1
2759 ELSE
2760
2761 ig = ixc(6,ie)
2762 ihbe = igeo(10,ig)
2763 igtyp = igeo(11,ig)
2764 iortshel = 2
2765 i = ptshel(ie)
2766 pt = nvshell + nushell
2767 id_sigsh(i) = id_elem
2768 sigsh(1,i) = id_elem
2769 IF (igtyp == 9) nip = nint(geo(npropg*(ig-1)+6))
2770 sigsh(pt + 4,i) = nip
2771 sigsh(pt + 5,i) = one
2772 IF( ihbe==12 .OR. ihbe==24) THEN
2773 sigsh(nvshell,i) = 4
2774 ELSE
2775 sigsh(nvshell,i) = 1
2776 ENDIF
2777
2778 pt = pt + 5
2779 IF (igtyp == 51 .OR. igtyp == 52) THEN
2780 isubstack = iworksh(3, ie)
2781 nlay = stack%IGEO(1,isubstack)
2782 ipmat = 2 + nlay
2783 IF (ndir /= 2) THEN
2784 DO jj = 1,nlay
2785 mlawly= stack%IGEO(ipmat + jj,isubstack)
2786 IF (mlawly == 58) THEN
2788 . msgtype=msgerror,
2789 . anmode=aninfo,
2790 . c1='SHELL',
2791 . i1=id_elem)
2792 ENDIF
2793 ENDDO
2794 ENDIF
2795 ENDIF
2796
2797 SIZE = nip
2800
2801 ALLOCATE(mlaw_ly(nip))
2802 mlaw_ly = 0
2803 IF (igtyp == 9) THEN
2804 angle1 = tmpval1(1)
2805 IF(flagdeg == 1) angle1 = angle1*pi/hundred80
2806 sigsh(pt+1,i) = cos(angle1)
2807 sigsh(pt+2,i) = sin(angle1)
2808 pt = pt + 2
2809 ELSEIF (igtyp == 10 .OR. igtyp == 11 .OR. igtyp == 16 .OR.
2810 . igtyp == 17 .OR. igtyp == 51 .OR. igtyp == 52) THEN
2811 IF (igtyp == 51 .OR. igtyp == 52)THEN
2812 isubstack = iworksh(3, ie)
2813 nlay = stack%IGEO(1,isubstack)
2814 ipmat = 2 + nlay
2815 ipnpt_lay = ipmat + 2*nlay
2816 IF(nlay /= nip) THEN
2817 IF(ndrape > 0) THEN
2818 ipt = 0
2819 DO jj =1,nlay
2820 nslice = stack%IGEO(ipnpt_lay + jj,isubstack)
2821 DO n = 1, nslice
2822 ipt = ipt + 1
2823 mlaw_ly(ipt)= stack%IGEO(ipmat + jj,isubstack)
2824 ENDDO
2825 ENDDO
2826 ELSE
2827
2828 ENDIF
2829 ELSE
2830 DO jj =1,nlay
2831 mlaw_ly(jj)= stack%IGEO(ipmat + jj,isubstack)
2832 ENDDO
2833 ENDIF
2834 ENDIF
2835 DO jj = 1,nip
2836 angle1 = tmpval1(jj)
2837 angle2 = tmpval2(jj)
2838 IF(flagdeg == 1) angle1 = angle1*pi/hundred80
2839 IF(flagdeg == 1) angle2 = angle2*pi/hundred80
2840
2841 IF (igtyp == 16 .OR.
2842 . (igtyp == 51 .AND. mlaw_ly(jj) == 58) .OR.
2843 . (igtyp == 52 .AND. mlaw_ly(jj) == 58) ) THEN
2844
2845 angle2 = angle2 + angle1
2846 sigsh(pt+1,i) = cos(angle1)
2847 sigsh(pt+2,i) = sin(angle1)
2848 sigsh(pt+3,i) = cos(angle2)
2849 sigsh(pt+4,i) = sin(angle2)
2850 pt = pt + 4
2851 ELSE
2852 sigsh(pt+1,i) = cos(angle1)
2853 sigsh(pt+2,i) = sin(angle1)
2854 pt = pt + 2
2855 ENDIF
2856 ENDDO
2857 ELSEIF (igtyp == 1) THEN
2859 . msgtype=msgerror,
2860 . anmode=aninfo,
2861 . c1='/INISHE/ORTH_LOC',
2862 . c2='SHELL',
2863 . i2=id_elem,i1=igeo(1,ig))
2864 ENDIF
2865 IF(ALLOCATED(mlaw_ly))DEALLOCATE(mlaw_ly)
2866 ENDIF
2867 ENDDO
2868
2869 CASE ( 'SCALE_YLD' )
2870
2871 CALL hm_get_intv(
'inishe_scale_yld_count',nb_elements,is_available,lsubmodel)
2872 iyldini = 1
2873
2874 DO j=1,nb_elements
2878
2879
2880
2881
2882 ie=
uel2sys(id_elem,ksysusr,numelc)
2883
2884 IF (ie == 0) THEN
2885
2886 nonexist = nonexist+1
2887 ELSE
2888 i = ptshel(ie)
2889 sigsh(nvshell + 1,i) = id_elem
2890 id_sigsh(i) = id_elem
2891 sigsh(nvshell + 2,i) = nip
2892 sigsh(nvshell + 3,i) = npg
2893
2894 SIZE = npg*nip
2895 pt = nvshell+nushell+nortshel+nvshell1+3
2896
2898
2899 DO n = 1,npg
2900 DO ip = 1,nip
2901 l = (n-1)*nip+ip
2902
2903 scaleyld = tmpval1(l)
2904 sigsh(pt+l,i) = scaleyld
2905 ENDDO
2906 ENDDO
2907 pt = pt + nip * npg
2908
2909 ENDIF
2910 ENDDO
2911
2912 CASE ( 'AUX' )
2913
2914 CALL hm_get_intv(
'inishe_aux_count',nb_elements,is_available,lsubmodel)
2915 DO j=1,nb_elements
2920
2921
2922
2923
2924
2925 ie=
uel2sys(id_elem,ksysusr,numelc)
2926
2927 IF (ie == 0) THEN
2928
2929 nonexist = nonexist+1
2930 ELSE
2931
2932 imat = ixc(1,ie)
2933 ilaw = ipm(2,imat)
2934 nuvard00 = ipm(8,imat)
2935 IF (nuvard00 > nuvar) THEN
2937 . msgtype=msgwarning,
2938 . anmode=aninfo,
2939 . i1=itri(ie),
2940 . c1='NUMBER OF USER VARIABLES',
2941 . c2='MATERIAL LAW ',
2942 . i2=ipm(1,imat),
2943 . c3='/INISHE/AUX')
2944 ENDIF
2945 IF ((ilaw == 36 .and. (nuvar < 4 .or. nuvard00 > 3) .and.
2946 . nuvard00 < nuvar) .or.
2947 . (ilaw /= 36 .and. ilaw /= 78 .and. ilaw /= 87 .and. ilaw /= 112 .and. nuvard00 < nuvar)) THEN
2949 . msgtype=msgerror,
2950 . anmode=aninfo,
2951 . i1=itri(ie),
2952 . c1='NUMBER OF USER VARIABLES',
2953 . c2='MATERIAL LAW ',
2954 . i2=ipm(1,imat),
2955 . c3='/INISHE/AUX')
2956 ENDIF
2957
2958 i = ptshel(ie)
2959 iuser = 1
2960 nvarsh = nvshell + 4
2961 IF (nip == 0) nip = 1
2962 IF (npg == 0) npg = 1
2963 sigsh(1,i) = id_elem
2964 id_sigsh(i) = id_elem
2965 sigsh(2,i) = nip
2966 sigsh(nvshell,i) = npg
2967
2968 ig = ixc(6,ie)
2969 ihbe = igeo(10,ig)
2970 IF (ihbe==24) sigsh(nvshell,i) = 4
2971
2972 sigsh(nvshell + 2 ,i) = nip
2973 sigsh(nvshell + 3 ,i) = npg
2974 sigsh(nvshell + 4 ,i) = nuvar
2975 pt = 0
2976
2978 nmax_aux = num_lines*nuvar
2980
2981 DO jj=1,num_lines
2982 DO k=1,nuvar
2983 l = nuvar*(jj-1) + k
2984 sigsh(nvarsh+pt+k,i) = tmpval(l)
2985 ENDDO
2986 pt = pt + nuvar
2987 ENDDO ! DO jj=1,num_lines
2988
2989 ENDIF
2990 ENDDO
2991
2992 CASE ( 'FAIL' )
2993
2994 CALL hm_get_intv(
'inishe_fail_count',nb_elements,is_available,lsubmodel)
2995 DO j=1,nb_elements
3006
3007
3008
3009
3010 ie=
uel2sys(id_elem,ksysusr,numelc)
3011
3012 IF (ie == 0) THEN
3013
3014
3015 nonexist = nonexist+1
3016 ELSE
3017
3020 npt_max =
max(nptt,nlay)
3021 nvmax = nvshell1 /(
max(1,npg)*npt_max*5)
3022 IF (id_elem /= nem1) i = ptshel(ie)
3023 nem1 = id_elem
3024 iok = 0
3025
3026 DO k=1,nummat
3027 IF (ipm(1,k) == imat) THEN
3028 imat = k
3029 iok = 1
3030 EXIT
3031 ENDIF
3032 ENDDO
3033 IF (iok == 0) THEN
3035 . msgtype=msgerror,
3036 . anmode=aninfo,
3037 . i1=itri(ie),
3038 . c1='MATERIAL LAW',
3039 . c2='/INISHE/FAIL')
3040 ENDIF
3041
3042 ig = ixc(6,ie)
3043 ihbe = igeo(10,ig)
3044 igtyp=igeo(11,ig)
3045 sigsh(1,i) = id_elem
3046 id_sigsh(i) = id_elem
3047 IF ( igtyp == 9 ) nlay = nint(geo(npropg*(ig-1)+6))
3048 IF ( igtyp == 10 .OR. igtyp == 11) THEN
3049 sigsh(2,i) = nlay
3050 ELSE
3051 sigsh(2,i) = nptt*nlay
3052 ENDIF
3053 IF (ihbe==12 .OR. ihbe==24) THEN
3054 sigsh(nvshell,i) = 4
3055 ELSE
3056 sigsh(nvshell,i) = 1
3057 ENDIF
3058
3059
3060 iok = 0
3061 DO k=1,5
3062 nfail(k) = mat_param(imat)%FAIL(k)%FAIL_ID
3063 IF (ifail == nfail(k) .AND.
3064 . irupt_typ == mat_param(imat)%FAIL(k)%IRUPT) THEN
3065 ifail = k
3066 fail_ini(ifail)=1
3067 iok = 1
3068 EXIT
3069 ENDIF
3070 ENDDO
3071 IF (iok == 0) THEN
3073 . msgtype=msgerror,
3074 . anmode=aninfo,
3075 . i1=itri(ie),
3076 . c1'FAILURE CRITERIA',
3077 . c2='/INISHE/FAIL')
3078 ENDIF
3079
3080 pt = nvshell+nushell+3+nortshel
3084
3085 nmax_fail = num_lines*nvar_rupt
3087
3088 DO jj=1,num_lines
3089 DO k=1,nvar_rupt
3090 l = nvar_rupt*(jj-1) + k
3091 sigsh(pt+l+(ifail-1)*npt_max*npg*nvmax+
3092 . (ilay-1)*nvmax*npg*nptt,i) = tmpval(l)
3093 ENDDO
3094 ENDDO
3095
3096 ENDIF
3097 ENDDO
3098
3099 CASE DEFAULT
3100
3101 END SELECT
3102
3103 ENDDO
3104
3105 ENDIF
3106
3107 nishell = i
3108
3109
3110
3111
3112
3113
3114 i=numshel
3115
3117
3118 IF ( nb_inish3 > 0 ) THEN
3119
3120
3122
3123
3124 IF (ktrieltg==0) THEN
3125
3126 DO ie = 1, numeltg
3127 itri(ie) = ixtg(nixtg,ie)
3128 END DO
3129 CALL my_orders(0,work,itri,index,numeltg,1)
3130 DO j = 1, numeltg
3131 ie=index(j)
3132 ksysusrtg(j) =ixtg(nixtg,ie)
3133 ksysusrtg(numeltg+j)=ie
3134 END DO
3135 ktrieltg=1
3136 END IF
3137
3138 DO ini=1,nb_inish3
3139
3141 . unit_id = uid,
3142 . submodel_index = sub_index,
3143 . submodel_id = sub_id,
3144 . keyword2 = key,
3145 . keyword3 = key2)
3146
3147 IF (key2 /= ' ') glob = .true.
3148
3149
3150
3151 DO iunit=1,unitab%NUNITS
3152 IF (unitab%UNIT_ID(iunit) == uid) THEN
3153 iflagunit = 1
3154 EXIT
3155 ENDIF
3156 ENDDO
3157
3158 IF (uid /= 0.AND.iflagunit == 0) THEN
3159 CALL ancmsg(msgid=659,anmode=aninfo,msgtype=msgerror,
3160 . i2=uid, i1=sub_id, c1='INISH3',
3161 . c2='INISH3',
3162 . c3=' ')
3163 ENDIF
3164
3165 SELECT CASE (key(1:len_trim(key)))
3166
3167 CASE ( 'EPSP_F' )
3168 isigsh =1
3169
3170
3171 CALL hm_get_intv(
'inish3_epsp_f_count',nb_elements,is_available,lsubmodel)
3172
3173 DO j=1,nb_elements
3174
3179
3180
3181
3182
3183 ie =
uel2sys(id_elem,ksysusrtg,numeltg)
3184
3185 IF (ie == 0) THEN
3186
3187 nonexist = nonexist+1
3188 ELSE
3189
3190 i = numshel + ptsh3n(ie)
3191
3192 id_sigsh(i) = id_elem
3193 sigsh(1,i) = id_elem
3194 sigsh(2,i) = nip
3195 sigsh(3,i) = thk
3196 sigsh(nvshell - 1,i) = one
3197
3198 IF (npg <= 1) THEN
3199
3200
3201 SIZE = nip*
max(npg,1)
3203
3204 pt=22
3206 k0 = 0
3207 DO WHILE(jj > 0)
3209 DO k=1,l
3210 sigsh(pt+(k-1)*6+5,i) = tmpval(k+k0)
3211 ENDDO
3212
3213 k0=k0+5
3214 pt=pt+30
3215 jj=jj-5
3216 END DO
3217
3218 ELSEIF (npg > 1) THEN
3219 sigsh(nvshell,i) = npg
3220
3221 IF (nip == 0) THEN
3222
3223 SIZE = npg
3225
3226 pt=22
3227 DO k=1,npg
3228 sigsh(pt+(k-1)*9+5,i) = tmpval(k)
3229 ENDDO
3230 ELSE
3231
3232 SIZE = nip*npg
3234
3235 pt=22
3236 jj=nip*npg
3237 k0 = 0
3238 DO WHILE(jj > 0)
3240 DO k=1,l
3241 sigsh(pt+(k-1)*6+5,i) = tmpval(k+k0)
3242 ENDDO
3243
3244 k0=k0+5
3245 pt=pt+30
3246 jj=jj-5
3247 END DO
3248
3249 END IF
3250 END IF
3251 ENDIF
3252
3253 ENDDO
3254
3255 CASE ( 'STRS_F' )
3256
3257 isigsh =1
3258
3259
3260
3261
3262
3263 IF (glob ) THEN
3264 CALL hm_get_intv(
'inish3_strs_f_glob_count',nb_elements,is_available,lsubmodel)
3265
3266 DO j=1,nb_elements
3267
3272
3273
3274
3275
3276 ie=
uel2sys(id_elem,ksysusrtg,numeltg)
3277
3278 IF (ie == 0) THEN
3279
3280 nonexist = nonexist+1
3281 ELSE
3282
3283
3286
3287 i = numshel + ptsh3n(ie)
3288
3289 sigsh(1,i) = id_elem
3290 id_sigsh(i) = id_elem
3291 sigsh(2,i) = nip
3292 sigsh(3,i) = thk
3293 sigsh(4,i) = em
3294 sigsh(5,i) = eb
3295 sigsh(14,i) = zero
3296 sigsh(15,i) = zero
3297 sigsh(16,i) = zero
3298 sigsh(17,i) = one
3299 sigsh(nvshell - 1,i) = one
3300
3301 IF (npg == 0 .OR. npg == 1) THEN
3302
3303 IF (nip == 0) THEN
3304
3308
3312
3313
3317
3322!
3323 ELSEIF (NIP /= 0) THEN
3324!
3325!! CALL HM_GET_FLOAT_ARRAY('ep',TMPVAL,36,J,IS_AVAILABLE,LSUBMODEL,UNITAB)!
3326!
3327 SIZE = NIP
3328 CALL HM_GET_FLOAT_ARRAY('sigma_x' ,TMPVAL1,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
3329 CALL HM_GET_FLOAT_ARRAY('sigma_y' ,TMPVAL2,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
3330 CALL HM_GET_FLOAT_ARRAY('sigma_z' ,TMPVAL3,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
3331 CALL HM_GET_FLOAT_ARRAY('sigma_xy',TMPVAL4,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
3332 CALL HM_GET_FLOAT_ARRAY('sigma_yz',TMPVAL5,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
3333 CALL HM_GET_FLOAT_ARRAY('sigma_zx',TMPVAL6,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
3334 CALL HM_GET_FLOAT_ARRAY('eps_p' ,TMPVAL7,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
3335 CALL HM_GET_FLOAT_ARRAY('pos_nip' ,TMPVAL8,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
3336
3337!
3338 INISHVAR = 22 + NIP*6
3339 DO N=1,NIP
3340 PT = 22 + (N-1)*6
3341 ! Reading CARD_2 --- sigma_X, sigma_Y, sigma_Z ---
3342 SIGSH(PT,I) = TMPVAL1(N)
3343 SIGSH(PT + 1,I) = TMPVAL2(N)
3344 SIGSH(INISHVAR + N,I) = TMPVAL3(N)
3345 SIGSH(PT + 2,I) = TMPVAL4(N)
3346 SIGSH(PT + 3,I) = TMPVAL5(N)
3347 SIGSH(PT + 4,I) = TMPVAL6(N)
3348 SIGSH(PT + 5,I) = TMPVAL7(N)
3349 SIGSH(INISHVAR+NIP+N,I) = TMPVAL8(N)
3350 ENDDO ! DO K=1,NIP
3351 ENDIF ! IF (NIP = 0) THEN
3352!----
3353 ELSEIF (NPG > 1) THEN
3354!----
3355 SIGSH(NVSHELL,I) = NPG
3356!
3357 IF (NIP == 0) THEN
3358!
3359 SIZE = NPG
3360 CALL HM_GET_FLOAT_ARRAY('sigma_x' ,TMPVAL1,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
3361 CALL HM_GET_FLOAT_ARRAY('sigma_y' ,TMPVAL2,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
3362 CALL HM_GET_FLOAT_ARRAY('sigma_z' ,TMPVAL3,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
3363 CALL HM_GET_FLOAT_ARRAY('sigma_xy' ,TMPVAL4,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
3364 CALL HM_GET_FLOAT_ARRAY('sigma_yz' ,TMPVAL5,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
3365 CALL HM_GET_FLOAT_ARRAY('sigma_zx' ,TMPVAL6,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
3366 CALL HM_GET_FLOAT_ARRAY('sigma_bx' ,TMPVAL7,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
3367 CALL HM_GET_FLOAT_ARRAY('sigma_by' ,TMPVAL8,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
3368 CALL HM_GET_FLOAT_ARRAY('sigma_bz' ,TMPVAL9,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
3369 CALL HM_GET_FLOAT_ARRAY('sigma_bxy',TMPVAL10,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
3370 CALL HM_GET_FLOAT_ARRAY('sigma_byz',TMPVAL11,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
3371 CALL HM_GET_FLOAT_ARRAY('sigma_bzx',TMPVAL12,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
3372 CALL HM_GET_FLOAT_ARRAY('eps_p' ,TMPVAL13,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
3373!
3374 DO K=1,NPG
3375 PT= 22 + (K-1)*13
3376 ! Reading CARD_2 --- sigma_X, sigma_Y, sigma_Z ---
3377 SIGSH(PT ,I) = TMPVAL1(K)
3378 SIGSH(PT+1,I) = TMPVAL2(K)
3379 SIGSH(PT+2,I) = TMPVAL3(K)
3380 SIGSH(PT+3,I) = TMPVAL4(K)
3381 SIGSH(PT+4,I) = TMPVAL5(K)
3382 SIGSH(PT+5,I) = TMPVAL6(K)
3383 SIGSH(PT+6,I) = TMPVAL7(K)
3384 SIGSH(PT+7,I) = TMPVAL8(K)
3385 SIGSH(PT+8,I) = TMPVAL9(K)
3386 SIGSH(PT+9,I) = TMPVAL10(K)
3387 SIGSH(PT+10,I) = TMPVAL11(K)
3388 SIGSH(PT+11,I) = TMPVAL12(K)
3389 SIGSH(PT+12,I) = TMPVAL13(K)
3390! SIGSH(PT:PT+11,I) = SIGSH(PT:PT+11,I)
3391! SIGSH(PT+12,I) = SIGSH(PT+12,I)
3392 ENDDO ! DO K=1,NPG
3393!
3394 ELSE ! NIP > 0
3395!
3396 SIZE = NIP*NPG
3397 CALL HM_GET_FLOAT_ARRAY('sigma_x' ,TMPVAL1,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
3398 CALL HM_GET_FLOAT_ARRAY('sigma_y' ,TMPVAL2,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
3399 CALL HM_GET_FLOAT_ARRAY('sigma_z' ,TMPVAL3,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
3400 CALL HM_GET_FLOAT_ARRAY('sigma_xy',TMPVAL4,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
3401 CALL HM_GET_FLOAT_ARRAY('sigma_yz',TMPVAL5,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
3402 CALL HM_GET_FLOAT_ARRAY('sigma_zx',TMPVAL6,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
3403 CALL HM_GET_FLOAT_ARRAY('eps_p' ,TMPVAL7,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
3404 CALL HM_GET_FLOAT_ARRAY('pos_nip' ,TMPVAL8,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
3405
3406!
3407 PT = 22
3408 DO N=1,NIP
3409 DO K=1,NPG
3410 L = (N-1)*NPG+K
3411 ! Reading CARD_2 --- sigma_X, sigma_Y, sigma_Z ---
3412 SIGSH(PT ,I) = TMPVAL1(L)
3413 SIGSH(PT+1,I) = TMPVAL2(L)
3414 SIGSH(PT+2,I) = TMPVAL3(L)
3415 SIGSH(PT+3,I) = TMPVAL4(L)
3416 SIGSH(PT+4,I) = TMPVAL5(L)
3417 SIGSH(PT+5,I) = TMPVAL6(L)
3418 SIGSH(PT+6,I) = TMPVAL7(L)
3419 SIGSH(PT+7,I) = TMPVAL8(L)
3420 PT = PT + 8
3421 ENDDO ! DO N=1,NPG
3422 ENDDO ! DO J=1,NIP
3423 ENDIF ! IF (NIP == 0) THEN
3424!----
3425.OR. ENDIF ! IF (NPG == 0 NPG == 1)
3426!----
3427 ENDIF ! IF (IE == 0)
3428 ENDDO ! DO I=1,NB_ELEMENTS
3429
3430
3431! --- 'strs_f' ---
3432
3433
3434!! CASE ( 'strs_f' )
3435
3436!! ISIGSH =1
3437!
3438.NOT. ELSEIF ( GLOB ) THEN
3439!
3440 CALL HM_GET_INTV('inish3_strs_f_count',NB_ELEMENTS,IS_AVAILABLE,LSUBMODEL)
3441!
3442 DO J=1,NB_ELEMENTS
3443 ! Reading CARD_1 --- ID_ELEM, NIP, NPG, THK ---
3444 CALL HM_GET_INT_ARRAY_INDEX('shell_id',ID_ELEM,J,IS_AVAILABLE,LSUBMODEL)
3445 CALL HM_GET_INT_ARRAY_INDEX('nb_integr',NIP,J,IS_AVAILABLE,LSUBMODEL)
3446 CALL HM_GET_INT_ARRAY_INDEX('npg',NPG,J,IS_AVAILABLE,LSUBMODEL)
3447 CALL HM_GET_FLOAT_ARRAY_INDEX('thick',THK,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
3448!
3449! ELT = SET_USRTOS(ID_ELEM,MAP_TABLES%ISH3NM,NUMELTG)
3450! IE = MAP_TABLES%ISH3NM(ELT,2)
3451!
3452 IE=UEL2SYS(ID_ELEM,KSYSUSRTG,NUMELTG)
3453!
3454 IF (IE == 0) THEN
3455 ! Shell was not found. Issue a Warning & Skip.
3456 NONEXIST = NONEXIST+1
3457 ELSE
3458!
3459 ! Reading CARD_2 --- EM,EB,H1,H2,H3 ---
3460 CALL HM_GET_FLOAT_ARRAY_INDEX('em',EM,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
3461 CALL HM_GET_FLOAT_ARRAY_INDEX('eb',EB,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
3462!
3463 I = NUMSHEL + PTSH3N(IE)
3464 !!
3465 SIGSH(1,I) = ID_ELEM
3466 ID_SIGSH(I) = ID_ELEM
3467 SIGSH(2,I) = NIP
3468 SIGSH(3,I) = THK
3469 SIGSH(4,I) = EM
3470 SIGSH(5,I) = EB
3471 SIGSH(14,I) = ZERO
3472 SIGSH(15,I) = ZERO
3473 SIGSH(16,I) = ZERO
3474 SIGSH(17,I) = ZERO
3475 SIGSH(NVSHELL - 1,I) = ONE
3476!----
3477.OR. IF (NPG == 0 NPG == 1) THEN
3478!----
3479 IF (NIP == 0) THEN
3480 ! Reading CARD_3 --- sigma_1, sigma_2, sigma_12, sigma_23, sigma_31 ---
3481 CALL HM_GET_FLOAT_ARRAY('sigma_1' ,SIGSH(22,I),1,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
3482 CALL HM_GET_FLOAT_ARRAY('sigma_2' ,SIGSH(23,I),1,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
3483 CALL HM_GET_FLOAT_ARRAY('sigma_12',SIGSH(24,I),1,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
3484 CALL HM_GET_FLOAT_ARRAY('sigma_23',SIGSH(25,I),1,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
3485 CALL HM_GET_FLOAT_ARRAY('sigma_31',SIGSH(26,I),1,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
3486!
3487 ! Reading CARD_4 --- eps_p, sigma_b1, sigma_b2, sigma_b12 ---
3488 CALL HM_GET_FLOAT_ARRAY('eps_p' ,SIGSH(27,I),1,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
3489 CALL HM_GET_FLOAT_ARRAY('sigma_b1' ,SIGSH(28,I),1,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
3490 CALL HM_GET_FLOAT_ARRAY('sigma_b2' ,SIGSH(29,I),1,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
3491 CALL HM_GET_FLOAT_ARRAY('sigma_b12',SIGSH(30,I),1,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
3492!
3493 ELSEIF (NIP /= 0) THEN
3494!
3495!! CALL HM_GET_FLOAT_ARRAY('ep',TMPVAL,36,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
3496!
3497!
3498 SIZE = NIP
3499 CALL HM_GET_FLOAT_ARRAY('sigma_1' ,TMPVAL1,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
3500 CALL HM_GET_FLOAT_ARRAY('sigma_2' ,TMPVAL2,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
3501 CALL HM_GET_FLOAT_ARRAY('sigma_12' ,TMPVAL3,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
3502 CALL HM_GET_FLOAT_ARRAY('sigma_23' ,TMPVAL4,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
3503 CALL HM_GET_FLOAT_ARRAY('sigma_31' ,TMPVAL5,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
3504 CALL HM_GET_FLOAT_ARRAY('eps_p' ,TMPVAL6,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
3505!
3506!
3507 INISHVAR = 22 + NIP*6
3508 DO N=1,NIP
3509 PT = 22 + (N-1)*6
3510 ! Reading CARD_3 --- sigma_1, sigma_2, sigma_12 ---
3511 SIGSH(PT ,I) = TMPVAL1(N)
3512 SIGSH(PT + 1,I) = TMPVAL2(N)
3513 SIGSH(PT + 2,I) = TMPVAL3(N)
3514 SIGSH(PT + 3,I) = TMPVAL4(N)
3515 SIGSH(PT + 4,I) = TMPVAL5(N)
3516 SIGSH(PT + 5,I) = TMPVAL6(N)
3517 ENDDO ! DO K=1,NIP
3518 ENDIF ! IF (NIP = 0) THEN
3519!----
3520 ELSEIF (NPG > 1) THEN
3521!----
3522 SIGSH(NVSHELL,I) = NPG
3523!
3524 IF (NIP == 0) THEN
3525!
3526 SIZE = NPG
3527 CALL HM_GET_FLOAT_ARRAY('sigma_1' ,TMPVAL1,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
3528 CALL HM_GET_FLOAT_ARRAY('sigma_2' ,TMPVAL2,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
3529 CALL HM_GET_FLOAT_ARRAY('sigma_12' ,TMPVAL3,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
3530 CALL HM_GET_FLOAT_ARRAY('sigma_23' ,TMPVAL4,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
3531 CALL HM_GET_FLOAT_ARRAY('sigma_31' ,TMPVAL5,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
3532 CALL HM_GET_FLOAT_ARRAY('eps_p' ,TMPVAL6,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
3533 CALL HM_GET_FLOAT_ARRAY('sigma_b1' ,TMPVAL7,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
3534 CALL HM_GET_FLOAT_ARRAY('sigma_b2' ,TMPVAL8,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
3535 CALL HM_GET_FLOAT_ARRAY('sigma_b12' ,TMPVAL9,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
3536!
3537 DO K=1,NPG
3538 PT= 22 + (K-1)*9
3539 ! Reading CARD_3 --- sigma_1, sigma_2, sigma_12, sigma_23, sigma_31 ---
3540 SIGSH(PT ,I) = TMPVAL1(K)
3541 SIGSH(PT+1,I) = TMPVAL2(K)
3542 SIGSH(PT+2,I) = TMPVAL3(K)
3543 SIGSH(PT+3,I) = TMPVAL4(K)
3544 SIGSH(PT+4,I) = TMPVAL5(K)
3545 SIGSH(PT+5,I) = TMPVAL6(K)
3546 SIGSH(PT+6,I) = TMPVAL7(K)
3547 SIGSH(PT+7,I) = TMPVAL8(K)
3548 SIGSH(PT+8,I) = TMPVAL9(K)
3549 ENDDO ! DO K=1,NPG
3550!
3551 ELSE ! NIP > 0
3552!
3553 SIZE = NIP*NPG
3554 CALL HM_GET_FLOAT_ARRAY('sigma_1' ,TMPVAL1,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
3555 CALL HM_GET_FLOAT_ARRAY('sigma_2' ,TMPVAL2,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
3556 CALL HM_GET_FLOAT_ARRAY('sigma_12' ,TMPVAL3,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
3557 CALL HM_GET_FLOAT_ARRAY('sigma_23' ,TMPVAL4,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
3558 CALL HM_GET_FLOAT_ARRAY('sigma_31' ,TMPVAL5,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
3559 CALL HM_GET_FLOAT_ARRAY('eps_p' ,TMPVAL6,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
3560!
3561 PT = 22
3562 DO N=1,NIP
3563 DO K=1,NPG
3564 L = (N-1)*NPG+K
3565 ! Reading CARD_3 --- sigma_1, sigma_2, sigma_12 ---
3566 SIGSH(PT ,I) = TMPVAL1(L)
3567 SIGSH(PT+1,I) = TMPVAL2(L)
3568 SIGSH(PT+2,I) = TMPVAL3(L)
3569 SIGSH(PT+3,I) = TMPVAL4(L)
3570 SIGSH(PT+4,I) = TMPVAL5(L)
3571 SIGSH(PT+5,I) = TMPVAL6(L)
3572!
3573 PT = PT + 6
3574 ENDDO ! DO K=1,NPG
3575 ENDDO ! DO N=1,NIP
3576 ENDIF ! IF (NIP == 0) THEN
3577!----
3578.OR. ENDIF ! IF (NPG == 0 NPG == 1)
3579!----
3580 ENDIF ! IF (IE == 0)
3581 ENDDO ! DO I=1,NB_ELEMENTS
3582
3583 ENDIF ! IF (GLOB ) THEN
3584
3585
3586 CASE ( 'stra_f' )
3587
3588 ITHKSHEL =2
3589
3590 IF ( GLOB ) THEN
3591 CALL HM_GET_INTV('inish3_stra_f_glob_count',NB_ELEMENTS,IS_AVAILABLE,LSUBMODEL)
3592!
3593 DO J=1,NB_ELEMENTS
3594 ! Reading CARD_1 --- ID_ELEM, NIP, NPG, THK ---
3595 CALL HM_GET_INT_ARRAY_INDEX('shell_id',ID_ELEM,J,IS_AVAILABLE,LSUBMODEL)
3596 CALL HM_GET_INT_ARRAY_INDEX('nb_integr',NIP,J,IS_AVAILABLE,LSUBMODEL)
3597 CALL HM_GET_INT_ARRAY_INDEX('npg',NPG,J,IS_AVAILABLE,LSUBMODEL)
3598 CALL HM_GET_FLOAT_ARRAY_INDEX('thick',THK,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
3599!
3600! ELT = SET_USRTOS(ID_ELEM,MAP_TABLES%ISH3NM,NUMELTG)
3601! IE = MAP_TABLES%ISH3NM(ELT,2)
3602!
3603 IE=UEL2SYS(ID_ELEM,KSYSUSRTG,NUMELTG)
3604!
3605 IF (IE == 0) THEN
3606 ! Shell was not found. Issue a Warning & Skip.
3607 NONEXIST = NONEXIST+1
3608 ELSE
3609 I = NUMSHEL + PTSH3N(IE)
3610 SIGSH(1,I) = ID_ELEM
3611 ID_SIGSH(I) = ID_ELEM
3612 SIGSH(2,I) = NIP
3613 SIGSH(3,I) = THK
3614 SIGSH(17,I) = ONE
3615 SIGSH(NVSHELL,I) = MAX(1,NPG)
3616 SIGSH(NVSHELL - 1,I) = ONE
3617
3618 PT = INISHVAR1
3619 NPP = NIP
3620 IF (NPP==0) NPP=2
3621!===============================================
3622 SIZE = NPP*NPG
3623 CALL HM_GET_FLOAT_ARRAY('eps_xx' ,TMPVAL1,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
3624 CALL HM_GET_FLOAT_ARRAY('eps_yy' ,TMPVAL2,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
3625 CALL HM_GET_FLOAT_ARRAY('eps_zz' ,TMPVAL3,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
3626 CALL HM_GET_FLOAT_ARRAY('eps_xy' ,TMPVAL4,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
3627 CALL HM_GET_FLOAT_ARRAY('eps_yz' ,TMPVAL5,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
3628 CALL HM_GET_FLOAT_ARRAY('eps_zx' ,TMPVAL6,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
3629 CALL HM_GET_FLOAT_ARRAY('t' ,TMPVAL7,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
3630!
3631 DO N=1,MIN(2,NPP)
3632 DO IPG=1,MAX(1,NPG)
3633 L = (N-1)*MAX(1,NPG)+IPG
3634 SIGSH(PT ,I) = TMPVAL1(L)
3635 SIGSH(PT+1,I) = TMPVAL2(L)
3636 SIGSH(PT+2,I) = TMPVAL3(L)
3637 SIGSH(PT+3,I) = TMPVAL4(L)
3638 SIGSH(PT+4,I) = TMPVAL5(L)
3639 SIGSH(PT+5,I) = TMPVAL6(L)
3640 SIGSH(PT+6,I) = TMPVAL7(L)
3641 PT=PT+7
3642 ENDDO
3643 ENDDO
3644!===============================================
3645 ENDIF ! IF (IE == 0) THEN
3646 ENDDO ! DO J=1,NB_ELEMENTS
3647!
3648.NOT. ELSEIF ( GLOB ) THEN
3649!C---------local sy
3650!
3651 CALL HM_GET_INTV('inish3_stra_f_count',NB_ELEMENTS,IS_AVAILABLE,LSUBMODEL)
3652!
3653 DO J=1,NB_ELEMENTS
3654 ! Reading CARD_1 --- ID_ELEM, NIP, NPG, THK ---
3655 CALL HM_GET_INT_ARRAY_INDEX('shell_id',ID_ELEM,J,IS_AVAILABLE,LSUBMODEL)
3656 CALL HM_GET_INT_ARRAY_INDEX('nb_integr',NIP,J,IS_AVAILABLE,LSUBMODEL)
3657 CALL HM_GET_INT_ARRAY_INDEX('npg',NPG,J,IS_AVAILABLE,LSUBMODEL)
3658 CALL HM_GET_FLOAT_ARRAY_INDEX('thick',THK,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
3659!
3660! ELT = SET_USRTOS(ID_ELEM,MAP_TABLES%ISH3NM,NUMELTG)
3661! IE = MAP_TABLES%ISH4NM(ELT,2)
3662!
3663 IE=UEL2SYS(ID_ELEM,KSYSUSRTG,NUMELTG)
3664!
3665 IF (IE == 0) THEN
3666 ! Shell was not found. Issue a Warning & Skip.
3667 NONEXIST = NONEXIST+1
3668 ELSE
3669 I = NUMSHEL + PTSH3N(IE)
3670 SIGSH(1,I) = ID_ELEM
3671 ID_SIGSH(I) = ID_ELEM
3672 SIGSH(3,I) = THK
3673 SIGSH(NVSHELL - 1,I) = ONE
3674!
3675.OR. IF (NPG == 0 NPG == 1) THEN
3676!
3677 CALL HM_GET_FLOAT_ARRAY('eps_1' ,SIGSH(6,I),1,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
3678 CALL HM_GET_FLOAT_ARRAY('eps_2' ,SIGSH(7,I),1,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
3679 CALL HM_GET_FLOAT_ARRAY('eps_12' ,SIGSH(8,I),1,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
3680 CALL HM_GET_FLOAT_ARRAY('eps_23' ,SIGSH(9,I),1,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
3681 CALL HM_GET_FLOAT_ARRAY('eps_31' ,SIGSH(10,I),1,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
3682 CALL HM_GET_FLOAT_ARRAY('k1' ,SIGSH(11,I),1,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
3683 CALL HM_GET_FLOAT_ARRAY('k2' ,SIGSH(12,I),1,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
3684 CALL HM_GET_FLOAT_ARRAY('k12' ,SIGSH(13,I),1,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
3685!
3686 ELSEIF (NPG>1 ) THEN
3687!
3688 SIGSH(NVSHELL,I) = NPG
3689
3690 SIGSH(6,I) =ZERO
3691 SIGSH(7,I) =ZERO
3692 SIGSH(8,I) =ZERO
3693 SIGSH(9,I) =ZERO
3694 SIGSH(10,I)=ZERO
3695 SIGSH(11,I)=ZERO
3696 SIGSH(12,I)=ZERO
3697 SIGSH(13,I)=ZERO
3698!
3699 SIZE = NPG
3700 CALL HM_GET_FLOAT_ARRAY('eps_1' ,TMPVAL1,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
3701 CALL HM_GET_FLOAT_ARRAY('eps_2' ,TMPVAL2,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
3702 CALL HM_GET_FLOAT_ARRAY('eps_12' ,TMPVAL3,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
3703 CALL HM_GET_FLOAT_ARRAY('eps_23' ,TMPVAL4,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
3704 CALL HM_GET_FLOAT_ARRAY('eps_31' ,TMPVAL5,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
3705 CALL HM_GET_FLOAT_ARRAY('k1' ,TMPVAL6,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
3706 CALL HM_GET_FLOAT_ARRAY('k2' ,TMPVAL7,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
3707 CALL HM_GET_FLOAT_ARRAY('k12' ,TMPVAL8,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
3708!
3709 DO IPG=1,NPG
3710 SIGSH(6,I) =SIGSH(6,I) +TMPVAL1(IPG)/NPG
3711 SIGSH(7,I) =SIGSH(7,I) +TMPVAL2(IPG)/NPG
3712 SIGSH(8,I) =SIGSH(8,I) +TMPVAL3(IPG)/NPG
3713 SIGSH(9,I) =SIGSH(9,I) +TMPVAL4(IPG)/NPG
3714 SIGSH(10,I)=SIGSH(10,I)+TMPVAL5(IPG)/NPG
3715 SIGSH(11,I)=SIGSH(11,I)+TMPVAL6(IPG)/NPG
3716 SIGSH(12,I)=SIGSH(12,I)+TMPVAL7(IPG)/NPG
3717 SIGSH(13,I)=SIGSH(13,I)+TMPVAL8(IPG)/NPG
3718 END DO
3719 ELSE
3720
3721.OR. ENDIF ! IF (NPG == 0 NPG == 1)
3722 ENDIF ! IF (IE == 0) THEN
3723 ENDDO ! DO J=1,NB_ELEMENTS
3724 ENDIF ! IF ( GLOB ) THEN
3725
3726 CASE ( 'thick' )
3727
3728 ITHKSHEL = 1
3729!
3730 CALL HM_GET_INTV('no_elems',NB_ELEMENTS,IS_AVAILABLE,LSUBMODEL)
3731!
3732 DO J=1,NB_ELEMENTS
3733 CALL HM_GET_INT_ARRAY_INDEX('shell_id',ID_ELEM,J,IS_AVAILABLE,LSUBMODEL)
3734 CALL HM_GET_FLOAT_ARRAY_INDEX('thick' ,THK,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
3735!
3736!
3737! ELT = SET_USRTOS(ID_ELEM,MAP_TABLES%ISH3NM,NUMELTG)
3738! IE = MAP_TABLES%ISH3NM(ELT,2)
3739!
3740 IE=UEL2SYS(ID_ELEM,KSYSUSRTG,NUMELTG)
3741!
3742 IF (IE == 0) THEN
3743 ! Shell was not found. Issue a Warning & Skip.
3744 NONEXIST = NONEXIST+1
3745 ELSE
3746 I = NUMSHEL + PTSH3N(IE)
3747 SIGSH(1,I) = ID_ELEM
3748 ID_SIGSH(I) = ID_ELEM
3749 SIGSH(2,I) = 0
3750 SIGSH(3,I) = THK
3751 ENDIF ! IF (IE == 0)
3752 ENDDO ! DO J=1,NB_ELEMENTS
3753
3754 CASE ( 'epsp' )
3755
3756!
3757 CALL HM_GET_INTV('no_blocks',NB_ELEMENTS,IS_AVAILABLE,LSUBMODEL)
3758!
3759 DO J=1,NB_ELEMENTS
3760 CALL HM_GET_INT_ARRAY_INDEX('shell_id',ID_ELEM,J,IS_AVAILABLE,LSUBMODEL)
3761 CALL HM_GET_FLOAT_ARRAY_INDEX('ep' ,EPSP,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
3762!
3763! ELT = SET_USRTOS(ID_ELEM,MAP_TABLES%ISH3NM,NUMELTG)
3764! IE = MAP_TABLES%ISH3NM(ELT,2)
3765!
3766 IE=UEL2SYS(ID_ELEM,KSYSUSRTG,NUMELTG)
3767!
3768 IF (IE == 0) THEN
3769 ! Shell was not found. Issue a Warning & Skip.
3770 NONEXIST = NONEXIST+1
3771 ELSE
3772 I = NUMSHEL + PTSH3N(IE)
3773 SIGSH(1,I) = ID_ELEM
3774 ID_SIGSH(I) = ID_ELEM
3775 SIGSH(2,I) = 0
3776 SIGSH(27,I)= EPSP
3777 ENDIF ! IF (IE == 0) THEN
3778 ENDDO ! DO J=1,NB_ELEMENTS
3779!-------------------
3780 CASE ( 'ortho' )
3781!-------------------
3782 CALL HM_GET_INTV('inish3_ortho_count',NB_ELEMENTS,IS_AVAILABLE,LSUBMODEL)
3783!
3784 DO J=1,NB_ELEMENTS
3785 CALL HM_GET_INT_ARRAY_INDEX('shell_id',ID_ELEM,J,IS_AVAILABLE,LSUBMODEL)
3786 CALL HM_GET_INT_ARRAY_INDEX('nb_integr',NIP,J,IS_AVAILABLE,LSUBMODEL)
3787!! CALL HM_GET_INT_ARRAY_INDEX('prop_type',IGTYP,J,IS_AVAILABLE,LSUBMODEL)
3788 CALL HM_GET_FLOAT_ARRAY_INDEX('vx',VX,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
3789 CALL HM_GET_FLOAT_ARRAY_INDEX('vy',VY,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
3790 CALL HM_GET_FLOAT_ARRAY_INDEX('vz',VZ,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
3791!
3792! ELT = SET_USRTOS(ID_ELEM,MAP_TABLES%ISH3NM,NUMELTH)
3793! IE = MAP_TABLES%ISH3NM(ELT,2)
3794!
3795 IE=UEL2SYS(ID_ELEM,KSYSUSRTG,NUMELTG)
3796!
3797 IF (IE == 0) THEN
3798 ! Shell was not found. Issue a Warning & Skip.
3799 NONEXIST = NONEXIST+1
3800 ELSE
3801!
3802 IG = IXTG(5,IE)
3803 ISH3N = IGEO(18,IG)
3804 IGTYP=IGEO(11,IG)
3805 IORTSHEL = 1
3806 I = NUMSHEL + PTSH3N(IE)
3807 PT = NVSHELL+NUSHELL
3808 !! SIGSH(1,I) = ID_ELEM
3809 ID_SIGSH(I) = ID_ELEM
3810 IF ( IGTYP == 9) NIP = NINT(GEO(NPROPG*(IG-1)+6))
3811 SIGSH(PT + 4,I) = NIP
3812 IF( ISH3N == 30 ) THEN
3813 SIGSH(NVSHELL,I) = 3
3814 ELSE
3815 SIGSH(NVSHELL,I) = 1
3816 ENDIF
3817 SIGSH(PT+1,I) = VX
3818 SIGSH(PT+2,I) = VY
3819 SIGSH(PT+3,I) = VZ
3820 PT = PT+4
3821 IF ( IGTYP == 9 ) THEN
3822 CALL HM_GET_FLOAT_ARRAY_INDEX('phi_1',PHI1,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
3823 CALL HM_GET_FLOAT_ARRAY_INDEX('phi_2',PHI2,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
3824 SIGSH(PT+1,I) = PHI1*PI/HUNDRED80
3825 SIGSH(PT+2,I) = PHI2*PI/HUNDRED80
3826 PT = PT + 2
3827 ELSEIF (IGTYP == 1 ) THEN
3828 CALL ANCMSG(MSGID=761,
3829 . MSGTYPE=MSGERROR,
3830 . ANMODE=ANINFO,
3831 . C1='/inish3/ortho',
3832 . C2='sh3n',
3833 . I2=ID_ELEM,I1=IGEO(1,IG))
3834 ELSE
3835 SIZE = NIP
3836 CALL HM_GET_FLOAT_ARRAY('phi_1_array',TMPVAL1,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
3837 CALL HM_GET_FLOAT_ARRAY('phi_2_array',TMPVAL2,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
3838 DO JJ = 1,NIP
3839 SIGSH(PT+1,I) = TMPVAL1(JJ)*PI/HUNDRED80
3840 SIGSH(PT+2,I) = TMPVAL2(JJ)*PI/HUNDRED80
3841 PT = PT + 2
3842 ENDDO ! DO JJ = 1,NIP
3843 ENDIF ! IF ( IGTYP == 9)
3844 ENDIF ! IF (IE == 0) THEN
3845 ENDDO ! DO J=1,NB_ELEMENTS
3846!-------------------
3847 CASE ( 'orth_loc' )
3848!-------------------
3849 CALL HM_GET_INTV('inish3_orth_loc_count',NB_ELEMENTS,IS_AVAILABLE,LSUBMODEL)
3850!
3851 DO J=1,NB_ELEMENTS
3852 CALL HM_GET_INT_ARRAY_INDEX('shell_id',ID_ELEM,J,IS_AVAILABLE,LSUBMODEL)
3853 CALL HM_GET_INT_ARRAY_INDEX('nb_lay',NIP,J,IS_AVAILABLE,LSUBMODEL)
3854 CALL HM_GET_INT_ARRAY_INDEX('npg',NPG,J,IS_AVAILABLE,LSUBMODEL)
3855 CALL HM_GET_INT_ARRAY_INDEX('ndir',NDIR,J,IS_AVAILABLE,LSUBMODEL)
3856 CALL HM_GET_INT_ARRAY_INDEX('iunit',FLAGDEG,J,IS_AVAILABLE,LSUBMODEL)
3857!
3858!
3859! ELT = SET_USRTOS(ID_ELEM,MAP_TABLES%ISH3NM,NUMELTG)
3860! IE = MAP_TABLES%ISH3NM(ELT,2)
3861!
3862 IE=UEL2SYS(ID_ELEM,KSYSUSRTG,NUMELTG)
3863!
3864 IF (IE == 0) THEN
3865 ! Shell was not found. Issue a Warning & Skip.
3866 NONEXIST = NONEXIST+1
3867 ELSE
3868!
3869 IG = IXTG(5,IE)
3870 ISH3N = IGEO(18,IG)
3871 IGTYP = IGEO(11,IG)
3872 IORTSHEL = 2
3873 I = NUMSHEL + PTSH3N(IE)
3874 PT = NVSHELL + NUSHELL
3875 SIGSH(1,I) = ID_ELEM
3876 ID_SIGSH(I) = ID_ELEM
3877 IF (IGTYP == 9) NIP = NINT(GEO(NPROPG*(IG-1)+6))
3878 SIGSH(PT + 4 ,I) = NIP
3879 SIGSH(PT + 5,I) = ONE
3880 IF (ISH3N == 30) THEN
3881 SIGSH(NVSHELL,I) = 3
3882 ELSE
3883 SIGSH(NVSHELL,I) = 1
3884 ENDIF
3885 PT = PT + 5
3886!
3887.OR. IF (IGTYP == 51 IGTYP == 52) THEN
3888 ISUBSTACK = IWORKSH(3, NUMELC + IE)
3889 NLAY = STACK%IGEO(1,ISUBSTACK)
3890 IPMAT = 2 + NLAY
3891 IF (NDIR /= 2) THEN
3892 DO JJ = 1,NLAY
3893 MLAWLY= STACK%IGEO(IPMAT + JJ,ISUBSTACK) ! layer material
3894 IF (MLAWLY == 58) THEN
3895 CALL ANCMSG(MSGID=1126,
3896 . MSGTYPE=MSGERROR,
3897 . ANMODE=ANINFO,
3898 . C1='sh3n',
3899 . I1=ID_ELEM)
3900 ENDIF
3901 ENDDO
3902 ENDIF
3903.OR. ENDIF ! IF (IGTYP == 51 IGTYP == 52)
3904!
3905 ALLOCATE(MLAW_LY(NIP))
3906 MLAW_LY = 0
3907 SIZE = NIP
3908 CALL HM_GET_FLOAT_ARRAY('phi_i' ,TMPVAL1,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
3909 CALL HM_GET_FLOAT_ARRAY('alpha_i',TMPVAL2,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
3910!
3911 IF (IGTYP == 9) THEN
3912 ANGLE1 = TMPVAL1(1) ! one integration point
3913 IF(FLAGDEG == 1) ANGLE1 = ANGLE1*PI/HUNDRED80
3914 SIGSH(PT+1,I) = COS(ANGLE1)
3915 SIGSH(PT+2,I) = SIN(ANGLE1)
3916 PT = PT + 2
3917.OR..OR..OR. ELSEIF (IGTYP == 10 IGTYP == 11 IGTYP == 16
3918.OR..OR. . IGTYP == 17 IGTYP == 51 IGTYP == 52) THEN
3919.OR. IF (IGTYP == 51 IGTYP == 52)THEN
3920 ISUBSTACK = IWORKSH(3, NUMELC + IE)
3921 NLAY = STACK%IGEO(1,ISUBSTACK) !
3922 IPMAT = 2 + NLAY
3923 IPNPT_LAY = IPMAT + 2*NLAY
3924 IF(NLAY /= NIP) THEN
3925 IF(NDRAPE > 0) THEN
3926 IPT = 0
3927 DO JJ =1,NLAY
3928 NSLICE = STACK%IGEO(IPNPT_LAY + JJ,ISUBSTACK)
3929 DO N = 1, NSLICE
3930 IPT = IPT + 1
3931 MLAW_LY(IPT)= STACK%IGEO(IPMAT + JJ,ISUBSTACK)
3932 ENDDO
3933 ENDDO
3934 ELSE
3935 ! error message
3936 ENDIF ! ndrape
3937 ELSE
3938 DO JJ =1,NLAY
3939 MLAW_LY(JJ)= STACK%IGEO(IPMAT + JJ,ISUBSTACK)! layer material
3940 ENDDO
3941 ENDIF
3942 ENDIF
3943 DO JJ = 1,NIP
3944 ANGLE1 = TMPVAL1(JJ)
3945 ANGLE2 = TMPVAL2(JJ)
3946 IF(FLAGDEG == 1) ANGLE1 = ANGLE1*PI/HUNDRED80
3947 IF(FLAGDEG == 1) ANGLE2 = ANGLE2*PI/HUNDRED80
3948!
3949.OR. IF (IGTYP == 16
3950.AND..OR. . (IGTYP == 51 MLAW_LY(JJ) == 58)
3951.AND. . (IGTYP == 52 MLAW_LY(JJ) == 58) ) THEN
3952!
3953 ANGLE2 = ANGLE2 + ANGLE1
3954 SIGSH(PT+1,I) = COS(ANGLE1)
3955 SIGSH(PT+2,I) = SIN(ANGLE1)
3956 SIGSH(PT+3,I) = COS(ANGLE2)
3957 SIGSH(PT+4,I) = SIN(ANGLE2)
3958 PT = PT + 4
3959 ELSE
3960 ANGLE1 = TMPVAL1(JJ)
3961 ANGLE1 = ANGLE1*PI/HUNDRED80
3962 SIGSH(PT+1,I) = COS(ANGLE1)
3963 SIGSH(PT+2,I) = SIN(ANGLE1)
3964 PT = PT + 2
3965 ENDIF
3966 ENDDO ! DO JJ = 1,NIP
3967 ELSEIF (IGTYP == 1) THEN
3968 CALL ANCMSG(MSGID=761,
3969 . MSGTYPE=MSGERROR,
3970 . ANMODE=ANINFO,
3971 . C1='/inish3/orth_loc',
3972 . C2='3 nodes shell',
3973 . I2=ID_ELEM,I1=IGEO(1,IG))
3974 ENDIF ! IF (IGTYP == 9)
3975 IF(ALLOCATED(MLAW_LY))DEALLOCATE(MLAW_LY)
3976 ENDIF ! IF (IE == 0) THEN
3977 ENDDO ! DO J=1,NB_ELEMENTS
3978!-------------------
3979 CASE ( 'scale_yld' )
3980!-------------------
3981 CALL HM_GET_INTV('inish3_scale_yld_count',NB_ELEMENTS,IS_AVAILABLE,LSUBMODEL)
3982 IYLDINI = 1
3983!
3984 DO J=1,NB_ELEMENTS
3985 CALL HM_GET_INT_ARRAY_INDEX('shell_id',ID_ELEM,J,IS_AVAILABLE,LSUBMODEL)
3986 CALL HM_GET_INT_ARRAY_INDEX('nb_integr',NIP,J,IS_AVAILABLE,LSUBMODEL)
3987 CALL HM_GET_INT_ARRAY_INDEX('npg',NPG,J,IS_AVAILABLE,LSUBMODEL)
3988!
3989! ELT = SET_USRTOS(ID_ELEM,MAP_TABLES%ISH3NM,NUMELTG)
3990! IE = MAP_TABLES%ISH3NM(ELT,2)
3991!
3992 IE=UEL2SYS(ID_ELEM,KSYSUSRTG,NUMELTG)
3993!
3994 IF (IE == 0) THEN
3995 ! Shell was not found. Issue a Warning & Skip.
3996 NONEXIST = NONEXIST+1
3997 ELSE
3998 I = NUMSHEL + PTSH3N(IE)
3999 SIGSH(NVSHELL + 1,I) = ID_ELEM ! elt ID
4000 ID_SIGSH(I) = ID_ELEM
4001 SIGSH(NVSHELL + 2,I) = NIP ! integ point
4002 SIGSH(NVSHELL + 3,I) = NPG
4003!
4004 SIZE = NPG*NIP
4005 CALL HM_GET_FLOAT_ARRAY('alpha_ij' ,TMPVAL1,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
4006!
4007 DO N = 1,NPG
4008 DO IP = 1,NIP
4009 L = (N-1)*NIP+IP
4010 PT=NVSHELL + 3 !22
4011 SCALEYLD = TMPVAL1(L)
4012 SIGSH(PT+ L,I) = SCALEYLD
4013 ENDDO !IP = 1,NIP
4014 ENDDO !N = 1,NPG
4015 PT = PT + NIP * NPG
4016!
4017 ENDIF ! IF (IE == 0) THEN
4018 ENDDO ! DO J=1,NB_ELEMENTS
4019!-------------------
4020 CASE ( 'aux' )
4021!-------------------
4022 CALL HM_GET_INTV('inish3_aux_count',NB_ELEMENTS,IS_AVAILABLE,LSUBMODEL)
4023 DO J=1,NB_ELEMENTS
4024 CALL HM_GET_INT_ARRAY_INDEX('shell_id',ID_ELEM,J,IS_AVAILABLE,LSUBMODEL)
4025 CALL HM_GET_INT_ARRAY_INDEX('nb_integr',NIP,J,IS_AVAILABLE,LSUBMODEL)
4026 CALL HM_GET_INT_ARRAY_INDEX('npg',NPG,J,IS_AVAILABLE,LSUBMODEL)
4027 CALL HM_GET_INT_ARRAY_INDEX('nvars',NUVAR,J,IS_AVAILABLE,LSUBMODEL)
4028!
4029!
4030! ELT = SET_USRTOS(ID_ELEM,MAP_TABLES%ISH3NM,NUMELTG)
4031! IE = MAP_TABLES%ISH3NM(ELT,2)
4032!
4033 IE=UEL2SYS(ID_ELEM,KSYSUSRTG,NUMELTG)
4034!
4035 IF (IE == 0) THEN
4036 ! Shell was not found. Issue a Warning & Skip.
4037 NONEXIST = NONEXIST+1
4038 ELSE
4039
4040 IMAT = IXTG(1,IE)
4041 ILAW = IPM(2,IMAT)
4042 NUVARD00 = IPM(8,IMAT)
4043 IF (NUVARD00 > NUVAR) THEN
4044 CALL ANCMSG(MSGID=1121,
4045 . MSGTYPE=MSGWARNING,
4046 . ANMODE=ANINFO,
4047 . I1=ITRI(IE),
4048 . C1='number of user variables',
4049 . C2='material law ',
4050 . I2=IPM(1,IMAT),
4051 . C3='/inish3/aux')
4052 ENDIF
4053.and..or..and. IF ((ILAW == 36 (NUVAR < 4 NUVARD00 > 3)
4054.or. . NUVARD00 < NUVAR)
4055.and..and..and..and. . (ILAW /= 36 ILAW /= 78 ILAW /= 87 ILAW /= 112 NUVARD00 < NUVAR)) THEN
4056 CALL ANCMSG(MSGID=695,
4057 . MSGTYPE=MSGERROR,
4058 . ANMODE=ANINFO,
4059 . I1=ITRI(IE),
4060 . C1='number of user variables',
4061 . C2='material law ',
4062 . I2=IPM(1,IMAT),
4063 . C3='/inish3/aux')
4064 ENDIF
4065
4066 I = NUMSHEL + PTSH3N(IE)
4067 IUSER = 1
4068 NVARSH = NVSHELL + 4
4069 IF (NIP == 0) NIP = 1
4070 IF (NPG == 0) NPG = 1
4071 SIGSH(1,I) = ID_ELEM
4072 ID_SIGSH(I) = ID_ELEM
4073 SIGSH(2,I) = NIP
4074 SIGSH(NVSHELL,I) = NPG
4075 SIGSH(NVSHELL + 2 ,I) = NIP
4076 SIGSH(NVSHELL + 3 ,I) = NPG
4077 SIGSH(NVSHELL + 4 ,I) = NUVAR
4078 PT = 0
4079!
4080 CALL HM_GET_INT_ARRAY_INDEX('num_lines',NUM_LINES,J,IS_AVAILABLE,LSUBMODEL)
4081 NMAX_AUX = NUM_LINES*NUVAR
4082 CALL HM_GET_FLOAT_ARRAY('v' ,TMPVAL,NMAX_AUX,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
4083!
4084 DO JJ=1,NUM_LINES
4085 DO K=1,NUVAR
4086 L = NUVAR*(JJ-1) + K
4087 SIGSH(NVARSH+PT+K,I) = TMPVAL(L)
4088 ENDDO ! DO K=1,NUVAR
4089 PT = PT + NUVAR
4090 ENDDO ! DO JJ=1,NUM_LINES
4091!
4092 ENDIF ! IF (IE == 0) THEN
4093 ENDDO ! DO J=1,NB_ELEMENTS
4094!-------------------
4095 CASE ( 'fail' )
4096!-------------------
4097 CALL HM_GET_INTV('inish3_fail_count',NB_ELEMENTS,IS_AVAILABLE,LSUBMODEL)
4098 DO J=1,NB_ELEMENTS
4099 CALL HM_GET_INT_ARRAY_INDEX('shell_id' ,ID_ELEM,J,IS_AVAILABLE,LSUBMODEL)
4100 CALL HM_GET_INT_ARRAY_INDEX('nlay' ,NLAY,J,IS_AVAILABLE,LSUBMODEL)
4101 CALL HM_GET_INT_ARRAY_INDEX('npg' ,NPG,J,IS_AVAILABLE,LSUBMODEL)
4102 CALL HM_GET_INT_ARRAY_INDEX('nptt' ,NPTT,J,IS_AVAILABLE,LSUBMODEL)
4103 CALL HM_GET_INT_ARRAY_INDEX('lay_id' ,ILAY,J,IS_AVAILABLE,LSUBMODEL)
4104 CALL HM_GET_INT_ARRAY_INDEX('fail_id' ,IFAIL,J,IS_AVAILABLE,LSUBMODEL)
4105 CALL HM_GET_INT_ARRAY_INDEX('ifail_typ',IRUPT_TYP,J,IS_AVAILABLE,LSUBMODEL)
4106 CALL HM_GET_INT_ARRAY_INDEX('nvar' ,NVAR_RUPT,J,IS_AVAILABLE,LSUBMODEL)
4107 CALL HM_GET_INT_ARRAY_INDEX('mat_id' ,IMAT,J,IS_AVAILABLE,LSUBMODEL)
4108 CALL HM_GET_INT_ARRAY_INDEX('num_lines',NUM_LINES,J,IS_AVAILABLE,LSUBMODEL)
4109!
4110! ELT = SET_USRTOS(ID_ELEM,MAP_TABLES%ISH3NM,NUMELTG)
4111! IE = MAP_TABLES%ISH3NM(ELT,2)
4112!
4113 IE=UEL2SYS(ID_ELEM,KSYSUSRTG,NUMELTG)
4114!
4115 IF (IE == 0) THEN
4116 ! Shell was not found. Issue a Warning & Skip.
4117 NONEXIST = NONEXIST+1
4118 ELSE
4119
4120 NPTT = MAX(1,NPTT)
4121 NLAY = MAX(1,NLAY)
4122 NPT_MAX = MAX(NPTT,NLAY)
4123 NVMAX = NVSHELL1 /(MAX(1,NPG)*NPT_MAX*5)
4124 !!IF (ID_ELEM /= NEM1) I = PTSH3N(IE)
4125 NEM1 = ID_ELEM
4126 I = NUMSHEL + PTSH3N(IE)
4127 IOK = 0
4128!
4129 DO K=1,NUMMAT
4130 IF (IPM(1,K) == IMAT) THEN
4131 IMAT = K
4132 IOK = 1
4133 EXIT
4134 ENDIF
4135 ENDDO
4136 IF (IOK == 0) THEN
4137 CALL ANCMSG(MSGID=1033,
4138 . MSGTYPE=MSGERROR,
4139 . ANMODE=ANINFO,
4140 . I1=ITRI(IE),
4141 . C1='material law',
4142 . C2='/inishe/fail')
4143 ENDIF ! IF (IOK == 0)
4144!
4145 IG = IXTG(5,IE)
4146 ISH3N = IGEO(18,IG)
4147 IGTYP=IGEO(11,IG)
4148 SIGSH(1,I) = ID_ELEM
4149 ID_SIGSH(I) = ID_ELEM
4150 IF ( IGTYP == 9 ) NLAY = NINT(GEO(NPROPG*(IG-1)+6))
4151.OR. IF ( IGTYP == 10 IGTYP == 11) THEN
4152 SIGSH(2,I) = NLAY
4153 ELSE
4154 SIGSH(2,I) = NPTT*NLAY
4155 ENDIF
4156 IF( ISH3N == 30 ) THEN
4157 SIGSH(NVSHELL,I) = 3
4158 ELSE
4159 SIGSH(NVSHELL,I) = 1
4160 ENDIF
4161!
4162! check for consistency ( D00 & INIBRI)
4163 IOK = 0
4164 DO K=1,5
4165 NFAIL(K) = MAT_PARAM(IMAT)%FAIL(K)%FAIL_ID
4166.AND. IF (IFAIL == NFAIL(K)
4167 . IRUPT_TYP == MAT_PARAM(IMAT)%FAIL(K)%IRUPT) THEN
4168 IFAIL = K
4169 FAIL_INI(IFAIL)=1
4170 IOK = 1
4171 EXIT
4172 ENDIF
4173 ENDDO
4174 IF (IOK == 0) THEN
4175 CALL ANCMSG(MSGID=1033,
4176 . MSGTYPE=MSGERROR,
4177 . ANMODE=ANINFO,
4178 . I1=ITRI(IE),
4179 . C1='failure criteria',
4180 . C2='/inish3/fail')
4181 ENDIF
4182!
4183 PT = NVSHELL+NUSHELL+3+NORTSHEL
4184 NPG = MAX(1,NPG)
4185 NPTT = MAX(1,NPTT)
4186 NLAY = MAX(1,NLAY)
4187!
4188 NMAX_FAIL = NUM_LINES*NVAR_RUPT
4189 CALL HM_GET_FLOAT_ARRAY('v' ,TMPVAL,NMAX_FAIL,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
4190!
4191 DO JJ=1,NUM_LINES
4192 DO K=1,NVAR_RUPT
4193 L = NVAR_RUPT*(JJ-1) + K
4194 SIGSH(PT+L+(IFAIL-1)*NPT_MAX*NPG*NVMAX+
4195 . (ILAY-1)*NVMAX*NPG*NPTT,I) = TMPVAL(L)
4196 ENDDO ! DO K=1,NVAR_RUPT
4197 ENDDO ! DO JJ=1,NUM_LINES
4198!
4199 ENDIF ! IF (IE == 0) THEN
4200 ENDDO ! DO J=1,NB_ELEMENTS
4201!---------------
4202 CASE DEFAULT
4203
4204 END SELECT ! SELECT CASE(KEY)
4205!
4206 ENDDO ! DO INI=1,NB_INISH3
4207
4208 ENDIF ! IF ( NB_INISH3 > 0 )
4209!
4210 NISH3N = I-NISHELL
4211!
4212!-----------------------------------------
4213! --- /INITRUSS ---
4214!-----------------------------------------
4215 NITRUSS = 0
4216 I = 0
4217!
4218 CALL HM_OPTION_COUNT('/initruss', NB_INITRUSS)
4219!
4220 IF ( NB_INITRUSS > 0 ) THEN
4221!
4222 ! Start reading /INITRUSS card
4223 CALL HM_OPTION_START('/initruss')
4224!---
4225! to be replaced by --- MAP_TABLES%ITRUSSM ---
4226 IF (KTRIELTRUSS == 0) THEN
4227
4228 DO IE = 1, NUMELT
4229 ITRI(IE) = IXT(NIXT,IE)
4230 END DO
4231 CALL MY_ORDERS(0,WORK,ITRI,INDEX,NUMELT,1)
4232 DO J = 1, NUMELT
4233 IE=INDEX(J)
4234 KSYSUSR(J) =IXT(NIXT,IE)
4235 KSYSUSR(NUMELT+J)=IE
4236 END DO
4237 KTRIELTRUSS=1
4238 ENDIF
4239!---
4240 DO INI=1,NB_INITRUSS
4241!
4242 CALL HM_OPTION_READ_KEY(LSUBMODEL,
4243 . UNIT_ID = UID,
4244 . SUBMODEL_INDEX = SUB_INDEX,
4245 . SUBMODEL_ID = SUB_ID,
4246 . KEYWORD2 = KEY)
4247!
4248 IFLAGUNIT = 0
4249 DO IUNIT=1,UNITAB%NUNITS
4250 IF (UNITAB%UNIT_ID(IUNIT) == UID) THEN
4251 IFLAGUNIT = 1
4252 EXIT
4253 ENDIF
4254 ENDDO
4255.AND. IF (UID /= 0IFLAGUNIT == 0) THEN
4256 CALL ANCMSG(MSGID=659,ANMODE=ANINFO,MSGTYPE=MSGERROR,
4257 . I2=UID,I1=SUB_ID,C1='initruss',
4258 . C2='initruss',
4259 . C3=' ')
4260 ENDIF
4261
4262 SELECT CASE (KEY(1:LEN_TRIM(KEY)))
4263
4264 CASE ( 'full' )
4265
4266!
4267 CALL HM_GET_INTV('no_of_elems',NB_ELEMENTS,IS_AVAILABLE,LSUBMODEL)
4268!
4269 DO J=1,NB_ELEMENTS
4270 ! Reading --- ID_ELEM, Prop ... ---
4271 CALL HM_GET_INT_ARRAY_INDEX('truss_id',ID_ELEM,J,IS_AVAILABLE,LSUBMODEL)
4272 CALL HM_GET_INT_ARRAY_INDEX('prop_type',IGTYP,J,IS_AVAILABLE,LSUBMODEL)
4273!
4274! ELT = SET_USRTOS(ID_ELEM,MAP_TABLES%ITRUSSM,NUMELT)
4275! IE = MAP_TABLES%ITRUSSM(ELT,2)
4276!
4277 IE=UEL2SYS(ID_ELEM,KSYSUSR,NUMELT)
4278!
4279 IF (IE == 0) THEN
4280 ! Shell was not found. Issue a Warning & Skip.
4281 NONEXIST = NONEXIST+1
4282 ELSE
4283!
4284 CALL HM_GET_FLOAT_ARRAY_INDEX('eint' ,EIN,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
4285 CALL HM_GET_FLOAT_ARRAY_INDEX('f' ,FOR,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
4286 CALL HM_GET_FLOAT_ARRAY_INDEX('area' ,EPSP,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
4287 CALL HM_GET_FLOAT_ARRAY_INDEX('eps_p',AREA,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
4288!
4289 I=I+1
4290 ID_SIGTRUSS(I) = ID_ELEM
4291 SIGTRUSS(1,I) = ID_ELEM
4292 SIGTRUSS(2,I) = IGTYP
4293 SIGTRUSS(3,I) = EIN
4294 SIGTRUSS(4,I) = FOR
4295 SIGTRUSS(5,I) = EPSP
4296 SIGTRUSS(6,I) = AREA
4297!
4298 ENDIF ! IF (IE == 0)
4299 ENDDO ! DO J=1,NB_ELEMENTS
4300!
4301 CASE DEFAULT
4302!
4303 END SELECT ! SELECT CASE(KEY)
4304!
4305 ENDDO ! DO INI=1,NB_NITRUSS
4306
4307 ENDIF ! IF ( NB_NITRUSS > 0 )
4308!
4309 NITRUSS = I
4310
4311
4312
4313!-----------------------------------------
4314! --- /INIBEAM ---
4315!-----------------------------------------
4316 NIBEAM = 0
4317 I = 0
4318!
4319 CALL HM_OPTION_COUNT('/inibeam', NB_INIBEAM)
4320!
4321 IF ( NB_INIBEAM > 0 ) THEN
4322!
4323 ! Start reading /INIBEAM card
4324 CALL HM_OPTION_START('/inibeam')
4325!---
4326! to be replaced by --- MAP_TABLES%IBEAMM ---
4327 IF (KTRIELBEAM == 0) THEN
4328! local sorting of elements of D00 by ascending id (sorted only once)
4329 DO IE = 1,NUMELP
4330 ITRI(IE) = IXP(NIXP,IE)
4331 ENDDO
4332 CALL MY_ORDERS(0,WORK,ITRI,INDEX,NUMELP,1)
4333 DO J = 1,NUMELP
4334 IE = INDEX(J)
4335 KSYSUSR(J) =IXP(NIXP,IE)
4336 KSYSUSR(NUMELP+J)=IE
4337 ENDDO
4338 KTRIELBEAM=1
4339 ENDIF ! IF (KTRIELBEAM==0)
4340!---
4341 DO INI=1,NB_INIBEAM
4342!
4343 CALL HM_OPTION_READ_KEY(LSUBMODEL,
4344 . UNIT_ID = UID,
4345 . SUBMODEL_INDEX = SUB_INDEX,
4346 . SUBMODEL_ID = SUB_ID,
4347 . KEYWORD2 = KEY)
4348!
4349 IFLAGUNIT = 0
4350 DO IUNIT=1,UNITAB%NUNITS
4351 IF (UNITAB%UNIT_ID(IUNIT) == UID) THEN
4352 IFLAGUNIT = 1
4353 EXIT
4354 ENDIF
4355 ENDDO
4356.AND. IF (UID /= 0IFLAGUNIT == 0) THEN
4357 CALL ANCMSG(MSGID=659,ANMODE=ANINFO,MSGTYPE=MSGERROR,
4358 . I2=UID,I1=SUB_ID,C1='inibeam',
4359 . C2='inibeam',
4360 . C3=' ')
4361 ENDIF
4362
4363 SELECT CASE (KEY(1:LEN_TRIM(KEY)))
4364
4365 CASE ( 'full' )
4366
4367!
4368 CALL HM_GET_INTV('inibeam_count',NB_ELEMENTS,IS_AVAILABLE,LSUBMODEL)
4369!
4370 DO J=1,NB_ELEMENTS
4371 ! Reading --- ID_ELEM, Prop ... ---
4372 CALL HM_GET_INT_ARRAY_INDEX('beam_id' ,ID_ELEM,J,IS_AVAILABLE,LSUBMODEL)
4373 CALL HM_GET_INT_ARRAY_INDEX('nb_integr',NIP,J,IS_AVAILABLE,LSUBMODEL)
4374 CALL HM_GET_INT_ARRAY_INDEX('prop_type',IGTYP,J,IS_AVAILABLE,LSUBMODEL)
4375!
4376! ELT = SET_USRTOS(ID_ELEM,MAP_TABLES%IBEAMM,NUMELP)
4377! IE = MAP_TABLES%ITRUSSM(ELT,2)
4378!
4379 IE=UEL2SYS(ID_ELEM,KSYSUSR,NUMELP)
4380!
4381 IF (IE == 0) THEN
4382 ! Shell was not found. Issue a Warning & Skip.
4383 NONEXIST = NONEXIST+1
4384 ELSE
4385 CALL HM_GET_FLOAT_ARRAY_INDEX('eimemb' ,EM,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
4386 CALL HM_GET_FLOAT_ARRAY_INDEX('eibend' ,EB,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
4387 CALL HM_GET_FLOAT_ARRAY_INDEX('f1' ,FOR1,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
4388 CALL HM_GET_FLOAT_ARRAY_INDEX('f2' ,FOR2,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
4389 CALL HM_GET_FLOAT_ARRAY_INDEX('f3' ,FOR3,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
4390 CALL HM_GET_FLOAT_ARRAY_INDEX('m1' ,MOM1,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
4391 CALL HM_GET_FLOAT_ARRAY_INDEX('m2' ,MOM2,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
4392 CALL HM_GET_FLOAT_ARRAY_INDEX('m3' ,MOM3,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
4393!
4394 I=I+1
4395 ID_SIGBEAM(I) = ID_ELEM
4396 SIGBEAM(1,I) = ID_ELEM
4397 SIGBEAM(2,I) = NIP
4398 SIGBEAM(3,I) = IGTYP
4399!
4400 SIGBEAM(4,I) = EM
4401 SIGBEAM(5,I) = EB
4402!
4403 SIGBEAM(6,I) = FOR1
4404 SIGBEAM(7,I) = FOR2
4405 SIGBEAM(8,I) = FOR3
4406 SIGBEAM(9,I) = MOM1
4407 SIGBEAM(10,I) = MOM2
4408 SIGBEAM(11,I) = MOM3
4409!
4410 PT = 11
4411 IF (NIP == 0) THEN
4412 IF (IGTYP == 3) THEN
4413 CALL HM_GET_FLOAT_ARRAY_INDEX('epsilonp' ,EPSP,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
4414 SIGBEAM(PT+1,I) = EPSP
4415 ENDIF ! IF (IGTYP == 3)
4416 ELSEIF (NIP > 0) THEN
4417
4418 IF (IGTYP == 18) THEN
4419 SIZE = NIP
4420 CALL HM_GET_FLOAT_ARRAY('sigma1' ,TMPVAL1,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
4421 CALL HM_GET_FLOAT_ARRAY('sigma12' ,TMPVAL2,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
4422 CALL HM_GET_FLOAT_ARRAY('sigma13' ,TMPVAL3,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
4423 CALL HM_GET_FLOAT_ARRAY('epsilonp_array',TMPVAL4,SIZE,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
4424 DO K=1,NIP
4425 SIGBEAM(PT+1,I) = TMPVAL1(K) ! SXX
4426 SIGBEAM(PT+2,I) = TMPVAL2(K) ! SXY
4427 SIGBEAM(PT+3,I) = TMPVAL3(K) ! SZX
4428 SIGBEAM(PT+4,I) = TMPVAL4(K) ! EPSP
4429!
4430 PT = PT + 4
4431 ENDDO ! DO K=1,NIP
4432 ENDIF ! IF (IGTYP == 18)
4433!------
4434 ENDIF ! IF (NIP == 0)
4435!
4436 ENDIF ! IF (IE == 0)
4437!
4438 ENDDO ! DO J=1,NB_ELEMENTS
4439!
4440
4441 CASE ( 'aux' )
4442
4443!
4444!
4445 CALL HM_GET_INTV('inibeam_count',NB_ELEMENTS,IS_AVAILABLE,LSUBMODEL)
4446!
4447 DO J=1,NB_ELEMENTS
4448 ! Reading --- ID_ELEM, Prop ... ---
4449 CALL HM_GET_INT_ARRAY_INDEX('beam_id' ,ID_ELEM,J,IS_AVAILABLE,LSUBMODEL)
4450 CALL HM_GET_INT_ARRAY_INDEX('nb_integr',NIP,J,IS_AVAILABLE,LSUBMODEL)
4451 CALL HM_GET_INT_ARRAY_INDEX('prop_type',IGTYP,J,IS_AVAILABLE,LSUBMODEL)
4452 CALL HM_GET_INT_ARRAY_INDEX('nvars' ,NUVAR,J,IS_AVAILABLE,LSUBMODEL)
4453!
4454! ELT = SET_USRTOS(ID_ELEM,MAP_TABLES%IBEAMM,NUMELP)
4455! IE = MAP_TABLES%ITRUSSM(ELT,2)
4456!
4457 IE=UEL2SYS(ID_ELEM,KSYSUSR,NUMELP)
4458!
4459 IF (IE == 0) THEN
4460 ! Shell was not found. Issue a Warning & Skip.
4461 NONEXIST = NONEXIST+1
4462 ELSE
4463!
4464! -- UVAR --
4465!
4466 I=I+1
4467 ID_SIGBEAM(I) = ID_ELEM
4468 SIGBEAM(1,I) = ID_ELEM
4469 SIGBEAM(2,I) = NIP
4470!
4471 IUSER = 1
4472 NVARBEAM = NVBEAM + 4
4473 SIGBEAM(NVBEAM + 1 ,I) = ID_ELEM
4474 SIGBEAM(NVBEAM + 2 ,I) = NIP
4475 SIGBEAM(NVBEAM + 3 ,I) = IGTYP
4476 SIGBEAM(NVBEAM + 4 ,I) = NUVAR
4477!
4478 IF (IGTYP /= 18) THEN
4479 CALL ANCMSG(MSGID=1236,ANMODE=ANINFO,MSGTYPE=MSGERROR,
4480 . C1='aux',
4481 . I1=ID_ELEM)
4482 ENDIF
4483!
4484 PT = 0
4485!
4486 NMAX_AUX = NIP*NUVAR
4487 CALL HM_GET_FLOAT_ARRAY('v' ,TMPVAL,NMAX_AUX,J,IS_AVAILABLE,LSUBMODEL,UNITAB)
4488!
4489 DO JJ=1,NIP
4490 DO K=1,NUVAR
4491 L = NUVAR*(JJ-1) + K
4492 SIGBEAM(NVARBEAM+PT+K,I) = TMPVAL(L)
4493 ENDDO ! DO K=1,NUVAR
4494 PT = PT + NUVAR
4495 ENDDO ! DO JJ=1,NIP
4496!
4497 ENDIF ! IF (IE == 0)
4498!
4499 ENDDO ! DO J=1,NB_ELEMENTS
4500!
4501 CASE DEFAULT
4502!
4503 END SELECT ! SELECT CASE(KEY)
4504!
4505 ENDDO ! DO INI=1,NB_INIBEAM
4506
4507 ENDIF ! IF ( NB_INIBEAM > 0 )
4508!
4509 NIBEAM = I
4510
4511
4512
4513!-----------------------------------------
4514! --- /INISPRI ---
4515!-----------------------------------------
4516 NISPRING = 0
4517 I = 0
4518!
4519 CALL HM_OPTION_COUNT('/inispri', NB_INISPRI)
4520!
4521 IF ( NB_INISPRI > 0 ) THEN
4522!
4523 ! Start reading /INISPRI card
4524 CALL HM_OPTION_START('/inispri')
4525!---
4526! to be replaced by --- MAP_TABLES%ISPRINGM ---
4527 IF (KTRIELSPR == 0) THEN
4528
4529 DO IE = 1,NUMELR
4530 ITRI(IE) = IXR(NIXR,IE)
4531 ENDDO
4532 CALL MY_ORDERS(0,WORK,ITRI,INDEX,NUMELR,1)
4533 DO J = 1,NUMELR
4534 IE = INDEX(J)
4535 KSYSUSR(J) =IXR(NIXR,IE)
4536 KSYSUSR(NUMELR+J)=IE
4537 ENDDO
4538 KTRIELSPR=1
4539 ENDIF ! IF (KTRIELSPR==0)
4540!---
4541 DO INI=1,NB_INISPRI
4542!
4543 CALL HM_OPTION_READ_KEY(LSUBMODEL,
4544 . UNIT_ID = UID,
4545 . SUBMODEL_INDEX = SUB_INDEX,
4546 . SUBMODEL_ID = SUB_ID,
4547 . KEYWORD2 = KEY)
4548!
4549 IFLAGUNIT = 0
4550 DO IUNIT=1,UNITAB%NUNITS
4551 IF (UNITAB%UNIT_ID(IUNIT) == UID) THEN
4552 IFLAGUNIT = 1
4553 EXIT
4554 ENDIF
4555 ENDDO
4556.AND. IF (UID /= 0IFLAGUNIT == 0) THEN
4557 CALL ANCMSG(MSGID=659,ANMODE=ANINFO,MSGTYPE=MSGERROR,
4558 . I2=UID,I1=SUB_ID,C1='inispring',
4559 . C2='inispri',
4560 . C3=' ')
4561 ENDIF
4562
4563 SELECT CASE (KEY(1:LEN_TRIM(KEY)))
4564
4565 CASE ( 'full' )
4566
4567!
4568 CALL HM_GET_INTV('size_spring',NB_ELEMENTS,IS_AVAILABLE,LSUBMODEL)
4569!
4570 DO J=1,NB_ELEMENTS
4571 ! Reading --- ID_ELEM, Prop ... ---
4572 CALL HM_GET_INT_ARRAY_INDEX('spring_id',ID_ELEM,J,IS_AVAILABLE,LSUBMODEL)
4573 CALL HM_GET_INT_ARRAY_INDEX('prop_type',IGTYP,J,IS_AVAILABLE,LSUBMODEL)
4574 CALL HM_GET_INT_ARRAY_INDEX('nvars' ,NUVAR,J,IS_AVAILABLE,LSUBMODEL)
4575!
4576! ELT = SET_USRTOS(ID_ELEM,MAP_TABLES%ISPRINGM,NUMELR)
4577! IE = MAP_TABLES%ISPRINGM(ELT,2)
4578!
4579 IE=UEL2SYS(ID_ELEM,KSYSUSR,NUMELR)
4580!
4581 IF (IE == 0) THEN
4582 ! Shell was not found. Issue a Warning & Skip.
4583 NONEXIST = NONEXIST+1
4584 ELSE
4585 I=I+1
4586 ID_SIGSPRI(I) = ID_ELEM
4587 SIGRS(1,I) = ID_ELEM
4588
4589.OR. IF (IGTYP == 4 IGTYP == 12) THEN
4590
4591 CALL HM_GET_FLOAT_ARRAY_INDEX('f_x' ,SIGRS(2,I),J,IS_AVAILABLE,LSUBMODEL,UNITAB)
4592 CALL HM_GET_FLOAT_ARRAY_INDEX('d_x' ,SIGRS(3,I),J,IS_AVAILABLE,LSUBMODEL,UNITAB)
4593 CALL HM_GET_FLOAT_ARRAY_INDEX('fep_x' ,SIGRS(4,I),J,IS_AVAILABLE,LSUBMODEL,UNITAB)
4594 CALL HM_GET_FLOAT_ARRAY_INDEX('dpl_x+' ,SIGRS(5,I),J,IS_AVAILABLE,LSUBMODEL,UNITAB)
4595 CALL HM_GET_FLOAT_ARRAY_INDEX('dpl_x-' ,SIGRS(6,I),J,IS_AVAILABLE,LSUBMODEL,UNITAB)
4596 CALL HM_GET_FLOAT_ARRAY_INDEX('l_x' ,sigrs(7,i),j,is_available,lsubmodel,unitab)
4598
4599 IF (igtyp == 12) THEN
4601 ENDIF
4602
4603 ELSEIF (igtyp == 8 .OR. igtyp == 13 .OR. igtyp == 25 .OR. igtyp == 23) THEN
4604
4610
4616
4622
4628
4634
4640
4646
4652
4653 ELSEIF (igtyp == 26) THEN
4654
4661
4662
4663 ELSEIF (igtyp == 29 .OR. igtyp == 30 .OR. igtyp == 31 .OR.
4664 . igtyp == 32 .OR. igtyp == 33 .OR. igtyp == 35 .OR.
4665 . igtyp == 36 .OR. igtyp == 44 .OR. igtyp == 45 .OR.
4666 . igtyp == 46) THEN
4667
4681
4682 pt = 14
4683
4684
4685
4686 SIZE = nuvar
4688
4689 DO k=1,nuvar
4690 sigrs(pt+k,i) = tmpval(k)
4691 ENDDO
4692 pt = pt + nuvar
4693
4694 ENDIF
4695
4696 ENDIF
4697
4698 ENDDO
4699
4700 CASE DEFAULT
4701
4702 END SELECT
4703
4704 ENDDO
4705
4706 ENDIF
4707
4708 nispring = i
4709
4710
4711
4712
4713
4714
4715 niquad = 0
4716 i = 0
4717
4719
4720 IF ( nb_iniqua > 0 ) THEN
4721
4722
4724
4725
4726 IF (ktrieltquad == 0) THEN
4727
4728 DO ie = 1, numelq
4729 itriq(ie) = ixq(nixq,ie)
4730 END DO
4731 CALL my_orders(0,work,itriq,indexq,numelq,1)
4732 DO j = 1, numelq
4733 ie=indexq(j)
4734 ksysusrq(j) = ixq(nixq,ie)
4735 ksysusrq(numelq+j)=ie
4736 END DO
4737 ktrieltquad=1
4738 ENDIF
4739
4740 DO ini=1,nb_iniqua
4741
4743 . unit_id = uid,
4744 . submodel_index = sub_index,
4745 . submodel_id = sub_id,
4746 . keyword2 = key)
4747
4748 iflagunit = 0
4749 DO iunit=1,unitab%NUNITS
4750 IF (unitab%UNIT_ID(iunit) == uid) THEN
4751 iflagunit = 1
4752 EXIT
4753 ENDIF
4754 ENDDO
4755 IF (uid/=0.AND.iflagunit == 0) THEN
4756 CALL ancmsg(msgid=659,anmode=aninfo,msgtype=msgerror,
4757 . i2=uid,i1=sub_id,c1='INIQUA',
4758 . c2='INIQUA',
4759 . c3=' ')
4760 ENDIF
4761
4762 SELECT CASE (key(1:len_trim(key)))
4763
4764 CASE ( 'DENS' )
4765
4766
4767 CALL hm_get_intv(
'no_blocks',nb_elements,is_available,lsubmodel)
4768
4769 DO j=1,nb_elements
4770
4772
4773
4774
4775
4776
4777 ie=
uel2sys(id_elem,ksysusrq,numelq)
4778
4779 IF (ie == 0) THEN
4780
4781 nonexist = nonexist+1
4782 ELSE
4784 i=i+1
4785 id_quad_sigi(i) = id_elem
4786 sigi(8,i) = dens
4787 ENDIF
4788 ENDDO
4789
4790 CASE ( 'ENER' )
4791
4792
4793 CALL hm_get_intv(
'no_blocks',nb_elements,is_available,lsubmodel)
4794
4795 DO j=1,nb_elements
4796
4798
4799! elt =
set_usrtos(id_elem,map_tables%IQUADM,numelq)
4800
4801
4802
4803 ie=
uel2sys(id_elem,ksysusrq,numelq)
4804
4805 IF (ie == 0) THEN
4806
4807 nonexist = nonexist+1
4808 ELSE
4810 i=i+1
4811 id_quad_sigi(i) = id_elem
4812 sigi(9,i) = ener
4813 ENDIF
4814 ENDDO
4815
4816 CASE ( 'EPSP' )
4817
4818
4819 CALL hm_get_intv(
'no_blocks',nb_elements,is_available,lsubmodel)
4820
4821 DO j=1,nb_elements
4822
4824
4825
4826
4827
4828 ie=
uel2sys(id_elem,ksysusrq,numelq)
4829
4830 IF (ie == 0) THEN
4831
4832 nonexist = nonexist+1
4833 ELSE
4835 i=i+1
4836 id_quad_sigi(i) = id_elem
4837 sigi(10,i) = epsp
4838 ENDIF
4839 ENDDO
4840
4841 CASE ( 'STRESS' )
4842
4843
4844 CALL hm_get_intv(
'no_blocks',nb_elements,is_available,lsubmodel)
4845
4846 DO j=1,nb_elements
4847
4848
4850
4851
4852
4853
4854 ie=
uel2sys(id_elem,ksysusrq,numelq)
4855
4856 IF (ie == 0) THEN
4857
4858 nonexist = nonexist+1
4859 ELSE
4864
4865 i=i+1
4866 id_quad_sigi(i) = id_elem
4867 DO k=1,4
4868 sigi(k,i) = s(k)
4869 ENDDO
4870 ENDIF
4871 ENDDO
4872
4873 CASE DEFAULT
4874
4875 END SELECT
4876
4877
4878 ENDDO
4879
4880 ENDIF
4881
4882 niquad = i
4883
4884
4885
4886
4887 nisphcel = 0
4888 i = 0
4890
4891 IF ( nb_inisphcel > 0 ) THEN
4892
4893
4895
4896 IF (ktrielsphcel == 0) THEN
4897 DO ie = 1, numsph
4898 itrisph(ie) = kxsp(nisp,ie)
4899 END DO
4900 CALL my_orders(0,work,itrisph,indexsph,numsph,1)
4901 DO j = 1, numsph
4902 ie=indexsph(j)
4903 ksysusrsph(j) =kxsp(nisp,ie)
4904 ksysusrsph(numsph+j)=ie
4905 END DO
4906 ktrielsphcel=1
4907 ENDIF
4908
4909 DO ini=1,nb_inisphcel
4910
4912 . unit_id = uid,
4913 . submodel_index = sub_index,
4914 . submodel_id = sub_id,
4915 . keyword2 = key,
4916 . keyword3 = key2)
4917
4918 IF (key2 /= ' ') glob = .true.
4919
4920 iflagunit = 0
4921 DO iunit=1,unitab%NUNITS
4922 IF (unitab%UNIT_ID(iunit) == uid) THEN
4923 iflagunit = 1
4924 EXIT
4925 ENDIF
4926 ENDDO
4927
4928 IF (uid /= 0.AND.iflagunit == 0) THEN
4929 CALL ancmsg(msgid=659,anmode=aninfo,msgtype=msgerror,
4930 . i2=uid, i1=sub_id, c1='INISPHCEL',
4931 . c2='INISPHCEL',
4932 . c3=' ')
4933 ENDIF
4934
4935 SELECT CASE (key(1:len_trim(key)))
4936
4937 CASE ( 'FULL' )
4938
4939 CALL hm_get_intv(
'no_blocks',nb_elements,is_available,lsubmodel)
4940
4941 DO j=1,nb_elements
4942 i=i+1
4952
4953 ie=
uel2sys(id_elem,ksysusrsph,numsph)
4954
4955 IF (ie == 0) THEN
4956
4957 nonexist = nonexist+1
4958 ELSE
4959 id_sigsph(i) = id_elem
4960 sigsph(1,i) = s(1)
4961 sigsph(2,i) = s(2)
4962 sigsph(3,i) = s(3)
4963 sigsph(4,i) = zero
4964 sigsph(5,i) = zero
4965 sigsph(6,i) = zero
4966 sigsph(7,i) = zero
4967 sigsph(8,i) = rho
4968 sigsph(9,i) = ener
4969 sigsph(10,i) = epsp
4971 sigsph(12,i) = nuvar
4973 DO k=1,nuvar
4974 sigsph(12+k,i) = tmpval(k)
4975 ENDDO
4976
4977 ENDIF
4978 ENDDO
4979
4980 CASE DEFAULT
4981
4982 END SELECT
4983
4984 ENDDO
4985
4986 ENDIF
4987
4988
4989
4990
4991 IF (nonexist > 0) THEN
4992 CALL ancmsg(msgid=3045,anmode=aninfo,msgtype=msgwarning,i1=nonexist)
4993 ENDIF
4994
4995 DEALLOCATE (itris)
4996 DEALLOCATE (indexs)
4997 DEALLOCATE (ksysusrs)
4998 DEALLOCATE (ksysusrtg)
4999 DEALLOCATE (itriq)
5000 DEALLOCATE (indexq)
5001 DEALLOCATE (ksysusrq)
5002 DEALLOCATE (ies2iparg)
5003 IF(ALLOCATED(itrisph)) DEALLOCATE(itrisph)
5004 IF(ALLOCATED(indexsph)) DEALLOCATE(indexsph)
5005 IF(ALLOCATED(ksysusrsph)) DEALLOCATE(ksysusrsph)
5006
5007 RETURN
5008
subroutine hm_get_float_array(name, rarray, s_rarray, index, is_available, lsubmodel, unitab)
subroutine hm_get_float_array_index(name, rval, index, is_available, lsubmodel, unitab)
subroutine hm_get_int_array_index(name, ival, index, is_available, lsubmodel)
subroutine hm_get_intv(name, ival, is_available, lsubmodel)
subroutine hm_option_count(entity_type, hm_option_number)
subroutine hm_option_start(entity_type)
subroutine area(d1, x, x2, y, y2, eint, stif0)
integer function set_usrtos(iu, ipartm1, npart)
subroutine lec_inistate_d00_brick_check(ixs, igeo, itris, isolnodd00, ie, npt, nlay, isolnod, jjhbe, igtyp, isrot, keyword)
for(i8=*sizetab-1;i8 >=0;i8--)
void my_orders(int *mode, int *iwork, int *data, int *index, int *n, int *irecl)
integer, parameter nchartitle
integer, parameter ncharkey
integer function nvar(text)
subroutine slen(x1, x2, x3, x4, y1, y2, y3, y4, z1, z2, z3, z4, j, area, aream)
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)
subroutine subrotvect(x, y, z, rtrans, sub_id, lsubmodel)
subroutine subrottens(tens, rtrans, sub_id, lsubmodel)
integer function uel2sys(iu, ksysusr, numel)