46
47
48
51 USE elbufdef_mod
53 USE matparam_def_mod
54 USE my_alloc_mod
55
56
57
58#include "implicit_f.inc"
59
60
61
62#include "vect01_c.inc"
63#include "mvsiz_p.inc"
64#include "com01_c.inc"
65#include "com04_c.inc"
66#include "scr14_c.inc"
67#include "param_c.inc"
68#include "task_c.inc"
69
70
71
72 INTEGER IPARG(NPARG,*),IXC(NIXC,*),IXTG(NIXTG,*),EL2FA(*),
73 . IFUNC,NBF,NBF_L, NBPART,NBF_PXFEMG,
74 . IADP(*),IADG(NSPMD,*),IPM(NPROPMI,*),
75 . IGEO(NPROPGI,*)
76
78 . func(*), mass(*) , geo(npropg,*),
79 . ehour(*),anim(*),pm(npropm,*),thke(*),
80 . err_thk_sh4(*), err_thk_sh3(*), x(3,*)
81 TYPE (ELBUF_STRUCT_), DIMENSION(NGROUP), TARGET :: ELBUF_TAB
82 TYPE (MATPARAM_STRUCT_) ,DIMENSION(NUMMAT) ,INTENT(IN) :: MAT_PARAM
83 TYPE (STACK_PLY) :: STACK
84
85
86
87
89 . evar(mvsiz),
90 . off, p, vonm2, vonm, s1, s2, s12, s3, VALUE,
91 . a1,b1,b2,b3,yeq,f1,m1,m2,m3, fac, dam1
92 . wpla(mvsiz), dmax(mvsiz),wpmax(mvsiz),
93 . fail(mvsiz),sige(mvsiz,5)
94 INTEGER I, NG, NEL, ISS, ISC,N, J, MLW, NUVAR, IUS,
95 . ISTRAIN,NN, K1, K2,JTURB,MT,IMID, IALEL,IPID,
96 . NN1,NN2,NN3,NN4,NN5,NN6,NN7,NN8,NN9,NN10,NF,
97 . LLL,NINTLAY,NFAIL,
98 . OFFSET,K,II,II_L,INC,KK,IHBE,
99 . NPTM,NPG, NBVU, I1, MPT, NEL5, NEL8,
100 . IPT,BUF,NPTR,NPTS,NPTT,NLAY,IR,IS,PTF,LENF,IL,
101 . IADR,IPMAT,PID(MVSIZ),MAT(MVSIZ),MATLY(MVSIZ*100),
102 . NEL_PLY,ILAYER,IFLAG,JJ(5)
103 INTEGER IE,ISHPLYXFEM,IP,JPID,IPPID,IPLY0,ILAST,ION,NUVARV,
104 . IVISC,IPMAT_IPLY,NUVARD,MAT_IPLY,
105 . MATPLY,LL,IPLYC,I3,I2
106 INTEGER PLYS,IPLY,(NUMELC),ELC,NS1,MATL,
107 . IIGEO,IADI,ISUBSTACK
108 REAL R4
109 TYPE(G_BUFEL_) ,POINTER :: GBUF
110 TYPE(BUF_LAY_) ,POINTER :: BUFLY
111 TYPE(L_BUFEL_) ,POINTER :: LBUF
112 TYPE(BUF_INTLAY_) ,POINTER :: INTLAY
113 TYPE(BUF_INTLOC_) ,POINTER :: ILBUF
114 TYPE(BUF_FAIL_) ,POINTER :: FBUF
116 . DIMENSION(:), POINTER :: uvar
117 REAL,DIMENSION(:),ALLOCATABLE:: WAL
118
119 CALL my_alloc(wal,nbf_l)
120
121 ll = 0
122
123 nel_ply = 0
126 plyelems=0
130 plyelems(elc)=ipt
131 ENDDO
132
133 nn1 = 1
134 nn3 = 1
135 nn4 = nn3 + numelq
136 nn5 = nn4 + numelc
137 nn6 = nn5 + numeltg
138 ie = 0
139 ilayer = 0
140 iflag = 0
141
142 DO 900 ng=1,ngroup
144 2 mlw ,nel ,nft ,iad ,ity ,
145 3 npt ,jale ,ismstr ,jeul ,jturb ,
146 4 jthe ,jlag ,jmult ,jhbe ,jivf ,
147 5 nvaux ,jpor ,jcvt ,jclose ,jplasol ,
148 6 irep ,iint ,igtyp ,israt ,isrot ,
149 7 icsen ,isorth ,isorthg ,ifailure,jsms)
150 DO offset = 0,nel-1,nvsiz
151 nft = iparg(3,ng) + offset
152 lft = 1
153 llt =
min(nvsiz,nel-offset)
154 ishplyxfem = iparg(50,ng)
155 isubstack = iparg(71,ng)
156
157
158
159 IF (ishplyxfem > 0 .AND.(ity == 3.OR.ity == 7))THEN
160 gbuf => elbuf_tab(ng)%GBUF
161 npt =iparg(6,ng)
162 iss =iparg(9,ng)
163 ihbe =iparg(23,ng)
164 nptr = elbuf_tab(ng)%NPTR
165 npts = elbuf_tab(ng)%NPTS
166 nptt = elbuf_tab(ng)%NPTT
167 nlay = elbuf_tab(ng)%NLAY
168 nintlay = elbuf_tab(ng)%NINTLAY
169 npg = nptr*npts
170 mpt = iabs(npt)
171
172 DO j=1,5
173 jj(j) = nel*(j-1)
174 ENDDO
175
176 DO i=lft,llt
177 DO j=1,5
178 sige(i,j) = zero
179 ENDDO
180 ENDDO
181
182
183 DO i=lft,llt
184 evar(i) = zero
185 ENDDO
186
187
188
189
190 n = 1 + nft
191 DO i=lft,llt
192 n = i + nft
193 ilayer = plyelems(n)
194 IF (ilayer > 0) iflag = 1
195 ENDDO
196
197 IF (iflag == 0) GO TO 900
198 ilayer = iflag
199 iflag = 1
200
201
202
203
204
205
206
207
208
209
210
211
212
213 IF (ifunc == 1)THEN
214
215
216 DO i=lft,llt
217
218
219 n = i + nft
220 ilayer = plyelems(n)
221 bufly => elbuf_tab(ng)%BUFLY(ilayer)
222 lbuf => elbuf_tab(ng)%BUFLY(ilayer)%LBUF(1,1,1)
223 IF(ilayer > 0) THEN
224
225 IF (npg > 1 .and. bufly%LY_PLAPT > 0) THEN
226 evar(i) = abs(bufly%PLAPT(i))
227 ELSEIF (npg == 1 .and. bufly%L_PLA > 0) THEN
228 evar(i) = abs(lbuf%PLA(i))
229 ENDIF
230 ENDIF
231 ENDDO
232 ELSEIF (ifunc == 3) THEN
233 DO i=lft,llt
234
235
236
237 ENDDO
238
239 ELSEIF(ifunc == 5)THEN
240
241 DO i=lft,llt
242 evar(i) =zero
243 ENDDO
244
245 ELSEIF(ifunc == 7)THEN
246
247 DO i=lft,llt
248 n = i + nft
249 ii = (i-1)*5
250 ilayer = plyelems(n)
251 s1 = zero
252 s2 = zero
253 s12 = zero
254 IF(ilayer > 0) THEN
255 bufly => elbuf_tab(ng)%BUFLY(ilayer)
256 DO ir=1,nptr
257 DO is=1,npts
258 lbuf => bufly%LBUF(ir,is,1)
259 s1 = s1 + lbuf%SIG(i )/npg
260 s2 = s2 + lbuf%SIG(nel + i)/npg
261 s12= s12 + lbuf%SIG(2*nel + i)/npg
262 ENDDO
263 ENDDO
264 vonm2= s1*s1 + s2*s2 - s1*s2 + three*s12*s12
265 evar(i) = sqrt(vonm2)
266 ENDIF
267 ENDDO
268
269 ELSEIF (ifunc == 11)THEN
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290 ELSEIF(ifunc == 12)THEN
291
292
293! nb13 = nb12 + 2*nel*
max(1,npt)
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309 ELSEIF(ifunc == 13)THEN
310
311 IF(mlw == 25.OR.mlw == 15)THEN
312
313
314
315
316
317 ENDIF
318
319 ELSEIF (ifunc>=14.AND.ifunc<=15) THEN
320
321
322
323 ipid = ixc(6,nft+1)
324 irep = igeo(6,ipid)
325 IF (mlw == 25.AND. irep == 1) THEN
326
327 IF(ity == 3)THEN
328 DO i=1,nel
329 mat(i)=ixc(1,nft+i)
330 pid(i)=ixc(6,nft+i)
331 END DO
332 ELSE
333 DO i=1,nel
334 mat(i)=ixtg(1,nft+i)
335 pid(i)=ixtg(5,nft+i)
336 END DO
337 END IF
338 ivisc = 0
339 IF(mlw == 25) THEN
340 IF(igtyp == 17)THEN
341
342
343
344 ipmat = 2 + mpt
345
346 nuvarv = 0
347 DO n=1,npt
348 iadr = (n-1)*nel
349 DO i=1,nel
350 matl = stack%IGEO(ipmat+n,isubstack)
351 IF (mat_param(matl)%IVISC > 0 ) ivisc = 1
352 END DO
353 END DO
354 END IF
355 ENDIF
356 ns1 = 5
357 CALL sigrota(lft ,llt ,nft ,ilayer ,nel ,
358 2 ns1 ,x ,ixc ,elbuf_tab(ng) ,
359 3 sige ,ity ,ixtg ,ihbe ,istrain ,
360 4 ivisc )
361 DO i=lft,llt
362 evar(i) = sige(i,ifunc - 13)
363 ENDDO
364 ELSEIF (mlw == 25 .AND. irep == 0) THEN
365 ius = ifunc-13
366 IF (ihbe == 11) THEN
367 lenf = nel*gbuf%G_FORPG/npg
368 DO i=lft,llt
369 evar(i) = zero
370 n = i + nft
371 ilayer = plyelems(n)
372 IF(ilayer > 0) THEN
373 DO ir=1,nptr
374 DO is=1,npts
375 k = nptr*(is-1) + ir
376 ptf = (k-1)*lenf+1
377 evar(i) = evar(i)+gbuf%FORPG(ptf+jj(ius)+i)/npg
378 ENDDO
379 ENDDO
380 ENDIF
381 ENDDO
382 ELSE
383 DO i=lft,llt
384 evar(i) = zero
385 n = i + nft
386 ilayer = plyelems(n)
387 IF(ilayer > 0) THEN
388 evar(i) = evar(i)+gbuf%FORPG(jj(ius)+i)/npg
389 ENDIF
390 ENDDO
391 ENDIF
392 ELSE
393 DO i=lft,llt
394 n = i + nft
395 ilayer = plyelems(n)
396 IF(ilayer > 0) THEN
397 evar(i) = gbuf%FORPG(jj(ius)+i)
398 ENDIF
399 ENDDO
400 ENDIF
401
402
403 ELSEIF(ifunc>=17.AND.ifunc<=19)THEN
404
405 ius = ifunc-14
406
407 ipid = ixc(6,nft+1)
408 irep = igeo(6,ipid)
409
410 IF (mlw == 25.AND. irep == 1) THEN
411 IF(ity == 3)THEN
412 DO i=1,nel
413 mat(i)=ixc(1,nft+i)
414 pid(i)=ixc(6,nft+i)
415 END DO
416 ELSE
417 DO i=1,nel
418 mat(i)=ixtg(1,nft+i)
419 pid(i)=ixtg(5,nft+i)
420 END DO
421 END IF
422 ivisc = 0
423 nuvarv = 0
424 IF(mlw == 25) THEN
425 IF(igtyp == 17)THEN
426
427
428
429 ipmat = 2 + mpt
430
431 nuvarv = 0
432 DO n=1,npt
433 iadr = (n-1)*nel
434 DO i=1,nel
435 matl = stack%IGEO(ipmat+n,isubstack)
436 IF (mat_param(matl)%IVISC > 0 ) ivisc = 1
437 END DO
438 END DO
439 END IF
440 ENDIF
441
442 ns1 = 5
443 CALL sigrota(lft ,llt ,nft ,ilayer ,nel ,
444 2 ns1 ,x ,ixc ,elbuf_tab(ng) ,
445 3 sige ,ity ,ixtg ,ihbe ,istrain ,
446 4 ivisc)
447 DO i=lft,llt
448 evar(i) = sige(i,ifunc - 14)
449 ENDDO
450 ELSEIF (mlw == 25 .AND. irep == 0) THEN
451 IF (ihbe == 11) THEN
452 DO i=lft,llt
453 evar(i) = zero
454 n = i + nft
455 ilayer = plyelems(n)
456 ENDDO
457 ELSE
458
459 DO i=lft,llt
460 n = i + nft
461 ilayer = plyelems(n)
462 ENDDO
463 ENDIF
464 ELSE
465
466 DO i=lft,llt
467 n = i + nft
468 ilayer = plyelems(n)
469 IF(ilayer > 0) THEN
470
471
472 ENDIF
473 ENDDO
474 ENDIF
475 ELSEIF(ifunc == 26)THEN
476 DO i=lft,llt
477 evar(i) = zero
478 ENDDO
479 ELSEIF(ifunc == 2155)THEN
480
481 DO i=lft,llt
482 IF (ity == 3) THEN
483 evar(i) = zero
484 ENDIF
485 IF (ity == 7) THEN
486 evar(i) = zero
487 ENDIF
488 ENDDO
489
490 ELSEIF(ifunc>=20.AND.ifunc<=24)THEN
491
492
493 ius = ifunc - 20
494
495 IF(ihbe == 11.AND.
496 . (mlw == 29.OR.mlw == 30.OR.mlw == 31.OR.mlw>=33))THEN
497 npg=0
498
499 IF (ity == 3.AND.ihbe == 11) THEN
500 npg =4
501 fac = fourth
502 ENDIF
503
504 IF (ity == 7.AND.ihbe == 11) THEN
505 npg =3
506 fac = third
507 ENDIF
508
510 nel5 = nel*5
511 nel8 = nel*8
512
513
514 IF (ity == 7) THEN
515 igtyp = nint(geo(12,ixtg(6,nft+1)))
516 ELSE
517 igtyp = nint(geo(12,ixc(6,nft+1)))
518 ENDIF
519 IF(mpt == 0)THEN
520 DO i = lft, llt
521 evar(i) =zero
522 ENDDO
523 ELSE
524 i1 = ius*nel
525 DO i=lft,llt
526 n = i + nft
527 IF(nuvar>=ius)THEN
528 evar(i) = zero
529 n = i + nft
530 ilayer = plyelems(n)
531 IF(ilayer > 0) THEN
532 nuvar = elbuf_tab(ng)%BUFLY(ipt)%NVAR_MAT
533 ipt = ilayer
534 DO ir = 1, nptr
535 DO is = 1, npts
536 uvar=>elbuf_tab(ng)%BUFLY(ipt)%MAT(ir,is,1)%VAR
537 evar(i) = evar(i) + uvar(i1 + i)*fac
538 ENDDO
539 ENDDO
540 ENDIF
541 ENDIF
542 ENDDO
543 ENDIF
544 ELSEIF (mlw == 29 .OR. mlw == 30.OR.
545 . mlw == 31.OR.mlw>=33) THEN
546
547 ius = ifunc - 20
548 DO i=lft,llt
549 n = i + nft
550 IF (ipm(8,ixc(1,n))>ius) THEN
551 ENDIF
552 ENDDO
553 ENDIF
554
555 ELSEIF(ifunc>=27.AND.ifunc<=39) THEN
556
557 IF (mlw == 29.OR.mlw == 30.OR.mlw == 31.OR.mlw>=33)THEN
558 IF (mpt > 0)THEN
559 ius = ifunc - 22
560 DO i=lft,llt
561 n = i + nft
562 evar(i) = zero
563 ilayer = plyelems(n)
564 IF (ilayer > 0) THEN
565 ipt = ilayer
566 nuvar = elbuf_tab(ng)%BUFLY(ipt)%NVAR_MAT
567 i1 = ius*nel
568 IF (nuvar>=ius)THEN
569 DO ir = 1, nptr
570 DO is = 1, npts
571 uvar=>elbuf_tab(ng)%BUFLY(ipt)%MAT(ir,is,1)%VAR
572 evar(i) = evar(i) + uvar(i1 + i)*fac
573 ENDDO
574 ENDDO
575 ENDIF
576 ENDIF
577 ENDDO
578 ENDIF
579 ENDIF
580
581 ELSEIF((ifunc>=40.AND.ifunc<=2039).OR.
582 . (ifunc>=2240.AND.ifunc<=10139)) THEN
583
584 IF (ifunc>=40.AND.ifunc<=2039) THEN
585 ius = (ifunc - 39)/100
586 ipt = mod((ifunc - 39), 100)
587 ELSEIF (ifunc>=2240.AND.ifunc<=10139) THEN
588 ius = ((ifunc - 2239)/100) +20
589 ipt = mod((ifunc - 2239), 100)
590 ENDIF
591 IF(ipt == 0)THEN
592 ipt = 100
593 ius = ius -1
594 ENDIF
595 IF (nlay > 1) THEN
596 il = ipt
597 ipt = 1
598 ELSE
599 il = 1
600 ENDIF
601 ipt = ilayer
602 IF (mlw == 29.OR.mlw == 30.OR.mlw == 31.OR.mlw>=33)THEN
603 npg=0
604
605 IF (ity == 3.AND.ihbe == 11) THEN
606 npg =4
607 fac = fourth
608 ENDIF
609
610 IF (ity == 7.AND.ihbe == 11) THEN
611 npg =3
612 fac = third
613 ENDIF
614
615 IF (mpt> 0) THEN
616 DO i=lft,llt
617 n = i + nft
618 IF (ity == 7) THEN
619 nuvar =
max(nuvar,ipm(8,ixtg(1,nft+1)))
620 ELSE
621 nuvar =
max(nuvar,ipm(8,ixc(1,nft+1)))
622 ENDIF
623 IF (nuvar>=ius.AND.npt>=ipt)THEN
624 evar(i) = zero
625 ilayer = plyelems(n)
626 i1 = ius*nel
627 IF (ilayer > 0) THEN
628 ipt = ilayer
629 DO ir = 1, nptr
630 DO is = 1, npts
631 uvar=>elbuf_tab(ng)%BUFLY(il)%MAT(ir,is,ipt)%VAR
632 evar(i) = evar(i) + uvar(i1 + i)*fac
633 ENDDO
634 ENDDO
635 ENDIF
636 ENDIF
637 ENDDO
638 ENDIF
639 ENDIF
640
641 ELSEIF (ifunc == 10240 .OR. ifunc == 10669) THEN
642
643
644 IF (ihbe == 11) THEN
645 IF (ifunc == 10240 ) THEN
646 DO i=lft,llt
647 n = i + nft
648 ilayer = plyelems(n)
649 nfail = 0
650 IF(ilayer /= 0.AND. ilayer <= elbuf_tab(ng)%NINTLAY)
651 . nfail = elbuf_tab(ng)%INTLAY(ilayer)%NFAIL
652 IF (ilayer > 0 .AND. ilayer <= elbuf_tab(ng)%NINTLAY .AND. nfail > 0) THEN
653 nuvar = elbuf_tab(ng)%INTLAY(ilayer)%FAIL(1,1)%FLOC(1)%NVAR
654 IF (nuvar > 0) THEN
655 evar(i) = ep30
656 DO ir=1,nptr
657 DO is=1,npts
658 fbuf => elbuf_tab(ng)%INTLAY(ilayer)%FAIL(ir,is)
659 evar(i) =
min(evar(i), fbuf%FLOC(1)%VAR(i))
660 ENDDO
661 ENDDO
662 ENDIF
663 ENDIF
664 ENDDO
665 ELSEIF (ifunc == 10669 ) THEN
666 DO i=lft,llt
667 n = i + nft
668 ilayer = plyelems(n)
669 nfail = 0
670 IF(ilayer /= 0.AND. ilayer <= elbuf_tab(ng)%NINTLAY)
671 . nfail = elbuf_tab(ng)%INTLAY(ilayer)%NFAIL
672 IF (ilayer > 0 .AND. ilayer <= elbuf_tab(ng)%NINTLAY .AND. nfailTHEN
673 nuvar = elbuf_tab(ng)%INTLAY(ilayer)%FAIL(1,1)%FLOC(1)%NVAR
674 IF (nuvar > 0) THEN
675 DO ir=1,nptr
676 DO is=1,npts
677
678 evar(i) =
max(evar(i), fbuf%FLOC(1)%VAR(i))
679 ENDDO
680 ENDDO
681 ENDIF
682 ENDIF
683 ENDDO
684 ENDIF
685 ENDIF
686
687 ELSEIF((ifunc>=10241.AND.ifunc<=10243)) THEN
688
689
690 ll = ifunc - 10240
691 IF (ihbe == 11) THEN
692 DO i=lft,llt
693 n = i + nft
694 ilayer = plyelems(n)
695 IF (ilayer > 0 .and. ilayer <= elbuf_tab(ng)%NINTLAY) THEN
696 DO ir=1,nptr
697 DO is=1,npts
698 ilbuf => elbuf_tab(ng)%INTLAY(ilayer)%ILBUF(ir,is)
699 evar(i) = evar(i) + ilbuf%SIG(nel*(ll-1) + i) / npg
700 ENDDO
701 ENDDO
702 ENDIF
703 ENDDO
704 ENDIF
705
706 ELSEIF((ifunc>=10244.AND.ifunc<=10246)) THEN
707
708
709 ll = ifunc - 10243
710 IF (ihbe == 11) THEN
711 DO i=lft,llt
712 n = i + nft
713 ilayer = plyelems(n)
714 IF(ilayer > 0 .and. ilayer <= elbuf_tab(ng)%NINTLAY) THEN
715 DO ir=1,nptr
716 DO is=1,npts
717 ilbuf => elbuf_tab(ng)%INTLAY(ilayer)%ILBUF(ir,is)
718 evar(i) = evar(i) + ilbuf%EPS((i-1)*3 + ll) / npg
719 ENDDO
720 ENDDO
721 ENDIF
722 ENDDO
723 ENDIF
724
725 ELSEIF(ifunc == 10247) THEN
726
727 IF (ihbe == 11) THEN
728 DO i=lft,llt
729 n = i + nft
730 ilayer = plyelems(n)
731 IF(ilayer > 0 .and. ilayer <= elbuf_tab(ng)%NINTLAY) THEN
732 evar(i) = elbuf_tab(ng)%INTLAY(ilayer)%EINT(i)
733 ENDIF
734 ENDDO
735 ENDIF
736
737 ELSEIF (ifunc == 2040) THEN
738
739 IF (nlay > 1) THEN
741 ipt = 1
742 ELSE
743 il = 1
745 ENDIF
746 bufly => elbuf_tab(ng)%BUFLY(il)
747 IF (bufly%L_PLA > 0) THEN
748 DO i=lft,llt
749 evar(i) = abs(bufly%LBUF(1,1,ipt)%PLA(i))
750 ENDDO
751 ELSE
752 DO i=lft,llt
753 evar(i) = zero
754 ENDDO
755 ENDIF
756
757 ELSEIF (ifunc == 2041) THEN
758
759 bufly => elbuf_tab(ng)%BUFLY(1)
760 IF (bufly%L_PLA > 0) THEN
761 DO i=lft,llt
762 evar(i) = abs(bufly%LBUF(1,1,1)%PLA(i))
763 ENDDO
764 ENDIF
765
766 ELSEIF(ifunc>=2042.AND.ifunc<=2141) THEN
767
768 IF(mlw/=1)THEN
769 ipt = mod((ifunc - 2041), 100)
770 IF(ipt == 0)ipt = 100
771 IF(npt>=ipt)THEN
772
773 DO i=lft,llt
774 ilayer = plyelems(n)
775 IF(ilayer > 0) THEN
776
777
778 ENDIF
779 END DO
780 ELSE IF(npt == 0)THEN
781
782 DO i=lft,llt
783
784 END DO
785 END IF
786 ENDIF
787
788 ELSE IF(ifunc == 2142)THEN
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811!
812
813
814
815
816
817
818
819
820!
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842 IF(ifailure == 0 .OR.(ifailure /=0 .AND.ifaila ==1))THEN
843 DO i=lft,llt
844 off = gbuf%OFF(i)
845 IF(off < zero)THEN
846 fail(i) = -one
847 ELSEIF(off > zero)THEN
848 fail(i) = one
849 ELSE
850 fail(i) = zero
851 END IF
852 evar(i)=fail(i)
853 END DO
854 ENDIF
855
856
857 ELSE IF(ifunc == 2156)THEN
858
859 ENDIF
860
861 IF(mlw == 0 .OR. mlw == 13)THEN
862 IF(ity == 3)THEN
863 ELSE
864 DO i=lft,llt
865 ilayer = plyelems(n)
866 IF(ilayer > 0) THEN
867 ie = ie + 1
868 func(el2fa(nel_ply + ie)) = zero
869 ENDIF
870 ENDDO
871 ENDIF
872 ELSEIF(ifunc == 3)THEN
873
874
875
876 IF(ity == 3)THEN
877 DO i=lft,llt
878 n = i + nft
879 ilayer = plyelems(n)
880 IF(ilayer > 0) THEN
881 ie = ie + 1
882 func(el2fa(nel_ply + ie)) = zero
883 ENDIF
884 ENDDO
885 ELSE
886 DO i=lft,llt
887 n = i + nft
888 ilayer = plyelems(n)
889 IF(ilayer > 0) THEN
890 ie = ie + 1
891 func(el2fa(nel_ply + ie)) = zero
892 ENDIF
893 ENDDO
894 ENDIF
895 ELSEIF(ifunc == 25.AND.ity == 3)THEN
896
897
898
899 DO i=lft,llt
900 n = i + nft
901 ilayer = plyelems(n)
902 IF(ilayer > 0) THEN
903 ie = ie + 1
904 func(el2fa(nel_ply + ie)) = zero
905 ENDIF
906 ENDDO
907 ELSE
908
909
910
911 IF(ity == 3)THEN
912 DO i=lft,llt
913 n = i + nft
914 ilayer = plyelems(n)
915 IF(ilayer > 0) THEN
916 ie = ie + 1
917 func(el2fa(nel_ply + ie)) = evar(i)
918 ENDIF
919 ENDDO
920 ENDIF
921 ENDIF
922 ENDIF
923
924
925
926 END DO
927 900 CONTINUE
928
929
930 IF(iflag > 0) THEN
931 IF (nspmd == 1) THEN
932 ilast =
max(nel_ply,1)
933 DO i=1,ie
934 n = el2fa(nel_ply + i)
935 r4 = func(n)
937 ENDDO
938 ELSE
939 DO i=1,ie
940 n = el2fa(nel_ply + i)
941 wal(i+nel_ply) = func(n)
942 ENDDO
943 ENDIF
944
945 ENDIF
947 ENDDO
948 IF (nspmd > 1 ) THEN
949 IF (ispmd == 0) THEN
950 buf = nbf_pxfemg
951 ELSE
952 buf=1
953 ENDIF
955 ENDIF
956
957 DEALLOCATE(wal)
958 RETURN
subroutine initbuf(iparg, ng, mtn, llt, nft, iad, ity, npt, jale, ismstr, jeul, jtur, jthe, jlag, jmult, jhbe, jivf, mid, jpor, jcvt, jclose, jpla, irep, iint, igtyp, israt, isrot, icsen, isorth, isorthg, ifailure, jsms)
integer, dimension(:), allocatable indx_ply
type(plyshells), dimension(:), allocatable plyshell
subroutine sigrota(jft, jlt, nft, ipt, nel, ns1, x, ixc, elbuf_str, sig, ity, ixtg, ihbe, istrain, ivisc)
subroutine spmd_r4get_partn(size, nbf_l, nbpart, iadg, wal, buf)
void write_r_c(float *w, int *len)