62 1 ELBUF_TAB, NG, LFT, LLT,
67 6 TF, NPF, BUFMAT, IPARG,
68 7 IPARTS, PARTSAV, NLOC_DMG, FSKY,
69 8 FR_WAVE, IADS, EANI, STIFN,
71 A IFAILURE, MTN, IGTYP, NPT,
72 B JSMS, MSSA, DMELS, KXIG3D,
73 C IXIG3D, KNOT, NCTRL, WIGE,
74 D FLUX, FLU1, DT2T, NELTST,
75 E ITYPTST, OFFSET, TABLE, IEXPAN,
76 F ALE_CONNECT, FV, ITASK, IOUTPRT,
77 G PX, PY, PZ, KNOTLOCPC,
78 H KNOTLOCEL, GRESAV, GRTH, IGRTH,
79 I MAT_ELEM, H3D_STRAIN, ISMSTR, JALE,
80 J JEUL, JLAG, JCVT, JPLASOL,
81 K JSPH, SNPC, STF, SBUFMAT,
82 L SVIS, NSVOIS, IDTMINS, IRESP,
83 . IDEL7NG, IDEL7NOK, USERL_AVAIL,
84 . impl_s, idyna, DT , GLOB_THERM,
89 USE output_mod,
only : output_
101 use element_mod ,
only : nixs
105#include "implicit_f.inc"
106#include "comlock.inc"
110#include "mvsiz_p.inc"
114#include "com01_c.inc"
115#include "com04_c.inc"
116#include "com08_c.inc"
117#include "scr19_c.inc"
118#include "param_c.inc"
119#include "timeri_c.inc"
120#include "scr18_c.inc"
121#include "ige3d_c.inc"
125 TYPE(timer_) ,
INTENT(INOUT) :: TIMERS
126 TYPE(OUTPUT_),
INTENT(INOUT) :: OUTPUT
127 INTEGER,
INTENT(INOUT) :: JPLASOL
128 INTEGER,
INTENT(INOUT) :: JSPH
129 INTEGER,
INTENT(IN) :: JCVT
130 INTEGER,
INTENT(IN) :: ISMSTR
131 INTEGER,
INTENT(IN) :: JALE
132 INTEGER,
INTENT(IN) :: JEUL
133 INTEGER,
INTENT(IN) :: JLAG
134 INTEGER,
INTENT(IN) :: SNPC
135 INTEGER,
INTENT(IN) :: STF
136 INTEGER,
INTENT(IN) :: SBUFMAT
137 INTEGER,
INTENT(IN) :: IDTMINS
138 INTEGER,
INTENT(IN) :: NSVOIS
139 INTEGER,
INTENT(IN) :: IRESP
140 INTEGER ,
INTENT(IN) :: IDEL7NG
141 INTEGER ,
INTENT(INOUT) :: IDEL7NOK
142 INTEGER,
INTENT(IN) :: IMPL_S
143 INTEGER,
INTENT(IN) :: IDYNA
144 INTEGER,
INTENT(IN) :: USERL_AVAIL
146 INTEGER LFT,LLT,NEL,NFT,MTN,IGTYP,IFAILURE,NPT,JSMS,
147 . NCTRL,NG,NELTST,ITYPTST,OFFSET,IEXPAN,ITASK,H3D_STRAIN
148 INTEGER IXS(NIXS,*), IPARG(NPARG,*), NPF(*),IADS(8,*),
149 . iparts(*), igeo(npropgi,*), ipm(npropmi,*),
150 . kxig3d(nixig3d,*),ixig3d(*),flux(6,*),flu1(*),
151 . ioutprt,px,py,pz,grth(*),igrth(*)
153 . pm(npropm,*), geo(npropg,*),x(3,*),a(3,*),v(3,*),ms(*),w(*),
154 . ar(3,*), vr(3,*), in(3,*),d(3,*),tf(*), bufmat(*),fr_wave(*),
155 . partsav(*),stifn(*), stifr(*), fsky(*),eani(*),
156 . fx(mvsiz,*),fy(mvsiz,*),fz(mvsiz,*),
157 . mssa(*), dmels(*),knot(*),wige(*),dt2t, fv(*),knotlocpc(deg_max,3,*),
158 . knotlocel(2,3,*),gresav(*)
159 my_real,
DIMENSION(MVSIZ,6),
INTENT(INOUT) :: svis
160 TYPE (),
TARGET,
DIMENSION(NGROUP) :: ELBUF_TAB
162 TYPE (NLOCAL_STR_) ,
TARGET :: NLOC_DMG
164TYPE (MAT_ELEM_) ,
INTENT(INOUT) :: MAT_ELEM
165 TYPE() ,
INTENT(IN) :: DT
166 type (glob_therm_) ,
intent(inout) :: glob_therm
167 type (sensors_),
INTENT(INOUT) :: SENSORS
171 INTEGER I, J, NF1, IFLAG, NUPARAM,
172 . nuvar,imat,n1,n2,n3
173 . idx(mvsiz),idy(mvsiz),idz(mvsiz),ifunc(maxfunc),nfunc,iadbuf,
174 . ibid,istrain,ibidv(1),ilay,ierror,iad_knot,idfrstlocknt,
175 . idx2(mvsiz),idy2(mvsiz),idz2(mvsiz)
180 . STI(MVSIZ) ,RHO0(MVSIZ)
183 . xx(nctrl,nel),yy(nctrl,nel),zz(nctrl,nel),
184 . dx(nctrl,nel),dy(nctrl,nel),dz(nctrl,nel),
186 . vx(nctrl,nel),vy(nctrl,nel),vz(nctrl,nel),
188 . ww(nctrl,nel),rbid, zr, zs, zt
190 TYPE(g_bufel_) ,
POINTER :: GBUF
191 TYPE(l_bufel_) ,
POINTER :: LBUF
194 .
DIMENSION(:),
POINTER :: UVAR
195 INTEGER MXT(MVSIZ),NGL(MVSIZ),NGEO(MVSIZ)
197 . VOLN(MVSIZ), VD2(MVSIZ) , DVOL(MVSIZ),DELTAX(MVSIZ),
198 . VIS(MVSIZ) , QVIS(MVSIZ), CXX(MVSIZ) ,
199 . S1(MVSIZ) , S2(MVSIZ) , S3(MVSIZ) ,
200 . S4(MVSIZ) , S5(MVSIZ) , S6(MVSIZ) ,
201 . d4(mvsiz) , d5(mvsiz) , d6(mvsiz) ,
205 . aj1(mvsiz) , aj2(mvsiz) , aj3(mvsiz) ,
206 . aj4(mvsiz) , aj5(mvsiz) , aj6(mvsiz),
207 . wxx(mvsiz) , wyy(mvsiz) , wzz(mvsiz),
208 . vdx(mvsiz) , vdy(mvsiz) , vdz(mvsiz),
209 . muvoid(mvsiz),ssp_eq(mvsiz),aire(mvsiz),
210 . sigy(mvsiz),et(mvsiz),r1_free(mvsiz),
211 . r3_free(mvsiz),defp(mvsiz),
212 . mfxx(mvsiz),mfxy(mvsiz),mfyx(mvsiz),
213 . mfyy(mvsiz),mfyz(mvsiz),mfzy(mvsiz),
214 . mfzz(mvsiz),mfzx(mvsiz),mfxz(mvsiz),
215 . gama(mvsiz,6),bid(mvsiz),tempel(mvsiz),die(mvsiz),
219 . dxx(mvsiz), dyy(mvsiz), dzz(mvsiz),
220 . dxy(mvsiz), dxz(mvsiz), dyx(mvsiz),
221 . dyz(mvsiz), dzx(mvsiz), dzy(mvsiz),divde(mvsiz)
223 INTEGER ITEL, ITNCTRL, K, N, INCTRL
225 .
DIMENSION(NCTRL) :: R
227 .
DIMENSION(NCTRL,3) :: DRDXI
229 .
DIMENSION(NCTRL,MVSIZ) :: MATN
231 .
DIMENSION(3*NCTRL,MVSIZ) :: MATB
233 .
DIMENSION(MVSIZ) :: MATDET
235 . DETJAC, PGAUSS, VOLG(MVSIZ)
237 . BtDBAloc(3*NCTRL,MVSIZ),
238 . BA(6,MVSIZ),DBA(6,MVSIZ), Aloc(3*NCTRL,MVSIZ),
239 . MASS(NCTRL,MVSIZ),MMUNK(MVSIZ),KNOTLOCX(PX+1,NCTRL,MVSIZ),
240 . KNOTLOCY(PY+1,NCTRL,MVSIZ),KNOTLOCZ(PZ+1,NCTRL,MVSIZ),
241 . KNOTLOCELX(2,MVSIZ),
242 . knotlocely(2,mvsiz),knotlocelz(2,mvsiz)
244 . airenurbs(3), aface(6,mvsiz), tc,
245 . vmin(mvsiz), smax(mvsiz), sumv,amu(mvsiz)
248 .
ALLOCATABLE,
DIMENSION(:,:) :: vgauss
252 . w_gauss(9,9),a_gauss(9,9),voldp(mvsiz)
260 3 0.555555555555556d0,0.888888888888889d0,0.555555555555556d0,
263 4 0.347854845137454d0,0.652145154862546d0,0.652145154862546d0,
264 4 0.347854845137454d0,0.d0 ,0.d0 ,
266 5 0.236926885056189d0,0.478628670499366d0,0.568888888888889d0,
267 5 0.478628670499366d0,0.236926885056189d0,0.d0 ,
269 6 0.171324492379170d0,0.360761573048139d0,0.467913934572691d0,
270 6 0.467913934572691d0,0.360761573048139d0,0.171324492379170d0,
272 7 0.129484966168870d0,0.279705391489277d0,0.381830050505119d0,
273 7 0.417959183673469d0,0.381830050505119d0,0.279705391489277d0,
274 7 0.129484966168870d0,0.d0 ,0.d0 ,
275 8 0.101228536290376d0,0.222381034453374d0,0.313706645877887d0,
276 8 0.362683783378362d0,0.362683783378362d0,0.313706645877887d0,
277 8 0.222381034453374d0,0.101228536290376d0,0.d0 ,
278 9 0.081274388361574d0,0.180648160694857d0,0.260610696402935d0,
279 9 0.312347077040003d0,0.330239355001260d0,0.312347077040003d0,
280 9 0.260610696402935d0,0.180648160694857d0,0.081274388361574d0/
285 2 -.577350269189625d0,0.577350269189625d0,0.d0 ,
288 3 -.774596669241483d0,0.d0 ,0.774596669241483d0,
291 4 -.861136311594053d0,-.339981043584856d0,0.339981043584856d0,
292 4 0.861136311594053d0,0.d0 ,0.d0 ,
294 5 -.906179845938664d0,-.538469310105683d0,0.d0 ,
295 5 0.538469310105683d0,0.906179845938664d0,0.d0 ,
297 6 -.932469514203152d0,-.661209386466265d0,-.238619186083197d0,
298 6 0.238619186083197d0,0.661209386466265d0,0.932469514203152d0,
300 7 -.949107912342759d0,-.741531185599394d0,-.405845151377397d0,
301 7 0.d0 ,0.405845151377397d0,0.741531185599394d0,
302 7 0.949107912342759d0,0.d0 ,0.d0 ,
303 8 -.960289856497536d0,-.796666477413627d0,-.525532409916329d0,
304 8 -.183434642495650d0,0.183434642495650d0,0.525532409916329d0,
305 8 0.796666477413627d0,0.960289856497536d0,0.d0 ,
306 9 -.968160239507626d0,-.836031107326636d0,-.613371432700590d0,
307 9 -.324253423403809d0,0.d0 ,0.324253423403809d0,
308 9 0.613371432700590d0,0.836031107326636d0,0.968160239507626d0/
312 sz_ix=numelq+numels+nsvois
318 gbuf => elbuf_tab(ng)%GBUF
319 uvar => elbuf_tab(ng)%BUFLY(1)%MAT(1,1,1)%VAR
332 imat = kxig3d(1,i+nft)
333 ngeo(i)=kxig3d(2,i+nft)
343 IF( j <= kxig3d(3,i+nft) )
THEN
344 xx(j,i)=x(1,ixig3d(kxig3d(4,i+nft)+j-1))
345 yy(j,i)=x(2,ixig3d(kxig3d(4,i+nft)+j-1))
346 zz(j,i)=x(3,ixig3d(kxig3d(4,i+nft)+j-1))
347 dx(j,i)=d(1,ixig3d(kxig3d(4,i+nft)+j-1))
348 dy(j,i)=d(2,ixig3d(kxig3d(4,i+nft)+j-1))
349 dz(j,i)=d(3,ixig3d(kxig3d(4,i+nft)+j-1))
350 vx(j,i)=v(1,ixig3d(kxig3d(4,i+nft)+j-1))
351 vy(j,i)=v(2,ixig3d(kxig3d(4,i+nft)+j-1))
352 vz(j,i)=v(3,ixig3d(kxig3d(4,i+nft)+j-1))
355 knotlocx(k,j,i)=knotlocpc(k,1,(ngeo(i)-1)*numnod+ixig3d(kxig3d(4,i+nft
358 knotlocy(k,j,i)=knotlocpc(k,2,(ngeo(i)-1)*numnod+ixig3d(kxig3d(4,i+nft)+j-1))
361 knotlocz(k,j,i)=knotlocpc(k,3,(ngeo(i)-1)*numnod+ixig3d(kxig3d(4,i+nft)+j-1))
365 ngl(i) = kxig3d(5,i+nft)
366 idx(i) = kxig3d(6,i+nft)
367 idy(i) = kxig3d(7,i+nft)
368 idz(i) = kxig3d(8,i+nft)
369 idx2(i) = kxig3d(9,i+nft)
370 idy2(i) = kxig3d(10,i+nft)
371 idz2(i) = kxig3d(11,i+nft)
372 knotlocelx(1,i) = knotlocel(1,1,i+nft)
373 knotlocely(1,i) = knotlocel(1,2,i+nft)
374 knotlocelz(1,i) = knotlocel(1,3,i+nft)
375 knotlocelx(2,i) = knotlocel(2,1,i+nft)
376 knotlocely(2,i) = knotlocel(2,2,i+nft)
377 knotlocelz(2,i) = knotlocel(2,3,i+nft)
380 iad_knot = igeo(40,iprop)
384 idfrstlocknt = igeo(47,iprop)
391 nuparam = ipm(9,imat)
394 ifunc(i) = ipm(10+i,imat)
402 lbuf => elbuf_tab(ng)%BUFLY(1)%LBUF(i,j,k)
403 lbuf%VOL0DP(lft:llt) = lbuf%VOL(lft:llt)
418 ALLOCATE(vgauss(px*py*pz,mvsiz),stat=ierror)
420 CALL ancmsg(msgid=246,anmode=aninfo)
426 1 nctrl, volg, gbuf%SIG, gbuf%EINT,
427 2 gbuf%RHO, gbuf%QVIS, fx, fy,
428 3 fz, btdbaloc, stig, mass,
429 4 mmunk, aface, vmin, gbuf%PLA,
430 5 gbuf%EPSD, gbuf%G_PLA, gbuf%G_EPSD,nel)
441 pgauss = w_gauss(i,px)*w_gauss(j,py)*w_gauss(k,pz)
443 lbuf => elbuf_tab(ng)%BUFLY(1)%LBUF(i,j,k)
458 1 itel ,n ,xx(:,itel) ,yy(:,itel),
459 2 zz(:,itel),ww(:,itel) ,idx(itel) ,idy(itel) ,
460 3 idz(itel) ,knotlocx(:,:,itel) ,knotlocy(:,:,itel),knotlocz(:,:,itel) ,
461 4 drdxi ,r ,detjac ,nctrl ,
462 5 zr ,zs ,zt ,knot(iad_knot+1),
463 6 knot(iad_knot+nknot1+1),knot(iad_knot+nknot1+nknot2+1),px-1,
465 8 idx2(itel),idy2(itel) ,idz2(itel) ,
466 9 knotlocelx(:,itel),knotlocely(:,itel),knotlocelz(:,itel))
468 voln(itel) = pgauss*detjac
469 vgauss(n,itel) = pgauss*detjac
470 volg(itel) = volg(itel) + voln(itel)
472 IF(idtmin(101)==1)
THEN
474 mass(itnctrl,itel)=mass(itnctrl,itel)+pm(89,mxt(itel))*r(itnctrl)*lbuf%VOL(itel)
483 . itel ,nctrl ,r ,drdxi ,
484 . detjac,matn ,matb ,matdet)
494 2 nctrl, wxx, wyy, wzz,
495 3 dxx, dyy, dzz, dxy,
496 4 dyx, dyz, dzy, dxz,
505 1 lbuf%SIG,s1, s2, s3,
507 3 wyy, wzz, nel, mtn,
513 voldp(lft:llt) = voln(lft:llt)
514 divde(1:nel) = dt1*(dxx(1:nel)+ dyy(1:nel)+ dzz(1:nel))
517 1 pm, lbuf%VOL, lbuf%RHO, lbuf%EINT,
518 2 divde, flux(1,nf1), flu1(nf1), voln,
519 3 dvol, ngl, mxt, off,
520 4 iparg(64,ng),gbuf%TAG22, voldp, lbuf%VOL0DP,
521 5 amu, gbuf%OFF, nel, mtn,
522 6 jale, ismstr, jeul, jlag)
532 IF ((itask==0).AND.(imon_mat==1))
CALL startime(timers,35)
533 CALL mmain(timers, output,
534 1 elbuf_tab, ng, pm, geo,
535 2 ale_connect, ixs, iparg,
536 3 v, tf, npf, bufmat,
537 4 sti, x, dt2t, neltst,
538 5 ityptst, offset, nel, w,
539 6 off, ngeo, mxt, ngl,
540 7 voln, vd2, dvol, deltax,
541 8 vis, qvis, cxx, s1,
545 c wyy, wzz, aj1, aj2,
546 d aj3, aj4, aj5, aj6,
547 e vdx, vdy, vdz, muvoid,
548 f ssp_eq, aire, sigy, et,
549 g r1_free, defp, r3_free, amu,
550 h mfxx, mfxy, mfxz, mfyx,
551 i mfyy, mfyz, mfzx, mfzy,
552 j mfzz, ipm, gama, bid,
553 k dxy, dyx, dyz, dzy,
554 l dzx, dxz, istrain, tempel,
555 m die, iexpan, ilay, mssa,
557 o table, bid, bid, bid,
558 p bid, iparg(1,ng), igeo, bid,
559 q itask, nloc_dmg, varnl, mat_elem,
560 r h3d_strain, jplasol, jsph, mvsiz,
561 s snpc, stf, sbufmat, glob_therm,
562 * svis, sz_ix, iresp,
563 t n2d, th_strain, ngroup, tt,
564 . dt1, ntable, numelq, nummat,
565 . numgeo, numnod, numels,
566 . idel7nok, idtmin, maxfunc,
567 . imon_mat, userl_avail, impl_s,
568 . idyna, dt ,bid ,sensors)
572 2 d5, d6, lbuf%STRA,wxx,
573 3 wyy, wzz, off, nel,
576 IF ((itask==0).AND.(imon_mat==1))
CALL stoptime(timers,35)
583 1 pm, mxt, kxig3d, lbuf%SIG,
584 2 nctrl, matb, fx, fy,
585 3 fz, voln, btdbaloc,dba,
586 4 ssp_eq, stig, nel, nft)
597 1 gbuf%OFF,off, nel, ismstr)
607 lbuf => elbuf_tab(ng)%BUFLY(1)%LBUF(i,j,k)
610 1 lbuf%SIG, gbuf%SIG, lbuf%VOL, gbuf%VOL,
611 2 lbuf%RHO, lbuf%EINT, gbuf%EINT, gbuf%RHO,
612 3 vgauss(n,:),volg, lbuf%PLA, gbuf%PLA,
613 4 gbuf%G_PLA, lbuf%EPSD, gbuf%EPSD, nel,
623 iflag=mod(ncycle,ncpri)
625 CALL ige3dbilan(partsav,gbuf%EINT,gbuf%RHO,volg,
626 . vx, vy, vz,iparts,gbuf%VOL,
628 . xx, yy, zz, nctrl,itask,iparg(1,ng),
637 1 ixig3d, kxig3d, nctrl, gbuf%OFF,
639 3 btdbaloc,stig, stifn, nel,
648 IF(idtmin(101)==1)
THEN
651 IF( j <= kxig3d(3,i+nft) )
THEN
652 mmunk(i) =
min(mmunk(i),mass(j,i)/stig(i,j))
655 tc = sqrt(2*mmunk(i))
668 ELSEIF(idtmin(101)==2)
THEN
677 pgauss = w_gauss(i,px)*w_gauss(j,py)
682 . itel ,n ,xx(:,itel),yy(:,itel),zz(:,itel),ww(:,itel),
683 . idx(itel), idy(itel), idz(itel), airenurbs,
684 . nctrl, zr, zs, zt, knot(iad_knot+1), knot(iad_knot+nknot1+1),
685 . knot(iad_knot+nknot1+nknot2+1), px-1, py-1, pz-1)
687 aface(1,itel) = aface(1,itel) + airenurbs(1)*pgauss
695 . itel ,n ,xx(:,itel),yy(:,itel),zz(:,itel),ww(:,itel),
696 . idx(itel), idy(itel), idz(itel), airenurbs,
697 . nctrl, zr, zs, zt, knot(iad_knot+1), knot(iad_knot+nknot1+1),
698 . knot(iad_knot+nknot1+nknot2+1), px-1, py-1, pz-1)
700 aface(2,itel) = aface(2,itel) + airenurbs(1)*pgauss
712 pgauss = w_gauss(i,px)*w_gauss(k,pz)
716 . itel ,n ,xx(:,itel),yy(:,itel),zz(:,itel),ww(:,itel),
717 . idx(itel), idy(itel), idz(itel), airenurbs,
718 . nctrl, zr, zs, zt, knot(iad_knot+1), knot(iad_knot+nknot1+1),
719 . knot(iad_knot+nknot1+nknot2+1), px-1, py-1, pz-1)
721 aface(3,itel) = aface(3,itel) + airenurbs(2)*pgauss
728 . itel ,n ,xx(:,itel),yy(:,itel),zz(:,itel),ww(:,itel),
729 . idx(itel), idy(itel), idz(itel), airenurbs,
730 . nctrl, zr, zs, zt, knot(iad_knot+1), knot(iad_knot+nknot1+1),
731 . knot(iad_knot+nknot1+nknot2+1), px-1, py-1, pz-1)
733 aface(4,itel) = aface(4,itel) + airenurbs(2)*pgauss
745 pgauss = w_gauss(j,py)*w_gauss(k,pz)
749 . itel ,n ,xx(:,itel),yy(:,itel),zz(:,itel),ww(:,itel),
750 . idx(itel), idy(itel), idz(itel), airenurbs,
751 . nctrl, zr, zs, zt, knot(iad_knot+1), knot(iad_knot+nknot1+1),
752 . knot(iad_knot+nknot1+nknot2+1), px-1, py-1, pz-1)
761 . itel ,n ,xx(:,itel),yy(:,itel),zz(:,itel),ww(:,itel),
762 . idx(itel), idy(itel), idz(itel), airenurbs,
763 . nctrl, zr, zs, zt, knot(iad_knot+1), knot(iad_knot+nknot1+1),
764 . knot(iad_knot+nknot1+nknot2+1), px-1, py-1, pz-1)
766 aface(6,itel) = aface(6,itel) + airenurbs(3)*pgauss
780 sumv=sumv+vgauss((j-1)*pz+(i-1)*pz*py+k,itel)
782 vmin(itel)=
min(vmin(itel),sumv)
786 deltax(itel)=
min(deltax(itel),px*py*vmin(itel)/
max(aface(1,itel),aface(2,itel)))
794 sumv=sumv+vgauss(j+(i-1)*py*pz+(k-1)*pz,itel)
796 vmin(itel)=
min(vmin(itel),sumv)
800 deltax(itel)=
min(deltax(itel),px*pz*vmin(itel)/
max(aface(3,itel),aface(4,itel)))
807 sumv=sumv+vgauss(j+(i-1)*pz+(k-1)*py*pz,itel)
809 vmin(itel)=
min(vmin(itel),sumv)
813 deltax(itel)=
min(deltax(itel),pz*py*vmin(itel)/
max(aface(5,itel),aface(6,itel)))