29 SUBROUTINE cndleni(PM ,GEO ,STIFN ,STIFR ,IXC ,
30 . THK ,IHBE ,IGEO ,SH4TREE ,ALDT ,
31 . UPARAM ,IPM ,NLAY ,PM_STACK, ISUBSTACK,
32 . STRC ,AREA ,IMAT ,IPROP ,DTEL ,
33 . X2L ,X3L ,X4L ,Y2L ,Y3L ,Y4L ,
34 . IGEO_STACK ,GROUP_PARAM)
39 use element_mod ,
only : nixc
43#include "implicit_f.inc"
52#include "remesh_c.inc"
53#include "vect01_c.inc"
58 INTEGER IXC(NIXC,*),IGEO(NPROPGI,*),IHBE, SH4TREE(KSH4TREE,*),
59 . IPM(NPROPMI,*),NLAY,ISUBSTACK,IGEO_STACK(4*NPT_STACK+2,*)
62 . pm(npropm,*), geo(npropg,*),stifn(*),stifr(*),thk(*),aldt(*),
63 . uparam(*),pm_stack(20,*),strc(*),
dtel(mvsiz),
64 . x2l(mvsiz),x3l(mvsiz),x4l(mvsiz),y2l(mvsiz),y3l(mvsiz),y4l(mvsiz)
65 TYPE(group_param_) :: GROUP_PARAM
69 INTEGER I,N, , IPMAT, IGTYP,IADB,
70 . ipgmat,igmat,ipos,nip,mlawly
72 .
area(mvsiz),ssp(mvsiz), al1(mvsiz),
74 . almin(mvsiz),lxyz0(2),corel(2,4)
76 . viscmx,a11,a11r,vv,sti,stir,viscdef,rho,young,nu,
77 . x13,x24,y13,y24,l13,l24,c1,c2,
79 my_real,
DIMENSION(MVSIZ) :: zoffset
83 igtyp = nint(geo(12,iprop))
84 igmat = igeo(98,iprop)
89 zoffset(lft:llt) = zero
99 zoffset(i) = z0 - half*thk(i)
101 ELSEIF (ipos== 3 .OR. ipos == 4)
THEN
108 zoffset(lft:llt) = zero
112 IF ((igtyp == 11 .AND. igmat < 0) .OR. igtyp == 16 )
THEN
118 imt = igeo(ipmat+n,iprop)
119 ssp(i)=
max(ssp(i),pm(27,imt))
122 ELSEIF (mtn == 42)
THEN
125 imt = igeo(ipmat+n,iprop)
129 a11 = gmax*(one + nu)/(one - nu**2)
130 ssp(i)=
max(ssp(i), sqrt(a11/rho))
133 ELSEIF (mtn == 69)
THEN
136 imt = igeo(ipmat+n,iprop)
139 gmax = uparam(iadb+1)*uparam(iadb+6)
140 . + uparam(iadb+2)*uparam(iadb+7)
141 . + uparam(iadb+3)*uparam(iadb+8)
142 . + uparam(iadb+4)*uparam(iadb+9)
143 . + uparam(iadb+5)*uparam(iadb+10)
145 a11 = gmax*(one + nu)/(one - nu**2)
146 ssp(i)=
max(ssp(i), sqrt(a11/rho))
149 ELSEIF (mtn == 65)
THEN
152 imt =igeo(ipmat+n,iprop)
155 ssp(i)=
max(ssp(i), sqrt(young/rho))
161 imt =igeo(ipmat+n,iprop)
165 ssp(i)=
max(ssp(i), sqrt(young/(one-nu*nu)/rho))
170 ELSEIF (igtyp == 17 .AND. igmat < 0)
THEN
176 imt = igeo_stack(ipmat + n,isubstack)
177 ssp(i)=
max(ssp(i),pm(27,imt))
180 ELSEIF (mtn == 42)
THEN
183 imt = igeo_stack(ipmat + n,isubstack)
187 a11 = gmax*(one + nu)/(one - nu**2)
188 ssp(i)=
max(ssp(i), sqrt(a11/rho))
191 ELSEIF (mtn == 69)
THEN
194 imt = igeo_stack(ipmat + n,isubstack)
197 gmax = uparam(iadb+1)*uparam(iadb+6)
198 . + uparam(iadb+2)*uparam(iadb+7)
199 . + uparam(iadb+3)*uparam(iadb+8)
200 . + uparam(iadb+4)*uparam(iadb+9)
201 . + uparam(iadb+5)*uparam(iadb+10)
203 a11 = gmax*(one + nu)/(one - nu**2)
204 ssp(i)=
max(ssp(i), sqrt(a11/rho))
207 ELSEIF (mtn == 65)
THEN
210 imt =igeo_stack(ipmat + n,isubstack)
213 ssp(i)=
max(ssp(i), sqrt(young/rho))
219 imt =igeo_stack(ipmat + n,isubstack)
223 ssp(i)=
max(ssp(i), sqrt(young/(one-nu*nu)/rho))
227 ELSEIF (igtyp == 51 .AND. igmat < 0)
THEN
232 imt = igeo_stack(ipmat + n,isubstack)
233 mlawly = nint(pm(19,imt))
234 IF (mlawly <= 28)
THEN
235 ssp(i)=
max(ssp(i),pm(27,imt))
236 ELSEIF (mlawly == 42)
THEN
240 a11 = gmax*(one + nu)/(one - nu**2)
241 ssp(i)=
max(ssp(i), sqrt(a11/rho))
242 ELSEIF (mlawly == 69)
THEN
245 gmax = uparam(iadb+1)*uparam(iadb+6)
246 . + uparam(iadb+2)*uparam(iadb+7)
247 . + uparam(iadb+3)*uparam(iadb+8)
248 . + uparam(iadb+4)*uparam(iadb+9)
249 . + uparam(iadb+5)*uparam(iadb+10)
251 a11 = gmax*(one + nu)/(one - nu**2)
252 ssp(i)=
max(ssp(i), sqrt(a11/rho))
253 ELSEIF (mlawly == 65)
THEN
256 ssp(i)=
max(ssp(i), sqrt(young/rho))
261 ssp(i)=
max(ssp(i), sqrt(young/(one-nu*nu)/rho))
265 ELSEIF (igtyp == 11 .AND. igmat > 0)
THEN
267 ssp(i) = geo(ipgmat +9 ,iprop)
269 ELSEIF (igtyp == 52 .OR.
270 . ((igtyp == 51 .OR. igtyp == 17 ).AND. igmat > 0))
THEN
272 ssp(i) = pm_stack(9 ,isubstack)
278 ELSEIF (mtn == 42)
THEN
283 a11 = gmax*(one + nu)/(one - nu**2)
284 ssp(i)=
max(ssp(i), sqrt(a11/rho))
286 ELSEIF (mtn == 69)
THEN
290 gmax = uparam(iadb+1)*uparam(iadb+6)
291 . + uparam(iadb+2)*uparam(iadb+7)
292 . + uparam(iadb+3)*uparam(iadb+8)
293 . + uparam(iadb+4)*uparam(iadb+9)
294 . + uparam(iadb+5)*uparam(iadb+10)
296 a11 = gmax*(one + nu)/(one - nu**2)
297 ssp(i)=
max(ssp(i), sqrt(a11/rho))
299 ELSEIF (mtn == 65)
THEN
303 ssp(i)=sqrt(young/rho)
310 ssp(i)=sqrt(young/(one-nu*nu)/rho)
315 IF (ihbe == 11) fac11=four_over_3
317 lxyz0(1)=fourth*(x2l(i)+x3l(i)+x4l(i))
318 lxyz0(2)=fourth*(y2l(i)+y3l(i)+y4l(i))
320 corel(1,2)=x2l(i)-lxyz0(1)
321 corel(1,3)=x3l(i)-lxyz0(1)
322 corel(1,4)=x4l(i)-lxyz0(1)
324 corel(2,2)=y2l(i)-lxyz0(2)
325 corel(2,3)=y3l(i)-lxyz0(2)
326 corel(2,4)=y4l(i)-lxyz0(2)
327 x13=(corel(1,1)-corel(1,3))*half
328 x24=(corel(1,2)-corel(1,4))*half
329 y13=(corel(2,1)-corel(2,3))*half
330 y24=(corel(2,2)-corel(2,4))*half
336 c1 =corel(1,2)*corel(2,4)-corel(2,2)*corel(1,4)
337 c2 =corel(1,1)*corel(2,3)-corel(2,1)*corel(1,3)
338 al2(i) =
max(abs(c1),abs(c2))/
area(i)
345 s1=fourth*(
max(c1,c2)/
min(c1,c2)-one)
346 fac1=
min(half,s1)+one
348 fac2=3.413*
max(zero,fac2-0.7071)
349 fac2=0.78+0.22*fac2*fac2*fac2
351 s1 = sqrt(faci*(fac11+al2(i))*al1(i))
358 almin(i)=
area(i)/al1(i)
361 ELSEIF (ihbe == 23)
THEN
363 almin(i)=
area(i)/al1(i)
368 almin(i)=
area(i)/sqrt(fac*al1(i))
375 ELSEIF(mtn == 25.OR.mtn == 27 .OR. mtn == 127 .OR. mtn == 125)
THEN
381 viscmx = group_param%VISC_DM
382 visce = geo(13,iprop)
383 IF (viscmx == zero) viscmx = viscdef
384 IF (mtn == 1 .OR.mtn == 2 .OR. mtn == 3.OR.
385 . mtn == 22.OR.mtn == 23.OR.mtn == 91) viscmx = zero
386 viscmx =
max(viscmx,visce)
387 viscmx = sqrt(one + viscmx*viscmx)-viscmx
390 dtel(i)= almin(i)*viscmx/ssp(i)
398 IF(igtyp == 11 .AND. igmat > 0)
THEN
400 a11 =geo(ipgmat +5 ,iprop)
401 a11r =geo(ipgmat +7 ,iprop)
402 vv = viscmx * almin(i)
404 fac = half*
area(i)*thk(i) / vv
406 stir = one_over_12*fac*a11r*thk(i)**2
407 stifn(ixc(2,i))=stifn(ixc(2,i))+sti
408 stifn(ixc(3,i))=stifn(ixc(3,i))+sti
409 stifn(ixc(4,i))=stifn(ixc(4,i))+sti
410 stifn(ixc(5,i))=stifn(ixc(5,i))+sti
411 stifr(ixc(2,i))=stifr(ixc(2,i))+stir
412 stifr(ixc(3,i))=stifr(ixc(3,i))+stir
413 stifr(ixc(4,i))=stifr(ixc(4,i))+stir
414 stifr(ixc(5,i))=stifr(ixc(5,i))+stir
417 ELSEIF(igtyp == 52 .OR.
418 . ((igtyp == 17 .OR. igtyp == 51) .AND. igmat > 0))
THEN
420 a11 = pm_stack(5 ,isubstack)
421 a11r = pm_stack(7 ,isubstack)
422 vv = viscmx * almin(i)
424 fac = half*
area(i)*thk(i) / vv
426 stir = fac*a11r*(one_over_12*thk(i)**2 + zoffset(i)*zoffset(i))
428 stifn(ixc(2,i))=stifn(ixc(2,i))+sti
429 stifn(ixc(3,i))=stifn(ixc(3,i))+sti
430 stifn(ixc(4,i))=stifn(ixc(4,i))+sti
431 stifn(ixc(5,i))=stifn(ixc(5,i))+sti
432 stifr(ixc(2,i))=stifr(ixc(2,i))+stir
433 stifr(ixc(3,i))=stifr(ixc(3,i))+stir
434 stifr(ixc(4,i))=stifr(ixc(4,i))+stir
435 stifr(ixc(5,i))=stifr(ixc(5,i))+stir
441 vv = viscmx * almin(i)
443 sti = half*thk(i) *
area(i)* a11 / vv
444 stir = sti * thk(i)*thk(i) * one_over_12
445 stifn(ixc(2,i))=stifn(ixc(2,i))+sti
446 stifn(ixc(3,i))=stifn(ixc(3,i))+sti
447 stifn(ixc(4,i))=stifn(ixc(4,i))+sti
448 stifn(ixc(5,i))=stifn(ixc(5,i))+sti
449 stifr(ixc(2,i))=stifr(ixc(2,i))+stir
450 stifr(ixc(3,i))=stifr(ixc(3,i))+stir
451 stifr(ixc(4,i))=stifr(ixc(4,i))+stir
452 stifr(ixc(5,i))=stifr(ixc(5,i))+stir
457 IF(igtyp == 11 .AND. igmat > 0)
THEN
460 IF(sh4tree(3,n) >= 0)
THEN
461 a11 = geo(ipgmat +5 ,iprop)
462 a11r = geo(ipgmat +7 ,iprop)
463 vv = viscmx * almin(i)
465 fac = half*
area(i)*thk(i) / vv
467 stir = one_over_12*fac*a11r*thk(i)**2
468 stifn(ixc(2,i))=stifn(ixc(2,i))+sti
469 stifn(ixc(3,i))=stifn(ixc(3,i))+sti
470 stifn(ixc(4,i))=stifn(ixc(4,i))+sti
471 stifn(ixc(5,i))=stifn(ixc(5,i))+sti
472 stifr(ixc(2,i))=stifr(ixc(2,i))+stir
473 stifr(ixc(3,i))=stifr(ixc(3,i))+stir
474 stifr(ixc(4,i))=stifr(ixc(4,i))+stir
475 stifr(ixc(5,i))=stifr(ixc(5,i))+stir
479 ELSEIF(igtyp == 52 .OR.
480 . ((igtyp == 17.OR. igtyp == 51) .AND. igmat > 0 ))
THEN
483 IF(sh4tree(3,n) >= 0)
THEN
484 a11 = pm_stack(5 ,isubstack)
485 a11r = pm_stack(7 ,isubstack)
486 vv = viscmx * almin(i)
488 fac = half*
area(i)*thk(i) / vv
490 stir = fac*a11r*(one_over_12*thk(i)**2 + zoffset(i)*zoffset(i))
491 stifn(ixc(2,i))=stifn(ixc(2,i))+sti
492 stifn(ixc(3,i))=stifn(ixc(3,i))+sti
493 stifn(ixc(4,i))=stifn(ixc(4,i))+sti
494 stifn(ixc(5,i))=stifn(ixc(5,i))+sti
495 stifr(ixc(2,i))=stifr(ixc(2,i))+stir
496 stifr(ixc(3,i))=stifr(ixc(3,i))+stir
497 stifr(ixc(4,i))=stifr(ixc(4,i))+stir
498 stifr(ixc(5,i))=stifr(ixc(5,i))+stir
505 IF(sh4tree(3,n) >= 0)
THEN
507 vv = viscmx * almin(i)
509 sti = half*thk(i) *
area(i)* a11 / vv
510 stir = sti * thk(i)*thk(i) * one_over_12
511 stifn(ixc(2,i))=stifn(ixc(2,i))+sti
512 stifn(ixc(3,i))=stifn(ixc(3,i))+sti
513 stifn(ixc(4,i))=stifn(ixc(4,i))+sti
514 stifn(ixc(5,i))=stifn(ixc(5,i))+sti
515 stifr(ixc(2,i))=stifr(ixc(2,i))+stir
516 stifr(ixc(3,i))=stifr(ixc(3,i))+stir
517 stifr(ixc(4,i))=stifr(ixc(4,i))+stir
518 stifr(ixc(5,i))=stifr(ixc(5,i))+stir
525 IF (ismstr == 3)
THEN
526 IF (geo(5,iprop) /=zero) geo(5,iprop)=
min(geo(5,iprop),
dtel(i))