35 SUBROUTINE c_tf_ne(ELBUF_STR,IHBE ,NEL ,NPT ,MLW ,
36 . ITY ,ISTRAIN ,JJ ,WA ,IW ,
37 . NLAY ,NPTR ,NPTS ,ITHK ,NFT ,
38 . THKE ,NPG ,IGTYP,GEO ,IGEO ,
39 . IXFEM ,ISUBSTACK,STACK,DRAPE_SH4N, DRAPE_SH3N,
40 . IXC ,IXTG ,MPT ,DRAPEG )
47 use element_mod ,
only : nixc,nixtg
51#include "implicit_f.inc"
64 INTEGER IHBE,NEL,NPT,JJ,MLW,ITY,ISTRAIN,IW,,
65 . NPTR,NPTS,ITHK,NFT,NPG,IGTYP,IGEO(NPROPGI,*),
66 . IXFEM,ISUBSTACK,IXC(NIXC,*),
69 . wa(*),thke(*),geo(npropg,*)
71 TYPE (ELBUF_STRUCT_),
TARGET :: ELBUF_STR
72 TYPE (STACK_PLY) :: STACK
73 TYPE(
drape_) :: DRAPE_SH4N(NUMELC_DRAPE), DRAPE_SH3N(NUMELTG_DRAPE)
74 TYPE(DRAPEG_) :: DRAPEG
78 INTEGER I,J,K,IPT,II(12),
79 . ptf,ptm,pts,ng,ir,is,lenf,lenm,
80 . lens,mat_1,pid_1,laynpt_max,nlay_max,ixlay,ipt_all,
81 . it,nptt,ilay,shift,sedrape,numel_drape
82 INTEGER MAT(MVSIZ),PID(MVSIZ)
84 . func(6),qpg(2,4),pg,mpg,
85 . sig0(6,mvsiz),eps(mvsiz),mom0(3,mvsiz),
86 . sk(2,mvsiz),st(2,mvsiz),mk(2,mvsiz),mt(2,mvsiz),
87 . shk(2,mvsiz),sht(2,mvsiz),z01(11,11),zz
89 INTEGER,
DIMENSION(:) ,
ALLOCATABLE :: MATLY
90 my_real,
DIMENSION(:) ,
ALLOCATABLE :: THKLY
91 my_real,
DIMENSION(:,:) ,
ALLOCATABLE :: POSLY,THK_LY
92 PARAMETER (PG = .577350269189626)
93 parameter (mpg=-.577350269189626)
94 DATA qpg/mpg,mpg,pg,mpg,pg,pg,mpg,pg/
96 1 0. ,0. ,0. ,0. ,0. ,
97 1 0. ,0. ,0. ,0. ,0. ,0. ,
98 2 -.5 ,0.5 ,0. ,0. ,0. ,
99 2 0. ,0. ,0. ,0. ,0. ,0. ,
100 3 -.5 ,0. ,0.5 ,0. ,0. ,
101 3 0. ,0. ,0. ,0. ,0. ,0. ,
102 4 -.5 ,-.1666667,0.1666667,0.5 ,0. ,
103 4 0. ,0. ,0. ,0. ,0. ,0. ,
104 5 -.5 ,-.25 ,0. ,0.25 ,0.5 ,
105 5 0. ,0. ,0. ,0. ,0. ,0. ,
106 6 -.5 ,-.3 ,-.1 ,0.1 ,0.3 ,
107 6 0.5 ,0. ,0. ,0. ,0. ,0. ,
108 7 -.5 ,-.3333333,-.1666667,0.0 ,0.1666667,
109 7 0.3333333,0.5 ,0. ,0. ,0. ,0. ,
110 8 -.5 ,-.3571429,-.2142857,-.0714286,0.0714286,
111 8 0.2142857,0.3571429,0.5 ,0. ,0. ,0. ,
112 9 -.5 ,-.375 ,-.25 ,-.125 ,0.0 ,
113 9 0.125 ,0.25 ,0.375 ,0.5 ,0. ,0. ,
114 a -.5 ,-.3888889,-.2777778,-.1666667,0.0555555,
115 a 0.0555555,0.1666667,0.2777778,0.3888889,0.5 ,0. ,
116 b -.5 ,-.4 ,-.3 ,-.2 ,-.1 ,
117 b 0. ,0.1 ,0.2 ,0.3 ,0.4 ,0.5 /
119 TYPE(buf_lay_) ,
POINTER :: BUFLY
120 TYPE(G_BUFEL_) ,
POINTER :: GBUF
121 TYPE(L_BUFEL_) ,
POINTER :: LBUF
123 GBUF => elbuf_str%GBUF
131 IF(igtyp == 51 .OR. igtyp == 52)
THEN
133 laynpt_max =
max(laynpt_max , elbuf_str%BUFLY(ilay)%NPTT)
136 nlay_max =
max(nlay,npt, elbuf_str%NLAY)
137 ALLOCATE(matly(mvsiz*nlay_max), thkly(mvsiz*nlay_max*laynpt_max),
138 . posly(mvsiz,nlay_max*laynpt_max),thk_ly(nel,nlay_max*laynpt_max))
145 IF (ity == 7) shift = shift + numelc
150 ELSEIF (ity == 7)
THEN
151 mat_1 = ixtg(1,1+nft)
152 pid_1 = ixtg(5,1+nft)
162 numel_drape = numeltg_drape
165 . elbuf_str,1 ,nel ,geo ,igeo ,
166 . mat ,pid ,thkly ,matly ,posly ,
167 . igtyp ,ixfem,ixlay ,nlay ,npt ,
168 . isubstack,stack,drape_sh3n ,nft ,thke ,
169 . nel ,thk_ly ,drapeg%INDX_SH3N ,sedrape,numel_drape )
171 numel_drape = numelc_drape
174 . elbuf_str,1 ,nel ,geo ,igeo ,
175 . mat ,pid ,thkly ,matly ,posly ,
176 . igtyp ,ixfem,ixlay ,nlay ,npt ,
177 . isubstack,stack,drape_sh4n ,nft ,thke ,
178 . nel ,thk_ly ,drapeg%INDX_SH4N,sedrape,numel_drape )
183 IF (mlw == 1 .OR. mlw == 3 .OR. mlw == 23) mpt=0
188 st(1,i)= gbuf%HOURG(ii(1)+i)
189 st(2,i)= -gbuf%HOURG(ii(2)+i)
190 mt(1,i)= gbuf%HOURG(ii(3)+i)
191 mt(2,i)= -gbuf%HOURG(ii(4)+i)
192 sk(1,i)= -gbuf%HOURG(ii(7)+i)
193 sk(2,i)= gbuf%HOURG(ii(8)+i)
194 mk(1,i)= -gbuf%HOURG(ii(9)+i)
195 mk(2,i)= gbuf%HOURG(ii(10)+i)
196 sht(1,i)= gbuf%HOURG(ii(5)+i)
197 sht(2,i)= -gbuf%HOURG(ii(6)+i)
198 shk(1,i)= -gbuf%HOURG(ii(11)+i)
199 shk(2,i)= gbuf%HOURG(ii(12)+i)
210 sig0(1,i) = gbuf%FOR(ii(1)+i)
211 sig0(2,i) = gbuf%FOR(ii(2)+i)
212 sig0(3,i) = gbuf%FOR(ii(3)+i)
213 sig0(4,i) = gbuf%FOR(ii(4)+i)
214 sig0(5,i) = gbuf%FOR(ii(5)+i)
215 IF (gbuf%G_PLA > 0)
THEN
220 mom0(1,i) = gbuf%MOM(ii(1)+i)
221 mom0(2,i) = gbuf%MOM(ii(2)+i)
222 mom0(3,i) = gbuf%MOM(ii(3)+i)
226 IF (outyy_fmt == 2)
THEN
228 WRITE(iugeo,
'(2I8/,1P3E12.5)')
229 . mpt,npg,gbuf%THK(i),gbuf%EINT(i),gbuf%EINT(i+nel)
231 WRITE(iugeo,
'(2I8/,1P3E12.5)')
232 . mpt,npg,thke(i+nft),gbuf%EINT(i),gbuf%EINT(i+nel)
236 WRITE(iugeo,
'(2I10/,1P3E20.13)')
237 . mpt,npg,gbuf%THK(i),gbuf%EINT(i),gbuf%EINT(i+nel)
239 WRITE(iugeo,
'(2I10/,1P3E20.13)')
240 . mpt,npg,thke(i+nft),gbuf%EINT(i),gbuf%EINT(i+nel)
244 func(1)=sig0(1,i)+st(1,i)*qpg(2,k)+sk(1,i)*qpg(1,k)
245 func(2)=sig0(2,i)+st(2,i)*qpg(2,k)+sk(2,i)*qpg(1,k)
247 func(4)=sig0(4,i)+sht(2,i)*qpg(2,k)+shk(2,i)*qpg(1,k)
248 func(5)=sig0(5,i)+sht(1,i)*qpg(2,k)+shk(1,i)*qpg(1,k)
250 IF (outyy_fmt == 2)
THEN
251 WRITE(iugeo,
'(1P6E12.5)')(func(j),j=1,6)
253 WRITE(iugeo,
'(1P6E20.13)')(func(j),j=1,6)
255 func(1)=mom0(1,i)+mt(1,i)*qpg(2,k)+mk(1,i)*qpg(1,k)
256 func(2)=mom0(2,i)+mt(2,i)*qpg(2,k)+mk(2,i)*qpg(1,k)
258 IF (outyy_fmt == 2)
THEN
259 WRITE(iugeo,
'(1P3E12.5)')(func(j),j=1,3)
261 WRITE(iugeo,
'(1P3E20.13)')(func(j),j=1,3)
270 IF (outyy_fmt == 2)
THEN
272 WRITE(iugeo,
'(2I8/,1P3E12.5)')
273 . mpt,npg,gbuf%THK(i),gbuf%EINT(i),gbuf%EINT(i+nel)
275 WRITE(iugeo,
'(2I8/,1P3E12.5)')
276 . mpt,npg,thke(i+nft),gbuf%EINT(i),gbuf%EINT(i+nel)
280 WRITE(iugeo,
'(2I10/,1P3E20.13)')
281 . mpt,npg,gbuf%THK(i),gbuf%EINT(i),gbuf%EINT(i+nel)
283 WRITE(iugeo,
'(2I10/,1P3E20.13)')
284 . mpt,npg,thke(i+nft),gbuf%EINT(i),gbuf%EINT(i+nel)
289 bufly => elbuf_str%BUFLY(1)
292 lbuf => bufly%LBUF(1,1,it)
293 zz = gbuf%THK(i)*z01(it,nptt)
294 sig0(1,i) = lbuf%SIG(ii(1)+i)
295 sig0(2,i) = lbuf%SIG(ii(2)+i)
296 sig0(3,i) = lbuf%SIG(ii(3)+i)
297 sig0(4,i) = lbuf%SIG(ii(4)+i)
298 sig0(5,i) = lbuf%SIG(ii(5)+i)
300 func(1)=sig0(1,i)+(st(1,i)+zz*mt(1,i))*qpg(2,k)+
301 . (sk(1,i)+zz*mk(1,i))*qpg(1,k)
302 func(2)=sig0(2,i)+(st(2,i)+zz*mt(2,i))*qpg(2,k)+
303 . (sk(2,i)+zz*mk(2,i))*qpg(1,k)
305 func(4)=sig0(4,i)+sht(2,i)*qpg(2,k)+shk(2,i)*qpg(1,k)
306 func(5)=sig0(5,i)+sht(1,i)*qpg(2,k)+shk(1,i)*qpg(1,k)
307 IF (bufly%L_PLA > 0)
THEN
312 IF (outyy_fmt == 2)
THEN
313 WRITE(iugeo,
'(1P6E12.5)')(func(j),j=1,6)
315 WRITE(iugeo,
'(1P6E20.13)')(func(j),j=1,6)
319 ELSEIF (nlay > 1)
THEN
322 bufly => elbuf_str%BUFLY(ilay)
326 zz = gbuf%THK(i)*posly(i,ipt)
327 lbuf => bufly%LBUF(1,1,it)
328 sig0(1,i) = lbuf%SIG(ii(1)+i)
329 sig0(2,i) = lbuf%SIG(ii(2)+i)
330 sig0(3,i) = lbuf%SIG(ii(3)+i)
331 sig0(4,i) = lbuf%SIG(ii(4)+i)
332 sig0(5,i) = lbuf%SIG(ii(5)+i)
334 func(1)=sig0(1,i)+(st(1,i)+zz*mt(1,i))*qpg(2,k)+
335 . (sk(1,i)+zz*mk(1,i))*qpg(1,k)
336 func(2)=sig0(2,i)+(st(2,i)+zz*mt(2,i))*qpg(2,k)+
337 . (sk(2,i)+zz*mk(2,i))*qpg(1,k)
339 func(4)=sig0(4,i)+sht(2,i)*qpg(2,k)+shk(2,i)*qpg(1,k)
340 func(5)=sig0(5,i)+sht(1,i)*qpg(2,k)+shk(1,i)*qpg(1,k)
342 IF (bufly%L_PLA > 0)
THEN
347 IF (outyy_fmt == 2)
THEN
348 WRITE(iugeo,
'(1P6E12.5)')(func(j),j=1,6)
350 WRITE(iugeo,
'(1P6E20.13)')(func(j),j=1,6)
354 ipt_all = ipt_all + nptt
360 ELSEIF (ihbe == 11)
THEN
362 lenf = nel*gbuf%G_FORPG/npg
363 lenm = nel*gbuf%G_MOMPG/npg
364 lens = nel*gbuf%G_STRPG/npg
367 IF (outyy_fmt == 2)
THEN
369 WRITE(iugeo,
'(2I8/,1P3E12.5)')
370 . mpt,npg,gbuf%THK(i),gbuf%EINT(i),gbuf%EINT(i+nel)
372 WRITE(iugeo,
'(2I8/,1P3E12.5)')
373 . mpt,npg,thke(i+nft),gbuf%EINT(i),gbuf%EINT(i+nel)
377 WRITE(iugeo,
'(2I10/,1P3E20.13)')
378 . mpt,npg,gbuf%THK(i),gbuf%EINT(i),gbuf%EINT(i+nel)
380 WRITE(iugeo,
'(2I10/,1P3E20.13)')
381 . mpt,npg,thke(i+nft),gbuf%EINT(i),gbuf%EINT(i+nel)
385 bufly => elbuf_str%BUFLY(1)
388 lbuf => elbuf_str%BUFLY(1)%LBUF(ir,is,1)
389 ng = nptr*(is-1) + ir
392 func(1) = gbuf%FORPG(ptf+ii(1)+i)
393 func(2) = gbuf%FORPG(ptf+ii(2)+i)
394 func(3) = gbuf%FORPG(ptf+ii(3)+i)
395 func(4) = gbuf%FORPG(ptf+ii(4)+i)
396 func(5) = gbuf%FORPG(ptf+ii(5)+i)
397 IF (bufly%L_PLA > 0)
THEN
398 func(6) = lbuf%PLA(i)
402 IF (outyy_fmt == 2)
THEN
403 WRITE(iugeo,
'(1P6E12.5)')(func(j),j=1,6)
405 WRITE(iugeo,
'(1P6E20.13)')(func(j),j=1,6)
407 func(1) = gbuf%MOMPG(ptm+ii(1)+i)
408 func(2) = gbuf%MOMPG(ptm+ii(2)+i)
409 func(3) = gbuf%MOMPG(ptm+ii(3)+i)
410 IF (outyy_fmt == 2)
THEN
411 WRITE(iugeo,
'(1P3E12.5)')(func(j),j=1,3)
413 WRITE(iugeo,
'(1P3E20.13)')(func(j),j=1,3)
422 IF (outyy_fmt == 2)
THEN
424 WRITE(iugeo,
'(2I8/,1P3E12.5)')
425 . mpt,npg,gbuf%THK(i),gbuf%EINT(i),gbuf%EINT(i+nel)
427 WRITE(iugeo,
'(2I8/,1P3E12.5)')
428 . mpt,npg,thke(i+nft),gbuf%EINT(i),gbuf%EINT(i+nel)
432 WRITE(iugeo,
'(2I10/,1P3E20.13)')
435 WRITE(iugeo,
'(2I10/,1P3E20.13)')
436 . mpt,npg,thke(i+nft),gbuf%EINT(i),gbuf%EINT(i+nel)
441 bufly => elbuf_str%BUFLY(1)
446 lbuf => bufly%LBUF(ir,is,it)
447 func(1) = lbuf%SIG(ii(1)+i)
448 func(2) = lbuf%SIG(ii(2)+i)
449 func(3) = lbuf%SIG(ii(3)+i)
450 func(4) = lbuf%SIG(ii(4)+i)
451 func(5) = lbuf%SIG(ii(5)+i)
452 IF (bufly%L_PLA > 0)
THEN
457 IF (outyy_fmt == 2)
THEN
458 WRITE(iugeo,
'(1P6E12.5)')(func(j),j=1,6)
460 WRITE(iugeo,
'(1P6E20.13)')(func(j),j=1,6)
465 ELSEIF (nlay > 1)
THEN
467 bufly => elbuf_str%BUFLY(ilay)
472 lbuf => elbuf_str%BUFLY(ilay)%LBUF(ir,is,it)
473 func(1) = lbuf%SIG(ii(1)+i)
474 func(2) = lbuf%SIG(ii(2)+i)
475 func(3) = lbuf%SIG(ii(3)+i)
476 func(4) = lbuf%SIG(ii(4)+i)
477 func(5) = lbuf%SIG(ii(5)+i)
478 IF (bufly%L_PLA > 0)
THEN
479 func(6) = lbuf%PLA(i)
483 IF (outyy_fmt == 2)
THEN
484 WRITE(iugeo,
'(1P6E12.5)')(func(j),j=1,6)
486 WRITE(iugeo,
'(1P6E20.13)')(func(j),j=1,6)
508 sig0(1,i) = gbuf%FOR(ii(1)+i)
509 sig0(2,i) = gbuf%FOR(ii(2)+i)
510 sig0(3,i) = gbuf%FOR(ii(3)+i)
511 sig0(4,i) = gbuf%FOR(ii(4)
512 sig0(5,i) = gbuf%FOR(ii(5)+i)
513 IF (gbuf%G_PLA > 0)
THEN
518 mom0(1,i) = gbuf%MOM(ii(1)+i)
519 mom0(2,i) = gbuf%MOM(ii(2)+i)
520 mom0(3,i) = gbuf%MOM(ii(3)+i)
529 wa(jj+3) = gbuf%THK(i)
531 wa(jj+3) = thke(i+nft)
533 wa(jj+4) = gbuf%EINT(i)
534 wa(jj+5) = gbuf%EINT(i+nel)
537 wa(jj+1)=sig0(1,i)+st(1,i)*qpg(2,k)+sk(1,i)*qpg(1,k)
538 wa(jj+2)=sig0(2,i)+st(2,i)*qpg(2,k)+sk(2,i)*qpg(1,k)
540 wa(jj+4)=sig0(4,i)+sht(2,i)*qpg(2,k)+shk(2,i)*qpg(1,k)
541 wa(jj+5)=sig0(5,i)+sht(1,i)*qpg(2,k)+shk(1,i)*qpg(1,k)
543 wa(jj+7)=mom0(1,i)+mt(1,i)*qpg(2,k)+mk(1,i)*qpg(1,k)
544 wa(jj+8)=mom0(2,i)+mt(2,i)*qpg(2,k)+mk(2,i)*qpg(1,k)
557 wa(jj+3) = gbuf%THK(i)
559 wa(jj+3) = thke(i+nft)
561 wa(jj+4) = gbuf%EINT(i)
562 wa(jj+5) = gbuf%EINT(i+nel)
566 bufly => elbuf_str%BUFLY(1)
569 lbuf => bufly%LBUF(1,1,it)
570 zz = gbuf%THK(i)*z01(it,nptt)
571 sig0(1,i) = lbuf%SIG(ii(1)+i)
572 sig0(2,i) = lbuf%SIG(ii(2)+i)
573 sig0(3,i) = lbuf%SIG(ii(3)+i)
574 sig0(4,i) = lbuf%SIG(ii(4)+i)
575 sig0(5,i) = lbuf%SIG(ii(5)+i)
578 wa(jj+1)=sig0(1,i)+(st(1,i)+zz*mt(1,i))*qpg(2,k)+
579 . (sk(1,i)+zz*mk(1,i))*qpg(1,k)
580 wa(jj+2)=sig0(2,i)+(st(2,i)+zz*mt(2,i))*qpg(2,k)+
581 . (sk(2,i)+zz*mk(2,i))*qpg(1,k)
583 wa(jj+4)=sig0(4,i)+sht(2,i)*qpg(2,k)+shk(2,i)*qpg(1,k)
584 wa(jj+5)=sig0(5,i)+sht(1,i)*qpg(2,k)+shk(1,i)*qpg(1,k)
586 IF (bufly%L_PLA > 0)
THEN
594 ELSEIF (nlay > 1)
THEN
597 bufly => elbuf_str%BUFLY(ilay)
601 zz = gbuf%THK(i)*posly(i,ipt)
602 lbuf => bufly%LBUF(1,1,it)
603 sig0(1,i) = lbuf%SIG(ii(1)+i)
604 sig0(2,i) = lbuf%SIG(ii(2)+i)
605 sig0(3,i) = lbuf%SIG(ii(3)+i)
606 sig0(4,i) = lbuf%SIG(ii(4)+i)
607 sig0(5,i) = lbuf%SIG(ii(5)+i)
609 wa(jj+1)=sig0(1,i)+(st(1,i)+zz*mt(1,i))*qpg(2,k)+
610 . (sk(1,i)+zz*mk(1,i))*qpg(1,k)
611 wa(jj+2)=sig0(2,i)+(st(2,i)+zz*mt(2,i))*qpg(2,k)+
612 . (sk(2,i)+zz*mk(2,i))*qpg(1,k)
614 wa(jj+4)=sig0(4,i)+sht(2,i)*qpg(2,k)+shk(2,i)*qpg(1,k)
615 wa(jj+5)=sig0(5,i)+sht(1,i)*qpg(2,k)+shk(1,i)*qpg(1,k)
617 IF (bufly%L_PLA > 0)
THEN
625 ipt_all = ipt_all + nptt
630 ELSEIF (ihbe == 11)
THEN
632 lenf = nel*gbuf%G_FORPG/npg
633 lenm = nel*gbuf%G_MOMPG/npg
634 lens = nel*gbuf%G_STRPG/npg
642 wa(jj+3) = gbuf%THK(i)
644 wa(jj+3) = thke(i+nft)
646 wa(jj+4) = gbuf%EINT(i)
647 wa(jj+5) = gbuf%EINT(i+nel)
652 ng = nptr*(is-1) + ir
657 wa(jj+1) = gbuf%FORPG(ptf+ii(1)+i)
658 wa(jj+2) = gbuf%FORPG(ptf+ii(2)+i)
659 wa(jj+3) = gbuf%FORPG(ptf+ii(3)+i)
660 wa(jj+4) = gbuf%FORPG(ptf+ii(4)+i)
661 wa(jj+5) = gbuf%FORPG(ptf+ii(5)+i)
662 wa(jj+6) = gbuf%STRPG(pts+ii(1)+i)
663 wa(jj+7) = gbuf%MOMPG(ptm+ii(1)+i)
664 wa(jj+8) = gbuf%MOMPG(ptm+ii(2)+i)
665 wa(jj+9) = gbuf%MOMPG(ptm+ii(3)+i)
678 wa(jj+3) = gbuf%THK(i)
680 wa(jj+3) = thke(i+nft)
682 wa(jj+4) = gbuf%EINT(i)
683 wa(jj+5) = gbuf%EINT(i+nel)
687 bufly => elbuf_str%BUFLY(1)
692 lbuf => bufly%LBUF(ir,is,it)
693 wa(jj+1) = lbuf%SIG(ii(1)+i)
694 wa(jj+2) = lbuf%SIG(ii(2)+i)
695 wa(jj+3) = lbuf%SIG(ii(3)+i)
696 wa(jj+4) = lbuf%SIG(ii(4)+i)
697 wa(jj+5) = lbuf%SIG(ii(5)+i)
698 IF (bufly%L_PLA > 0)
THEN
699 wa(jj+6) = lbuf%PLA(i)
707 ELSEIF (nlay > 1)
THEN
709 bufly => elbuf_str%BUFLY(ilay)
714 lbuf => elbuf_str%BUFLY(ilay)%LBUF(ir,is,it
715 wa(jj+1) = lbuf%SIG(ii(1)+i)
716 wa(jj+2) = lbuf%SIG(ii(2)+i)
717 wa(jj+3) = lbuf%SIG(ii(3)+i)
718 wa(jj+4) = lbuf%SIG(ii(4)+i)
719 wa(jj+5) = lbuf%SIG(ii(5)+i)
720 IF (bufly%L_PLA > 0)
THEN
721 wa(jj+6) = lbuf%PLA(i)
738 DEALLOCATE(matly, thkly, posly, thk_ly)