48 1 JFT ,JLT ,PM ,FOR ,MOM ,THK ,
49 2 EINT ,OFF ,GSTR ,DIR ,SHF ,
50 3 MAT ,AREA ,EXX ,EYY ,EXY ,NEL ,
51 4 EXZ ,EYZ ,KXX ,KYY ,KXY ,DM ,
52 5 PID ,TF ,NPF ,MTN ,DT1C ,A1 ,
53 6 BUFMAT ,SSP ,RHO ,VISCMX,IOFC ,A2 ,
54 7 INDX ,NGL ,ZCFAC ,GS ,SIGY ,G ,
55 8 THK0 ,epsd_glob,IPLA ,IGEO ,IPM ,TABLE ,
56 9 IR ,IS ,F_DEF ,ISMSTR,NU ,VOL0 ,
57 A KFTS ,ZSHIFT ,idamp_freq_range,mat_elem,damp_buf,
63 use damping_range_shell_mod
64 use damping_range_shell_mom_mod
68#include "implicit_f.inc"
85 INTEGER JFT, JLT, MTN, IOFC, IPLA,NEL,IR,IS,ISMSTR,KFTS
86 INTEGER MAT(*), PID(*), NPF(*),NGL(*), INDX(*),IPM(NPROPMI,*)
87 integer,
intent(in) :: idamp_freq_range
89 my_real FOR(NEL,5), MOM(NEL,3), THK(*), EINT(JLT,2),PM(NPROPM,*),
90 . OFF(*), GSTR(NEL,8), DIR(*),VISCMX(*),
91 . AREA(*),TF(*),DT1C(*),
92 . EXX(*), EYY(*), EXY(*), EXZ(*), EYZ(*),
93 . KXX(*), KYY(*), KXY(*),BUFMAT(*),SSP(*),RHO(*),
94 . ZCFAC(MVSIZ,2),GS(*),SIGY(*),THK0(*),SHF(*),F_DEF(MVSIZ,8),
95 . A1(MVSIZ),A2(MVSIZ),G(MVSIZ),NU(MVSIZ),VOL0(*)
96 my_real,
INTENT(IN) :: zshift
97 my_real,
intent(in),
dimension(mvsiz) :: epsd_glob
98 my_real,
DIMENSION(NEL,5),
INTENT(INOUT) :: for_g
100 TYPE(elbuf_struct_),
TARGET :: ELBUF_STR
101 type (mat_elem_) ,
intent(in) ,
target :: mat_elem
102 type (buf_damp_range_) ,
intent(in) :: damp_buf
106 INTEGER IGTYP, I, NUVAR,NINDX,IGEO(NPROPGI,*),NVARTMP,
107 . mx,ioff_duct(mvsiz),israte,nuvarv,nvar_damp,imat,
110 . degmb(mvsiz) ,degfx(mvsiz) ,thkn(mvsiz),
111 . depsxx(mvsiz),depsyy(mvsiz),depsxy(mvsiz),depsyz(mvsiz),
112 . depszx(mvsiz),epsxx(mvsiz) ,epsyy(mvsiz) ,epsxy(mvsiz),
113 . epsyz(mvsiz) ,epszx(mvsiz) ,epspxx(mvsiz),epspyy(mvsiz),
114 . epspxy(mvsiz),epspyz(mvsiz),epspzx(mvsiz),sigoxx(mvsiz),
115 . sigoyy(mvsiz),sigoxy(mvsiz),sigoyz(mvsiz),sigozx(mvsiz),
116 . signxx(mvsiz),signyy(mvsiz),signxy(mvsiz),signyz(mvsiz),
117 . signzx(mvsiz),sigvxx(mvsiz),sigvyy(mvsiz),sigvxy(mvsiz),
118 . sigvyz(mvsiz),sigvzx(mvsiz),tens(5,mvsiz),
121 . depbxx(mvsiz),depbyy(mvsiz),depbxy(mvsiz),
122 . momoxx(mvsiz),momoyy(mvsiz),momoxy(mvsiz),
123 . momnxx(mvsiz),momnyy(mvsiz),momnxy(mvsiz),
124 . etse(mvsiz) ,epspl(mvsiz),epsp_loc(mvsiz)
125 my_real,
DIMENSION(:) ,
POINTER :: uvar
126 my_real,
DIMENSION(:) ,
POINTER :: uvarv
127 my_real,
DIMENSION(NEL) :: off_old
129 INTEGER,
DIMENSION(:),
POINTER :: VARTMP
130 TYPE(L_BUFEL_) ,
POINTER :: LBUF
131 type(matparam_struct_) ,
pointer :: matparam
136 lbuf => elbuf_str%BUFLY(1)%LBUF(ir,is,1)
138 imat = elbuf_str%BUFLY(1)%IMAT
140 igtyp = igeo(11,pid(1))
141 imat = elbuf_str%BUFLY(1)%IMAT
142 IF (mtn==43.OR.mtn==56.OR.mtn==60.OR.mtn==86)
THEN
143 nuvar = elbuf_str%BUFLY(1)%NVAR_MAT
144 uvar =>elbuf_str%BUFLY(1)%MAT(ir,is,1)%VAR
147 nvartmp= elbuf_str%BUFLY(1)%NVARTMP
148 vartmp=>elbuf_str%BUFLY(1)%MAT(ir,is,1)%VARTMP
150 ioff_duct(1:mvsiz) = 0
151 viscmx(1:mvsiz) = zero
154 degmb(i) = for(i,1)*exx(i)+for(i,2)*eyy(i)+for(i,3)*exy(i)
155 + + for(i,4)*eyz(i)+for(i,5)*exz(i)
156 degfx(i) = mom(i,1)*kxx(i)+mom(i,2)*kyy(i)+mom(i,3)*kxy(i)
163 off_old(1:nel) = off(1:nel)
164 for(jft:jlt,1:5) = for_g(jft:jlt,1:5)
166 dtinv = dt1 /
max(dt1**2,em20)
174 asrate =
min(one, pm(9,imat)*dt1)
178 if (elbuf_str%bufly(1)%l_epsd > 0)
then
179 epspl(1:nel) = asrate*epsd_glob(1:nel) + (one-asrate)*lbuf%epsd(1:nel)
234 tens(3,i) = half*exy(i)
235 tens(4,i) = half*eyz(i)
236 tens(5,i) = half*exz(i)
238 CALL roto(jft,jlt,tens,dir,nel)
240 depsxx(i) = tens(1,i)
241 depsyy(i) = tens(2,i)
242 depsxy(i) = two*tens(3,i)
243 depsyz(i) = two*tens(4,i)
244 depszx(i) = two*tens(5,i)
247 tens(1,i) = gstr(i,1)
248 tens(2,i) = gstr(i,2)
250 tens(4,i) = half*gstr(i,4)
251 tens(5,i) = half*gstr(i,5)
253 CALL roto(jft,jlt,tens,dir,nel)
257 epsxy(i) = two*tens(3,i)
258 epsyz(i) = two*tens(4,i)
259 epszx(i) = two*tens(5,i)
268 CALL roto(jft,jlt,tens,dir,nel)
270 sigoxx(i) = tens(1,i)
271 sigoyy(i) = tens(2,i)
272 sigoxy(i) = tens(3,i)
273 sigoyz(i) = tens(4,i)
274 sigozx(i) = tens(5,i)
283 CALL roto(jft,jlt,tens,dir,nel)
285 depbxx(i) = tens(1,i)
286 depbyy(i) = tens(2,i)
287 depbxy(i) = tens(3,i)
296 CALL roto(jft,jlt,tens,dir,nel)
298 momoxx(i) = tens(1,i)
299 momoyy(i) = tens(2,i)
300 momoxy(i) = tens(3,i)
305 epspxx(i) = depsxx(i)*dtinv
306 epspyy(i) = depsyy(i)*dtinv
307 epspxy(i) = depsxy(i)*dtinv
308 epspyz(i) = depsyz(i)*dtinv
309 epspzx(i) = depszx(i)*dtinv
317 1 gs ,a1 ,a2 ,nu ,thk0 ,
318 2 nel ,f_def ,ismstr ,depsxx ,depsyy ,
319 3 depsxy ,depsyz ,depszx ,depbxx ,depbyy ,
320 4 depbxy ,sigoxx ,sigoyy ,sigoxy ,sigoyz ,
321 5 sigozx ,momoxx ,momoyy ,momoxy ,signxx ,
322 6 signyy ,signxy ,signyz ,signzx ,momnxx ,
323 7 momnyy ,momnxy ,zshift )
324 ELSEIF (mtn == 2)
THEN
325 CALL sigeps02g(elbuf_str,mat_elem%mat_param(imat),
326 1 jft ,jlt ,for ,mom ,
327 2 thkn ,eint ,off ,dt1c ,israte ,
328 3 g ,a1 ,a2 ,vol0 ,nu ,
329 4 thk0 ,gs ,epspl ,iofc ,kfts ,
330 5 ngl ,indx ,ipla ,ir ,is ,
331 6 degmb ,degfx ,depsxx ,depsyy ,mx ,
332 7 depsxy ,depsyz ,depszx ,depbxx ,depbyy ,
333 8 depbxy ,sigoxx ,sigoyy ,sigoxy ,sigoyz ,
334 9 sigozx ,momoxx ,momoyy ,momoxy ,signxx ,
335 a signyy ,signxy ,signyz ,signzx ,momnxx ,
336 b momnyy ,momnxy ,etse ,exz ,eyz ,
337 c nel ,ioff_duct,nuvar ,uvar )
338 ELSEIF (mtn == 22)
THEN
340 1 jft ,jlt ,pm ,for ,mom ,
341 2 thkn ,off ,dt1c ,nu ,thk0 ,
342 3 gs ,epspl ,iofc ,indx ,nel ,
343 4 ngl ,exz ,eyz ,mx ,ioff_duct,
344 5 degmb ,degfx ,depsxx ,depsyy ,depsxy ,
345 6 depsyz ,depszx ,depbxx ,depbyy ,depbxy ,
346 7 sigoxx ,sigoyy ,sigoxy ,sigoyz ,sigozx ,
347 8 momoxx ,momoyy ,momoxy ,signxx ,signyy ,
348 9 signxy ,signyz ,signzx ,momnxx ,momnyy ,
350 ELSEIF (mtn == 36)
THEN
353 2 tf ,tt ,bufmat ,rho ,
355 4 epspxx ,epspyy ,epspxy ,epspyz ,epspzx ,
356 5 depsxx ,depsyy ,depsxy ,depsyz ,depszx ,
357 5 depbxx ,depbyy ,depbxy ,
358 6 epsxx ,epsyy ,epsxy ,epsyz ,epszx ,
359 7 sigoxx ,sigoyy ,sigoxy ,sigoyz ,sigozx ,
360 7 momoxx ,momoyy ,momoxy ,
361 8 signxx ,signyy ,signxy ,signyz ,signzx ,
362 8 momnxx ,momnyy ,momnxy ,
363 9 sigvxx ,sigvyy ,sigvxy ,sigvyz ,sigvzx ,
364 a ssp ,viscmx ,thkn ,lbuf%PLA ,
365 b off ,ngl ,ipm ,mat ,etse ,
366 c gs ,sigy ,epspl ,israte ,ipla,
367 d shf ,nvartmp,vartmp)
368 ELSEIF (mtn == 43)
THEN
371 2 tf ,tt ,bufmat ,rho ,
373 4 epspxx ,epspyy ,epspxy ,epspyz ,epspzx ,
374 5 depsxx ,depsyy ,depsxy ,depsyz ,depszx ,
375 5 depbxx ,depbyy ,depbxy ,
376 6 epsxx ,epsyy ,epsxy ,epsyz ,epszx ,
377 7 sigoxx ,sigoyy ,sigoxy ,sigoyz ,sigozx ,
378 7 momoxx ,momoyy ,momoxy ,
379 8 signxx ,signyy ,signxy ,signyz ,signzx ,
380 8 momnxx ,momnyy ,momnxy ,
381 9 sigvxx ,sigvyy ,sigvxy ,sigvyz ,sigvzx ,
382 a ssp ,viscmx ,thkn ,lbuf%PLA,uvar ,
383 b off ,ngl ,ipm ,mat ,etse ,
384 c gs ,sigy ,shf ,lbuf%SEQ,epspl )
385 ELSEIF (mtn == 56)
THEN
388 2 tf ,tt ,bufmat ,rho ,
390 4 epspxx ,epspyy ,epspxy ,epspyz ,epspzx ,
391 5 depsxx ,depsyy ,depsxy ,depsyz ,depszx ,
392 5 depbxx ,depbyy ,depbxy ,
393 6 epsxx ,epsyy ,epsxy ,epsyz ,epszx ,
394 7 sigoxx ,sigoyy ,sigoxy ,sigoyz ,sigozx ,
395 7 momoxx ,momoyy ,momoxy ,
396 8 signxx ,signyy ,signxy ,signyz ,signzx ,
397 8 momnxx ,momnyy ,momnxy ,
398 9 sigvxx ,sigvyy ,sigvxy ,sigvyz ,sigvzx ,
399 a ssp ,viscmx ,thkn ,lbuf%PLA,uvar ,
400 b off ,ngl ,ipm ,mat ,etse ,
401 c gs ,sigy ,epspl ,israte ,ipla)
402 ELSEIF (mtn == 60)
THEN
405 2 tf ,tt ,bufmat ,rho ,
407 4 epspxx ,epspyy ,epspxy ,epspyz ,epspzx ,
408 5 depsxx ,depsyy ,depsxy ,depsyz ,depszx ,
409 5 depbxx ,depbyy ,depbxy ,
410 6 epsxx ,epsyy ,epsxy ,epsyz ,epszx ,
411 7 sigoxx ,sigoyy ,sigoxy ,sigoyz ,sigozx ,
412 7 momoxx ,momoyy ,momoxy ,
413 8 signxx ,signyy ,signxy ,signyz ,signzx ,
414 8 momnxx ,momnyy ,momnxy ,
415 9 sigvxx ,sigvyy ,sigvxy ,sigvyz ,sigvzx ,
416 a ssp ,viscmx ,thkn ,lbuf%PLA,uvar ,
417 b off ,ngl ,ipm ,mat ,etse ,
418 c gs ,sigy ,epspl ,israte ,ipla ,
420 ELSEIF (mtn == 86)
THEN
423 2 tf ,tt ,bufmat ,rho ,
425 4 epspxx ,epspyy ,epspxy ,epspyz ,epspzx ,
426 5 depsxx ,depsyy ,depsxy ,depsyz ,depszx ,
427 5 depbxx ,depbyy ,depbxy ,
428 6 epsxx ,epsyy ,epsxy ,epsyz ,epszx ,
429 7 sigoxx ,sigoyy ,sigoxy ,sigoyz ,sigozx ,
430 7 momoxx ,momoyy ,momoxy ,
431 8 signxx ,signyy ,signxy ,signyz ,signzx ,
432 8 momnxx ,momnyy ,momnxy ,
433 9 sigvxx ,sigvyy ,sigvxy ,sigvyz ,sigvzx ,
434 a ssp ,viscmx ,thkn ,lbuf%PLA,uvar ,
435 b off ,ngl ,ipm ,mat ,etse ,
436 c gs ,sigy ,epspl ,israte ,ipla)
441 if (idamp_freq_range > 0)
then
442 nuvarv = elbuf_str%BUFLY(1)%NVAR_VISC
443 uvarv => elbuf_str%BUFLY(1)%VISC(ir,is,1)%VAR
446 call damping_range_shell(damp_buf,nel ,nuvarv ,nvar_damp,dt1 ,
447 . rho ,ssp ,mat_elem%mat_param(imat)%young,mat_elem%mat_param(imat)%shear,
448 . epspxx ,epspyy ,epspxy ,epspyz
449 . sigvxx ,sigvyy ,sigvxy ,sigvyz ,sigvzx ,
450 . uvarv ,off ,etse ,flag_incr)
452 call damping_range_shell_mom(damp_buf,nel ,nuvarv ,dt1 ,dtinv ,
453 . mat_elem%mat_param(imat)%young,mat_elem%mat_param(imat)%shear,depbxx ,depbyy ,depbxy
454 . momnxx ,momnyy ,momnxy ,thk0 ,uvarv ,
468 CALL uroto(jft,jlt,tens,dir,nel)
483 CALL uroto(jft,jlt,tens,dir,nel)
498 CALL uroto(jft,jlt,tens,dir,nel)
509 for_g(i,1) = signxx(i)+sigvxx(i)
510 for_g(i,2) = signyy(i)+sigvyy(i)
511 for_g(i,3) = signxy(i)+sigvxy(i)
512 for_g(i,4) = signyz(i)+sigvyz(i)
513 for_g(i,5) = signzx(i)+sigvzx(i)
518 for(jft:jlt,1:5) = for_g(jft:jlt,1:5)
523 thk(i) =
max(thkn(i),em30)
530 zcfac(i,2) = zcfac(i,1)
537 viscmx(i) =
max(viscmx(i),dm)
538 visc = onep414*dm*rho(i)*ssp(i)*sqrt(area(i))*dtinv
539 for(i,1) = for(i,1) + visc*(exx(i)+half*eyy(i))
540 for(i,2) = for(i,2) + visc*(eyy(i)+half*exx(i))
541 for(i,3) = for(i,3) + visc* exy(i)*third
546 for(i,1)=for(i,1)*off(i)
547 for(i,2)=for(i,2)*off(i)
548 for(i,3)=for(i,3)*off(i)
549 for(i,4)=for(i,4)*off(i)
550 for(i,5)=for(i,5)*off(i)
551 mom(i,1)=mom(i,1)*off(i)
552 mom(i,2)=mom(i,2)*off(i)
553 mom(i,3)=mom(i,3)*off(i)
557 degmb(i) = degmb(i)+ for(i,1)*exx(i)+for(i,2)*eyy(i)
558 . + for(i,3)*exy(i)+for(i,4)*eyz(i)+for(i,5)*exz(i)
559 degfx(i) = degfx(i)+mom(i,1)*kxx(i)+mom(i,2)*kyy(i)
561 vol2 = half*thk0(i)*area(i)*off(i)
562 eint(i,1) = eint(i,1) + degmb(i)*vol2
563 eint(i,2) = eint(i,2) + degfx(i)*thk0(i)*vol2
571 IF (off(i) == four_over_5 . and. ioff_duct(i) == 0)
THEN
581 IF ((off_old(i) > zero) .AND. (off(i) == zero))
THEN
587 IF (imconv == 1)
THEN
590 WRITE(iout, 1000) ngl(indx(i))
591 WRITE(istdo,1100) ngl(indx(i)),tt
592#include "lockoff.inc"
598 1000
FORMAT(1x,
'-- RUPTURE OF SHELL ELEMENT NUMBER ',i10)
599 1100
FORMAT(1x,
'-- RUPTURE OF SHELL ELEMENT :',i10,
' AT TIME :',g11.4)