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)
42#include "implicit_f.inc"
51#include "remesh_c.inc"
52#include "vect01_c.inc"
57 INTEGER IXC(NIXC,*),IGEO(NPROPGI,*),IHBE, SH4TREE(KSH4TREE,*),
58 . IPM(NPROPMI,*),NLAY,ISUBSTACK,(4*NPT_STACK+2,*)
61 . pm(npropm,*), geo(npropg,*),stifn(*),stifr(*),thk(*),aldt(*),
62 . uparam(*),pm_stack(20,*),strc(*),
dtel(mvsiz),
63 . x2l(mvsiz),x3l(mvsiz),x4l(mvsiz),y2l(mvsiz),y3l(mvsiz),y4l(mvsiz)
64 TYPE(group_param_) :: GROUP_PARAM
68 INTEGER I,N, IMT, IPMAT, IGTYP,IADB,
69 . i1,i3,ipthk,ippos,i2,matly
71 .
area(mvsiz),ssp(mvsiz), al1(mvsiz),
73 . almin(mvsiz),lxyz0(2),corel(2,4)
75 . viscmx,a11,a11r,a12,b1,b2,vv,sti,stir,viscdef,rho,young,nu,
76 . x13,x24,y13,y24,l13,l24,c1,c2,thkly,posly,
77 . fac,visce,rx,ry,sx,sy,s1,fac1,fac2,faci,fac11,gmax,z0
78 my_real,
DIMENSION(MVSIZ) :: zoffset
82 igtyp = nint(geo(12,iprop))
83 igmat = igeo(98,iprop)
88 zoffset(lft:llt) = zero
98 zoffset(i) = z0 - half*thk(i)
100 ELSEIF (ipos== 3 .OR. ipos == 4)
THEN
107 zoffset(lft:llt) = zero
111 IF ((igtyp == 11 .AND. igmat < 0) .OR. igtyp == 16 )
THEN
117 imt = igeo(ipmat+n,iprop)
118 ssp(i)=
max(ssp(i),pm(27,imt))
121 ELSEIF (mtn == 42)
THEN
124 imt = igeo(ipmat+n,iprop)
128 a11 = gmax*(one + nu)/(one - nu**2)
129 ssp(i)=
max(ssp(i), sqrt(a11/rho))
132 ELSEIF (mtn == 69)
THEN
135 imt = igeo(ipmat+n,iprop)
138 gmax = uparam(iadb+1)*uparam(iadb+6)
139 . + uparam(iadb+2)*uparam(iadb+7)
141 . + uparam(iadb+4)*uparam(iadb+9)
142 . + uparam(iadb+5)*uparam(iadb+10)
144 a11 = gmax*(one + nu)/(one - nu**2)
145 ssp(i)=
max(ssp(i), sqrt(a11/rho))
148 ELSEIF (mtn == 65)
THEN
151 imt =igeo(ipmat+n,iprop)
154 ssp(i)=
max(ssp(i), sqrt(young/rho))
160 imt =igeo(ipmat+n,iprop)
164 ssp(i)=
max(ssp(i), sqrt(young/(one-nu*nu)/rho))
169 ELSEIF (igtyp == 17 .AND. igmat < 0)
THEN
175 imt = igeo_stack(ipmat + n,isubstack)
176 ssp(i)=
max(ssp(i),pm(27,imt))
179 ELSEIF (mtn == 42)
THEN
182 imt = igeo_stack(ipmat + n,isubstack)
186 a11 = gmax*(one + nu)/(one - nu**2)
187 ssp(i)=
max(ssp(i), sqrt(a11/rho))
190 ELSEIF (mtn == 69)
THEN
193 imt = igeo_stack(ipmat + n,isubstack)
196 gmax = uparam(iadb+1)*uparam(iadb+6)
197 . + uparam(iadb+2)*uparam(iadb+7)
198 . + uparam(iadb+3)*uparam(iadb+8)
199 . + uparam(iadb+4)*uparam(iadb+9)
200 . + uparam(iadb+5)*uparam(iadb+10)
202 a11 = gmax*(one + nu)/(one - nu**2)
203 ssp(i)=
max(ssp(i), sqrt(a11/rho))
206 ELSEIF (mtn == 65)
THEN
209 imt =igeo_stack(ipmat + n,isubstack)
212 ssp(i)=
max(ssp(i), sqrt(young/rho))
218 imt =igeo_stack(ipmat + n,isubstack)
222 ssp(i)=
max(ssp(i), sqrt(young/(one-nu*nu)/rho))
226 ELSEIF (igtyp == 51 .AND. igmat < 0)
THEN
231 imt = igeo_stack(ipmat + n,isubstack)
232 mlawly = nint(pm(19,imt))
233 IF (mlawly <= 28)
THEN
234 ssp(i)=
max(ssp(i),pm(27,imt))
235 ELSEIF (mlawly == 42)
THEN
239 a11 = gmax*(one + nu)/(one - nu**2)
240 ssp(i)=
max(ssp(i), sqrt(a11/rho))
241 ELSEIF (mlawly == 69)
THEN
244 gmax = uparam(iadb+1)*uparam(iadb+6)
245 . + uparam(iadb+2)*uparam(iadb+7)
246 . + uparam(iadb+3)*uparam(iadb+8)
247 . + uparam(iadb+4)*uparam(iadb+9)
248 . + uparam(iadb+5)*uparam(iadb+10)
250 a11 = gmax*(one + nu)/(one - nu**2)
251 ssp(i)=
max(ssp(i), sqrt(a11/rho))
252 ELSEIF (mlawly == 65)
THEN
255 ssp(i)=
max(ssp(i), sqrt(young/rho))
260 ssp(i)=
max(ssp(i), sqrt(young/(one-nu*nu
264 ELSEIF (igtyp == 11 .AND. igmat > 0)
THEN
266 ssp(i) = geo(ipgmat +9 ,iprop)
268 ELSEIF (igtyp == 52 .OR.
269 . ((igtyp == 51 .OR. igtyp == 17 ).AND. igmat > 0))
THEN
271 ssp(i) = pm_stack(9 ,isubstack)
277 ELSEIF (mtn == 42)
THEN
282 a11 = gmax*(one + nu)/(one - nu**2)
283 ssp(i)=
max(ssp(i), sqrt(a11/rho))
285 ELSEIF (mtn == 69)
THEN
289 gmax = uparam(iadb+1)*uparam(iadb+6)
290 . + uparam(iadb+2)*uparam(iadb+7)
291 . + uparam(iadb+3)*uparam(iadb+8)
292 . + uparam(iadb+4)*uparam(iadb+9)
293 . + uparam(iadb+5)*uparam(iadb+10)
295 a11 = gmax*(one + nu)/(one - nu**2)
296 ssp(i)=
max(ssp(i), sqrt(a11/rho))
298 ELSEIF (mtn == 65)
THEN
302 ssp(i)=sqrt(young/rho)
309 ssp(i)=sqrt(young/(one-nu*nu)/rho)
314 IF (ihbe == 11) fac11=four_over_3
316 lxyz0(1)=fourth*(x2l(i)+x3l(i)+x4l(i))
317 lxyz0(2)=fourth*(y2l(i)+y3l(i)+y4l(i))
319 corel(1,2)=x2l(i)-lxyz0(1)
320 corel(1,3)=x3l(i)-lxyz0(1)
321 corel(1,4)=x4l(i)-lxyz0(1)
323 corel(2,2)=y2l(i)-lxyz0(2)
324 corel(2,3)=y3l(i)-lxyz0(2)
325 corel(2,4)=y4l(i)-lxyz0(2)
326 x13=(corel(1,1)-corel(1,3))*half
327 x24=(corel(1,2)-corel(1,4))*half
328 y13=(corel(2,1)-corel(2,3))*half
329 y24=(corel(2,2)-corel(2,4))*half
335 c1 =corel(1,2)*corel(2,4)-corel(2,2)*corel(1,4)
336 c2 =corel(1,1)*corel(2,3)-corel(2,1)*corel(1,3)
337 al2(i) =
max(abs(c1),abs(c2))/
area(i)
344 s1=fourth*(
max(c1,c2)/
min(c1,c2)-one)
345 fac1=
min(half,s1)+one
347 fac2=3.413*
max(zero,fac2-0.7071)
348 fac2=0.78+0.22*fac2*fac2*fac2
350 s1 = sqrt(faci*(fac11+al2(i))*al1(i))
357 almin(i)=
area(i)/al1(i)
360 ELSEIF (ihbe == 23)
THEN
362 almin(i)=
area(i)/al1(i)
367 almin(i)=
area(i)/sqrt(fac*al1(i))
374 ELSEIF(mtn == 25.OR.mtn == 27)
THEN
380 viscmx = group_param%VISC_DM
381 visce = geo(13,iprop)
382 IF (viscmx == zero) viscmx = viscdef
383 IF (mtn == 1 .OR.mtn == 2 .OR. mtn == 3.OR.
384 . mtn == 22.OR.mtn == 23.OR.mtn == 91) viscmx = zero
385 viscmx =
max(viscmx,visce)
386 viscmx = sqrt(one + viscmx*viscmx)-viscmx
389 dtel(i)= almin(i)*viscmx/ssp(i)
397 IF(igtyp == 11 .AND. igmat > 0)
THEN
399 a11 =geo(ipgmat +5 ,iprop)
400 a11r =geo(ipgmat +7 ,iprop)
401 vv = viscmx * almin(i)
403 fac = half*
area(i)*thk(i) / vv
405 stir = one_over_12*fac*a11r*thk(i)**2
406 stifn(ixc(2,i))=stifn(ixc(2,i))+sti
407 stifn(ixc(3,i))=stifn(ixc(3,i))+sti
408 stifn(ixc(4,i))=stifn(ixc(4,i))+sti
409 stifn(ixc(5,i))=stifn(ixc(5,i))+sti
410 stifr(ixc(2,i))=stifr(ixc(2,i))+stir
411 stifr(ixc(3,i))=stifr(ixc(3,i))+stir
412 stifr(ixc(4,i))=stifr(ixc(4,i))+stir
413 stifr(ixc(5,i))=stifr(ixc(5,i))+stir
416 ELSEIF(igtyp == 52 .OR.
417 . ((igtyp == 17 .OR. igtyp == 51) .AND. igmat > 0))
THEN
419 a11 = pm_stack(5 ,isubstack)
420 a11r = pm_stack(7 ,isubstack)
421 vv = viscmx * almin(i)
423 fac = half*
area(i)*thk(i) / vv
425 stir = fac*a11r*(one_over_12*thk(i)**2 + zoffset(i)*zoffset(i))
427 stifn(ixc(2,i))=stifn(ixc(2,i))+sti
428 stifn(ixc(3,i))=stifn(ixc(3,i))+sti
429 stifn(ixc(4,i))=stifn(ixc(4,i))+sti
430 stifn(ixc(5,i))=stifn(ixc(5,i))+sti
431 stifr(ixc(2,i))=stifr(ixc(2,i))+stir
432 stifr(ixc(3,i))=stifr(ixc(3,i))+stir
433 stifr(ixc(4,i))=stifr(ixc(4,i))+stir
434 stifr(ixc(5,i))=stifr(ixc(5,i))+stir
440 vv = viscmx * almin(i)
442 sti = half*thk(i) *
area(i)* a11 / vv
443 stir = sti * thk(i)*thk(i) * one_over_12
444 stifn(ixc(2,i))=stifn(ixc(2,i))+sti
445 stifn(ixc(3,i))=stifn(ixc(3,i))+sti
446 stifn(ixc(4,i))=stifn(ixc(4,i))+sti
447 stifn(ixc(5,i))=stifn(ixc(5,i))+sti
448 stifr(ixc(2,i))=stifr(ixc(2,i))+stir
449 stifr(ixc(3,i))=stifr(ixc(3,i))+stir
450 stifr(ixc(4,i))=stifr(ixc(4,i))+stir
451 stifr(ixc(5,i))=stifr(ixc(5,i))+stir
456 IF(igtyp == 11 .AND. igmat > 0)
THEN
459 IF(sh4tree(3,n) >= 0)
THEN
460 a11 = geo(ipgmat +5 ,iprop)
461 a11r = geo(ipgmat +7 ,iprop)
462 vv = viscmx * almin(i)
464 fac = half*
area(i)*thk(i) / vv
466 stir = one_over_12*fac*a11r*thk(i)**2
467 stifn(ixc(2,i))=stifn(ixc(2,i))+sti
468 stifn(ixc(3,i))=stifn(ixc(3,i))+sti
469 stifn(ixc(4,i))=stifn(ixc(4,i))+sti
470 stifn(ixc(5,i))=stifn(ixc(5,i))+sti
471 stifr(ixc(2,i))=stifr(ixc(2,i))+stir
472 stifr(ixc(3,i))=stifr(ixc(3,i))+stir
473 stifr(ixc(4,i))=stifr(ixc(4,i))+stir
474 stifr(ixc(5,i))=stifr(ixc(5,i))+stir
478 ELSEIF(igtyp == 52 .OR.
479 . ((igtyp == 17.OR. igtyp == 51) .AND. igmat > 0 ))
THEN
482 IF(sh4tree(3,n) >= 0)
THEN
483 a11 = pm_stack(5 ,isubstack)
484 a11r = pm_stack(7 ,isubstack)
485 vv = viscmx * almin(i)
487 fac = half*
area(i)*thk(i) / vv
489 stir = fac*a11r*(one_over_12*thk(i)**2 + zoffset(i)*zoffset(i))
490 stifn(ixc(2,i))=stifn(ixc(2,i))+sti
491 stifn(ixc(3,i))=stifn(ixc(3,i))+sti
492 stifn(ixc(4,i))=stifn(ixc(4,i))+sti
493 stifn(ixc(5,i))=stifn(ixc(5,i))+sti
494 stifr(ixc(2,i))=stifr(ixc(2,i))+stir
495 stifr(ixc(3,i))=stifr(ixc(3,i))+stir
496 stifr(ixc(4,i))=stifr(ixc(4,i))+stir
497 stifr(ixc(5,i))=stifr(ixc(5,i))+stir
504 IF(sh4tree(3,n) >= 0)
THEN
506 vv = viscmx * almin(i)
508 sti = half*thk(i) *
area(i)* a11 / vv
509 stir = sti * thk(i)*thk(i) * one_over_12
510 stifn(ixc(2,i))=stifn(ixc(2,i
511 stifn(ixc(3,i))=stifn(ixc(3,i))+sti
512 stifn(ixc(4,i))=stifn(ixc(4,i))+sti
513 stifn(ixc(5,i))=stifn(ixc(5,i))+sti
514 stifr(ixc(2,i))=stifr(ixc(2,i))+stir
515 stifr(ixc(3,i))=stifr(ixc(3,i))+stir
516 stifr(ixc(4,i))=stifr(ixc(4,i))+stir
517 stifr(ixc(5,i))=stifr(ixc(5,i))+stir
524 IF (ismstr == 3)
THEN
525 IF (geo(5,iprop) /=zero) geo(5,iprop)=
min(geo(5,iprop),
dtel(i))