94 3 EINT, RHO, QOLD, VOL,
95 4 STRAIN, SIGL, GAMA, UVAR,
96 5 BUFMAT, TF, NPF, STIFN,
97 6 MAT, NGL, NUVAR, DT2T,
98 7 NELTST, ITYPTST, OFFG, GEO,
99 8 PID, EPSD, EL_TEMP, WXX,
100 9 WYY, WZZ, JSPH, MUMAX,
101 A SSP, AIRE, VOLN, VD2,
102 B DELTAX, VIS, D1, D2,
104 D PNEW, PSH, Q, SSP_EQ,
105 E DVOL, SOLD1, SOLD2, SOLD3,
106 F SOLD4, SOLD5, SOLD6, RX,
109 I IPLA, SIGY, DEFP, ISMSTR,
110 J MFXX, MFXY, MFXZ, MFYX,
111 K MFYY, MFYZ, MFZX, MFZY,
112 L MFZZ, IPM, ISORTH, FBUF,
113 M NFAIL, NPG, SIGDD, DXY,
114 N DYX, DYZ, DZY, DZX,
115 O DXZ, FR_WAV, ISROT, V,
117 Q JTHE, ET, MSSA, DMELS,
118 R IPTR, IPTS, IPTT, TABLE,
119 S FVD2, FDELTAX, FSSP, FQVIS,
120 T IPARG1, IGEO, SIGV,
121 U AL_IMP, SIGNOR, ISTRAIN, NG,
122 V ELBUF_TAB,VBUF, ILAY, VK,
123 W IPARG, BUFVOIS, VDX, VDY,
124 X VDZ, IHET, CONDE, ITASK,
125 Y IEXPAN, VOL_AVG, AMU, EPSTH3,
126 Z EPSTH, SVISC, NEL, ETOTSH,
127 1 ISELECT, TSTAR, MUOLD, AMU2,
128 2 DPDM, RHOREF, RHOSP, NLOC_DMG,
129 3 ITY, JTUR , MAT_ELEM, IDEL7NOK,SVIS,
130 4 DT , glob_therm,damp_buf,idamp_freq_range)
146 USE fail_lemaitre_s_mod
147 USE fail_spalling_s_mod
148 USE fail_composite_s_mod
152#include "implicit_f.inc"
156#include "usrplas_c.inc"
157#include "param_c.inc"
158#include "com04_c.inc"
159#include "com08_c.inc"
160#include "com01_c.inc"
161#include "userlib.inc"
162#include "impl1_c.inc"
163#include "timeri_c.inc"
164#include "scr18_c.inc"
168 TYPE(timer_),
INTENT(INOUT) :: TIMERS
169 INTEGER,
INTENT(IN) ::
170 INTEGER,
INTENT(IN) :: JTUR
171 INTEGER,
INTENT(INOUT) :: IDEL7NOK
172 INTEGER LFT ,LLT ,NFT ,MTN, NUVAR,JCVT,ISORTH,NFAIL,NPG,
173 . j, jsph, ipla,ismstr,neltst, ityptst, nuvarr,ng,ilay,
174 . ix, jthe, isrot,istrain,iptr, ipts, iptt,ihet,iexpan,nel
175 INTEGER NPF(*),MAT(MVSIZ),NGL(MVSIZ),PID(MVSIZ),IPM(NPROPMI,*),
176 . iparg1(*),iparg(nparg,*),igeo(npropgi,*),itask,iselect
177 INTEGER,
INTENT(IN) :: IDAMP_FREQ_RANGE
183 . pm(npropm,*), gama(*),pnew(nel),varnl(nel),
184 . off(*), sig(nel,6), sigl(nel,6), strain(nel,6), eint(*),
185 . rho(*),qold(*), vol(*), bufmat(*), tf(*),vk(*),
186 . offg(*),stifn(*),geo(npropg,*),epsd(*),
187 . wxx(*), wyy(*), wzz(*), mumax(*), ssp(*),
188 . aire(*) ,voln(*) ,vd2(*) ,deltax(*),vis(*) ,
189 . sold1(mvsiz) ,sold2(mvsiz) ,sold3(mvsiz) ,
190 . sold4(mvsiz) ,sold5(mvsiz) ,sold6(mvsiz),
191 . d1(*) ,d2(*),d3(*),d4(*),d5(*),d6(*) ,psh(nel),
192 . q(*),ssp_eq(*),dvol(*),
193 . rx(mvsiz) ,ry(mvsiz) ,rz(mvsiz),
194 . sx(mvsiz) ,sy(mvsiz) ,sz(mvsiz) ,
195 . tx(mvsiz) ,ty(mvsiz) ,tz(mvsiz) , v(*), w(*),
196 . mfxx(*) ,mfxy(*) ,mfxz(*) ,mfyx(*) ,mfyy(*) ,mfyz(*) ,
197 . mfzx(*) ,mfzy(*) ,mfzz(*), fqvis(*),fssp(*),
198 . sigv(nel,6), sigy(*),defp(nel),
199 . dxy(*) ,dyx(*) ,dyz(*) ,dzy(*) ,dzx(*) ,dxz(*), sigdd(nel,6),
200 . fr_wav(*),x(*),et(*), mssa(*), dmels(*),fvd2(*),fdeltax(*),
201 . al_imp(mvsiz),signor(mvsiz,6),vdx(*),vdy(*),vdz(*),
202 . svisc(nel,6),amu(mvsiz),amu2(mvsiz),dpdm(mvsiz),vol_avg(mvsiz),epsth(nel),epsth3(mvsiz),
203 . etotsh(nel,6),tstar(mvsiz),muold(nel),conde(*), rhoref(*), rhosp(*)
204 TARGET :: bufmat,deltax,varnl,defp
205 my_real,
DIMENSION(MVSIZ,6),
INTENT(INOUT) :: svis
206 my_real,
DIMENSION(LLT) :: el_temp
207 my_real,
TARGET,
DIMENSION(NUVAR*LLT):: uvar
208 my_real,
TARGET,
DIMENSION(LLT):: scale1,initvarf
209 TYPE (BUF_FAIL_),
TARGET :: FBUF
210 TYPE (BUF_VISC_) :: VBUF
211 TYPE (TTABLE),
DIMENSION(NTABLE) :: TABLE
212 TYPE (ELBUF_STRUCT_),
TARGET,
DIMENSION(NGROUP) :: ELBUF_TAB
213 TYPE (NLOCAL_STR_) :: NLOC_DMG
214 TYPE (MAT_ELEM_) ,
INTENT(INOUT) :: MAT_ELEM
215 TYPE (DT_),
INTENT(IN) :: DT
216 TYPE (GLOB_THERM_) ,
INTENT(INOUT) :: GLOB_THERM
217 TYPE (BUF_DAMP_RANGE_) ,
INTENT(IN):: DAMP_BUF
221 INTEGER NV46, NUMEL, INLOC, JSMS
222 INTEGER I,NPAR,IADBUF,NFUNC,NUMTABL,NTABL_FAIL,ISRATE,,MX,IPG,NPTR,NPTS,
223 . IBID,IBIDON1,IBIDON2,IBIDON3,IBIDON4 ,N48,NIX,ILAW_USER,IGTYP,
224 . NVARF,NVARVIS,IR,IRUPT,IMAT,ISVIS,IVISC,NUVARV,ISEQ,IADRUPBUF,IDEV,VISCTYPE
226 .E1,E2,E3,,E5,E6,BID1,BID3,Q1,Q2,Q3,SS1,SS2,SS3,SS4,SS5,
227 .SS6,WXXF,WYYF,WZZF,P2,EPSP,DAV,ASRATE,C1(MVSIZ),
228 . EP1(MVSIZ),EP2(MVSIZ),EP3(),E7(MVSIZ),
229 . EP4(2*MVSIZ),EP5(2*MVSIZ),EP6(2*MVSIZ),EINC,
230 . S1(MVSIZ) ,S2(MVSIZ) ,S3(MVSIZ) ,
231 . S4(2*MVSIZ) ,S5(2*MVSIZ) ,S6(2*MVSIZ),
232 . DE1(MVSIZ),DE2(),DE3(MVSIZ),
233 . DE4(2*MVSIZ),DE5(2*MVSIZ),DE6(2*MVSIZ),
234 . SO1(MVSIZ),SO2(MVSIZ),SO3(MVSIZ),
235 . SO4(2*MVSIZ),SO5(2*MVSIZ),(2*MVSIZ),
236 .ES1(MVSIZ),ES2(MVSIZ),ES3(MVSIZ),ES4(MVSIZ),ES5(MVSIZ),ES6(MVSIZ),
237 .SV1(MVSIZ),SV2(MVSIZ),SV3(MVSIZ),SV4(MVSIZ),SV5(MVSIZ),SV6(MVSIZ),
238 .SVO1(MVSIZ),SVO2(MVSIZ),SVO3(MVSIZ),SVO4(MVSIZ),SVO5(MVSIZ),SVO6(MVSIZ),
239 .R11(MVSIZ),R12(MVSIZ),R13(MVSIZ),R21(MVSIZ),R22(MVSIZ),R23(MVSIZ),
240 .R31(MVSIZ),R32(MVSIZ),R33(MVSIZ),EPSP1(MVSIZ),DPLA(MVSIZ),
241 .PAIR(MVSIZ),ES7(MVSIZ),ES8(MVSIZ),(MVSIZ),DEFP0(MVSIZ)
244 my_real fpsxx(mvsiz),fpsyy(mvsiz),fpszz(mvsiz),fpsxy(mvsiz),
245 * fpsyz(mvsiz),fpszx(mvsiz),fpsyx(mvsiz),fpszy(mvsiz),
246 * fpsxz(mvsiz),bid_arr(mvsiz),
247 * upsxx(mvsiz),upsyy(mvsiz),upszz(mvsiz),upsxy(mvsiz
248 * upsyz(mvsiz),upsxz(mvsiz)
252 my_real,
DIMENSION(NEL),
TARGET :: le_max
254 my_real,
DIMENSION(:),
POINTER :: uparam,uparamf,uvarf,dfmax,tdel,
255 . yldfac,dam,el_len,el_pla,damini
256 my_real,
DIMENSION(MVSIZ) :: el_bfrac,el_tb
257 INTEGER :: SIZBFRAC,SIZTB
258 TYPE(ULAWINTBUF) :: USERBUF
259 TYPE(L_BUFEL_) ,
POINTER :: LBUF, LBUF1, LBUF2
260 TYPE(g_bufel_) ,
POINTER :: GBUF
261 TYPE (FAIL_PARAM_),
POINTER :: FAILPARAM
262 LOGICAL :: LOGICAL_USERL_AVAIL
263 my_real USER_UELR(MVSIZ)
264 INTEGER,
DIMENSION(:) ,
POINTER :: ITABL_FAIL,IPARAMF
265 INTEGER,
DIMENSION(:) ,
POINTER :: FLD_IDX,FOFF,IFUNC,ITABLE
266 INTEGER :: DMG_FLAG,LF_DAMMX,NIPAR
267 my_real,
DIMENSION(:,:) ,
ALLOCATABLE :: ISMSTR10_FP
268 my_real ADDITIONAL_FLT_PARAMETERS(MVSIZ)
269 INTEGER ADDITIONAL_INT_PARAMETERS(MVSIZ),LENGTH
270 CHARACTER*256 MDS_LIBNAME
274 CHARACTER(LEN=NCHARLINE100)::IUSER_KEY
275 MY_REAL,
DIMENSION(NEL) :: OFF_OLD
277 GBUF => elbuf_tab(ng)%GBUF
278 lbuf => elbuf_tab(ng)%BUFLY(ilay)%LBUF(iptr,ipts,iptt)
279 logical_userl_avail=.false.
280 IF(userl_avail>0) logical_userl_avail=.true.
281 nptr = elbuf_tab(ng)%NPTR
282 npts = elbuf_tab(ng)%NPTS
283 ipg = iptr + ((ipts-1) + (iptt-1)*npts)*nptr
285 IF ((igtyp == 20).OR.(igtyp == 21).OR.(igtyp == 22))
THEN
286 ipg = iptr + ((ipts-1) + (ilay-1)*npts)*nptr
288 iseq = elbuf_tab(ng)%BUFLY(ilay)%L_SEQ
290 dmg_flag = elbuf_tab(ng)%BUFLY(ilay)%L_DMGSCL
291 nvarvis = elbuf_tab(ng)%BUFLY(ilay)%NVAR_VISC
295 varnl(i) =
max(varnl(i),zero)
296 lbuf%PLANL(i) = lbuf%PLANL(i) + varnl
297 lbuf%EPSDNL(i) = varnl(i)/
max(dt1,em20)
307 uparam => bufmat(iadbuf:iadbuf+npar)
308 ifunc => ipm(10+1:10+nfunc,mx)
309 itable => ipm(226+1:226+numtabl,mx)
328 ilaw_user = ipm(217, mx)
330 isvis = igeo(35,pid(1))
331 IF(impl_s >0.AND.idyna == 0) isvis = 0
335 IF (elbuf_tab(ng)%BUFLY(ilay)%L_PLA > 0)
THEN
336 defp0(lft:llt) = lbuf%PLA(lft:llt)
338 defp0(lft:llt) = zero
343 off_old(1:nel) = off(1:nel)
345 IF (gbuf%G_BFRAC > 0)
THEN
346 el_bfrac(1:nel) = elbuf_tab(ng)%GBUF%BFRAC(1:nel)
349 el_bfrac(1:nel) = zero
353 IF (gbuf%G_TB > 0)
THEN
354 el_tb(1:nel) = elbuf_tab(ng)%GBUF%TB(1:nel)
362 scale1(lft:llt) = one
363 yldfac => scale1(lft:llt)
364 IF ( elbuf_tab(ng)%BUFLY(ilay)%L_FAC_YLD > 0)
THEN
365 yldfac => lbuf%FAC_YLD(1:nel)
368 c1(1:mvsiz) = pm(32,mx)
369 rho0(1:mvsiz)= pm( 1,mx)
371 ep1(1:mvsiz) = d1(1:mvsiz)*off(1:mvsiz)
372 ep2(1:mvsiz) = d2(1:mvsiz)*off(1:mvsiz)
373 ep3(1:mvsiz) = d3(1:mvsiz)*off(1:mvsiz)
374 ep4(1:mvsiz) = d4(1:mvsiz)*off(1:mvsiz)
375 ep5(1:mvsiz) = d5(1:mvsiz)*off(1:mvsiz)
376 ep6(1:mvsiz) = d6(1:mvsiz)*off(1:mvsiz)
399 if (mat_elem%MAT_PARAM(mat(1))%IVISC == 3)
then
432 ELSEIF (isorth /= 0)
THEN
437 1 gama, r11, r12, r13,
438 2 r21, r22, r23, r31,
448 CALL mrotens(lft,llt,ep1,ep2,ep3,ep4,ep5,ep6,
452#include "vectorize.inc"
473 IF (mat_elem%MAT_PARAM(mat(1))%IVISC == 3)
THEN
474 CALL mrotens(lft,llt,svo1,svo2,svo3,svo4,svo5,svo6,
483#include "vectorize.inc"
499#include "vectorize.inc"
507 ss1=strain(i,1)-q1+q2
508 ss2=strain(i,2)+q1-q3
509 ss3=strain(i,3)-q2+q3
510 ss4=strain(i,4)+2.*wzzf*(strain(i,1)-strain(i,2))+
511 . wyyf*strain(i,5)-wxxf*strain(i,6)
512 ss5=strain(i,5)+2.*wxxf*(strain(i,2)-strain(i,3))+
513 . wzzf*strain(i,6)-wyyf*strain(i,4)
514 ss6=strain(i,6)+2.*wyyf*(strain(i,3)-strain(i,1))+
515 . wxxf*strain(i,4)-wzzf*strain(i,5)
525 IF (istrain > 0)
THEN
527 strain(i,1)= strain(i,1) + de1(i)
528 strain(i,2)= strain(i,2) + de2(i)
529 strain(i,3)= strain(i,3) + de3(i)
530 strain(i,4)= strain(i,4) + de4(i)
531 strain(i,5)= strain(i,5) + de5(i)
532 strain(i,6)= strain(i,6) + de6(i)
553 IF (ismstr == 10.OR.ismstr == 12)
THEN
557 IF (iselect > 0)
THEN
559 es1(i)=etotsh(i,1)*off(i)
560 es2(i)=etotsh(i,2)*off(i)
561 es3(i)=etotsh(i,3)*off(i)
562 es4(i)=etotsh(i,4)*off(i)
563 es6(i)=etotsh(i,6)*off(i)
564 es5(i)=etotsh(i,5)*off(i)
568 mfxx(i) = off(i)*mfxx(i)
569 mfyy(i) = off(i)*mfyy(i)
570 mfzz(i) = off(i)*mfzz(i)
571 mfxy(i) = off(i)*mfxy(i)
572 mfyx(i) = off(i)*mfyx(i)
573 mfzx(i) = off(i)*mfzx(i)
574 mfxz(i) = off(i)*mfxz(i)
575 mfyz(i) = off(i)*mfyz(i)
576 mfzy(i) = off(i)*mfzy(i)
580 es1(i)=mfxx(i)*(two+mfxx(i))+
581 . mfxy(i)*mfxy(i)+mfxz(i)*mfxz(i)
582 es2(i)=mfyy(i)*(two+mfyy(i))+
583 . mfyx(i)*mfyx(i)+mfyz(i)*mfyz(i)
584 es3(i)=mfzz(i)*(two+mfzz(i))+
585 . mfzx(i)*mfzx(i)+mfzy(i)*mfzy(i)
586 es4(i)=mfxy(i)+mfyx(i)+mfxx(i)*mfyx(i)+
587 . mfxy(i)*mfyy(i)+mfxz(i)*mfyz(i)
588 es6(i)=mfxz(i)+mfzx(i)+mfxx(i)*mfzx(i)+
589 . mfxy(i)*mfzy(i)+mfxz(i)*mfzz(i)
590 es5(i)=mfzy(i)+mfyz(i)+mfzx(i)*mfyx(i)+
591 . mfzy(i)*mfyy(i)+mfzz(i)*mfyz(i)
595 IF(idtmin(1)==3.AND.ismstr == 12)
THEN
597 IF (offg(i) <=one) cycle
601 es4(i)=half*(mfxy(i)+mfyx(i))
602 es6(i)=half*(mfxz(i)+mfzx(i))
603 es5(i)=half*(mfzy(i)+mfyz(i))
609 IF (jcvt <= 0 .AND. isorth /= 0)
THEN
612 1 gama, r11, r12, r13,
613 2 r21, r22, r23, r31,
618 CALL mrotens(lft,llt,es1,es2,es3,es4,es5,es6,
629 ELSEIF (ismstr==11)
THEN
635 es4(i)=mfxy(i)+mfyx(i)
636 es6(i)=mfxz(i)+mfzx(i)
637 es5(i)=mfzy(i)+mfyz(i)
639 IF (jcvt == 0 .AND. isorth /= 0)
THEN
649 1 gama, r11, r12, r13,
650 2 r21, r22, r23, r31,
655 CALL mrotens(lft,llt,es1,es2,es3,es4,es5,es6,
677 strain(i,1)= strain(i,1)-epsth(i
678 strain(i,2)= strain(i,2)-epsth(i)
679 strain(i,3)= strain(i,3)-epsth(i)
689 asrate =
min(one, pm(9,mx)*dt1)
699 IF (dmg_flag == 1)
THEN
701 so1(i) = so1(i)/
max(lbuf%DMGSCL(i),em20)
702 so2(i) = so2(i)/
max(lbuf%DMGSCL(i),em20)
703 so3(i) = so3(i)/
max(lbuf%DMGSCL(i),em20)
704 so4(i) = so4(i)/
max(lbuf%DMGSCL(i),em20)
705 so5(i) = so5(i)/
max(lbuf%DMGSCL(i),em20)
706 so6(i) = so6(i)/
max(lbuf%DMGSCL(i),em20)
709 ELSEIF (dmg_flag == 6)
THEN
711 so1(i) = so1(i)/
max(lbuf%DMGSCL(i+nel*(1-1)),em20)
712 so2(i) = so2(i)/
max(lbuf%DMGSCL(i+nel*(2-1)),em20)
713 so3(i) = so3(i)/
max(lbuf%DMGSCL(i+nel*(3-1)),em20)
714 so4(i) = so4(i)/
max(lbuf%DMGSCL(i+nel*(4-1)),em20)
715 so5(i) = so5(i)/
max(lbuf%DMGSCL(i+nel*(5-1)),em20)
716 so6(i) = so6(i)/
max(lbuf%DMGSCL(i+nel*(6-1)),em20)
725 IF (logical_userl_avail)
THEN
727 CALL eng_userlib_sigeps( mtn,
728 . llt ,npar,nuvar,nfunc,ifunc,
729 . npf ,tf ,tt_local,dt1,uparam,
730 . rho0,rho ,voln,eint,
731 . ep1 ,ep2 ,ep3 ,ep4 ,ep5 ,ep6 ,
732 . de1 ,de2 ,de3 ,de4 ,de5 ,de6 ,
733 . es1 ,es2 ,es3 ,es4 ,es5 ,es6 ,
734 . so1 ,so2 ,so3 ,so4 ,so5 ,so6 ,
735 . s1 ,s2 ,s3 ,s4 ,s5 ,s6 ,
736 . sv1 ,sv2 ,sv3 ,sv4 ,sv5 ,sv6 ,
737 . ssp ,vis ,uvar,off )
742 option=
'/MAT/LAW29 - SOLID '
743 size=len_trim(option)
744 CALL ancmsg(msgid=257,c1=option(1:size),anmode=aninfo)
750 IF(u_tagplas(i)/=0)
THEN
758 ELSEIF(mtn == 30)
THEN
760 IF (logical_userl_avail)
THEN
762 CALL eng_userlib_sigeps( mtn,
763 . llt ,npar,nuvar,nfunc,ifunc,
764 . npf ,tf ,tt_local,dt1,uparam,
765 . rho0,rho ,voln,eint,
766 . ep1 ,ep2 ,ep3 ,ep4 ,ep5 ,ep6 ,
767 . de1 ,de2 ,de3 ,de4 ,de5 ,de6 ,
768 . es1 ,es2 ,es3 ,es4 ,es5 ,es6 ,
769 . so1 ,so2 ,so3 ,so4 ,so5 ,so6 ,
770 . s1 ,s2 ,s3 ,s4 ,s5 ,s6 ,
771 . sv1 ,sv2 ,sv3 ,sv4 ,sv5 ,sv6 ,
772 . ssp ,vis ,uvar,off )
777 option=
'/MAT/LAW30 - SOLID '
778 size=len_trim(option)
779 CALL ancmsg(msgid=257,c1=option(1:size),anmode=aninfo)
785 IF(u_tagplas(i)/=0)
THEN
793 ELSEIF(mtn == 31)
THEN
795 IF (logical_userl_avail)
THEN
797 CALL eng_userlib_sigeps( mtn,
798 . llt ,npar,nuvar,nfunc,ifunc,
799 . npf ,tf ,tt_local,dt1,uparam,
800 . rho0,rho ,voln,eint,
801 . ep1 ,ep2 ,ep3 ,ep4 ,ep5 ,ep6 ,
802 . de1 ,de2 ,de3 ,de4 ,de5 ,de6 ,
803 . es1 ,es2 ,es3 ,es4 ,es5 ,es6 ,
804 . so1 ,so2 ,so3 ,so4 ,so5 ,so6 ,
805 . s1 ,s2 ,s3 ,s4 ,s5 ,s6 ,
806 . sv1 ,sv2 ,sv3 ,sv4 ,sv5 ,sv6 ,
807 . ssp ,vis ,uvar,off )
812 option=
'/MAT/LAW31 - SOLID '
813 size=len_trim(option)
814 CALL ancmsg(msgid=257,c1=option(1:size),anmode=aninfo)
820 IF(u_tagplas(i)/=0)
THEN
829 ELSEIF(mtn == 99)
THEN
831 IF(logical_userl_avail)
THEN
833 IF (ismstr == 10)
THEN
835 fpsxx(i) = one+mfxx(i)
836 fpsyy(i) = one+mfyy(i)
837 fpszz(i) = one+mfzz(i)
839 fpsxy = mfxy(1:mvsiz)
840 fpsyz = mfyz(1:mvsiz)
841 fpsxz = mfxz(1:mvsiz)
842 fpsyx = mfyx(1:mvsiz)
843 fpszy = mfzy(1:mvsiz)
844 fpszx = mfzx(1:mvsiz)
848 IF (isorth /= 0)
THEN
851 2 r21, r22, r23, r31,
866 1 llt ,fpsxx , fpsxy , fpsxz , fpsyx ,
867 2 fpsyy ,fpsyz , fpszx , fpszy , fpszz ,
868 3 upsxx ,upsyy , upszz , upsxy , upsyz ,
872 fpsxx(1:mvsiz) = zero
873 fpsyy(1:mvsiz) = zero
874 fpszz(1:mvsiz) = zero
875 fpsxy(1:mvsiz) = zero
876 fpsyz(1:mvsiz) = zero
877 fpsxz(1:mvsiz) = zero
878 fpsyx(1:mvsiz) = zero
879 fpszy(1:mvsiz) = zero
880 fpszx(1:mvsiz) = zero
881 upsxx(1:mvsiz) = zero
882 upsyy(1:mvsiz) = zero
883 upszz(1:mvsiz) = zero
884 upsxy(1:mvsiz) = zero
885 upsyz(1:mvsiz) = zero
886 upsxz(1:mvsiz) = zero
890 CALL eng_userlib_get_law_var(
891 * ncycle, imat,iptr, ipts,iptt,
892 * r11, r12, r13, r21, r22, r23, r31,
893 * r32, r33, so1, so2, so3, so4, so5,
894 * so6, ep1, ep2, ep3, ep4, ep5, ep6,
895 * es1, es2, es3, es4, es5, es6, de1,
896 * de2, de3, de4, de5, de6, rho0, s1,
897 * s2, s3, s4, s5, s6, sv1, sv2,
898 * sv3, sv4, sv5, sv6 )
900 IF (dlibtkvers >= 1301501260)
THEN
902 CALL eng_userlib_get_law_var_2(
903 * fpsxx ,mvsiz ,fpsyy ,mvsiz ,
904 * fpszz ,mvsiz ,fpsxy ,mvsiz ,fpsyz ,mvsiz ,fpszx ,mvsiz,
905 * fpsyx ,mvsiz ,fpszy ,mvsiz ,fpsxz ,mvsiz ,upsxx ,mvsiz,
906 * upsyy ,mvsiz ,upszz ,mvsiz ,upsxy ,mvsiz ,upsyz ,mvsiz,
907 * upsxz ,mvsiz ,el_temp,nel ,dvol ,mvsiz ,el_bfrac,sizbfrac,
908 * el_tb ,siztb ,bid_arr,siznul,bid_arr,siznul,bid_arr ,siznul,
909 * bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,bid_arr ,siznul,
910 * bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,bid_arr ,siznul,
911 * bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,bid_arr ,siznul,
912 * bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,bid_arr ,siznul,
913 * bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,bid_arr ,siznul,
914 * bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,bid_arr ,siznul,
915 * bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,bid_arr ,siznul,
916 * bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,bid_arr ,siznul,
917 * bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,bid_arr ,siznul,
918 * bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,bid_arr ,siznul,
919 * bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,bid_arr ,siznul,
920 * bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,bid_arr ,siznul,
921 * bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,bid_arr ,siznul,
922 * bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,bid_arr ,siznul,
923 * bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,bid_arr ,siznul,
924 * bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,bid_arr ,siznul,
925 * bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,bid_arr ,siznul,
926 * bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,bid_arr ,siznul,
927 * bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,bid_arr ,siznul)
932 CALL eng_userlib_sigeps99(
933 * llt ,npar ,nuvar ,ilaw_user ,nfunc,
934 * ifunc ,npf ,tf ,tt_local ,dt1,
935 * uparam ,rho ,voln ,eint ,ngl ,
936 * ssp ,vis ,uvar ,off ,sigy ,
940 CALL eng_userlib_set_law_var(
941 * s1, s2, s3, s4, s5, s6,
942 * sv1, sv2, sv3,sv4, sv5, sv6,
945 IF(dlibtkvers >= 1301501260)
THEN
947 CALL eng_userlib_set_law_var_2(el_temp,nel,el_bfrac,sizbfrac,
948 * bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,
949 * bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,
950 * bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,
951 * bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,
952 * bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,
953 * bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,
954 * bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,
955 * bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,
956 * bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,
957 * bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,
958 * bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,
959 * bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,
960 * bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,
961 * bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,
962 * bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,
963 * bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,
964 * bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,
965 * bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,
966 * bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,
967 * bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,
968 * bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,
969 * bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,
970 * bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,
971 * bid_arr,siznul,bid_arr,siznul,bid_arr,siznul,bid_arr,siznul )
973 IF (sizbfrac > 0)
THEN
975 elbuf_tab(ng)%GBUF%BFRAC(1:nel) = el_bfrac(1:nel)
985 option=
'/MAT/'//iuser_key//
' - SOLID'
986 size=len_trim(option)
987 CALL ancmsg(msgid=257,c1=option(1:size),anmode=aninfo)
993 ELSE IF (mtn == 200)
THEN
995 IF(mds_avail == 1 )
THEN
996 ALLOCATE(ismstr10_fp(15,nel))
1001 3 tz, r11, r21, r31,
1002 4 r12, r22, r32, r13,
1006 IF (ismstr == 10)
THEN
1008 fpsxx(i) = one+mfxx(i)
1009 fpsyy(i) = one+mfyy(i)
1010 fpszz(i) = one+mfzz(i)
1012 fpsxy = mfxy(1:mvsiz)
1013 fpsyz = mfyz(1:mvsiz)
1014 fpsxz = mfxz(1:mvsiz)
1015 fpsyx = mfyx(1:mvsiz)
1016 fpszy = mfzy(1:mvsiz)
1017 fpszx = mfzx(1:mvsiz)
1038 IF (isorth /= 0)
THEN
1040 1 gama, r11, r12, r13,
1041 2 r21, r22, r23, r31,
1047 . ismstr10_fp(1,1),ismstr10_fp(2,1),ismstr10_fp(3,1),
1048 . ismstr10_fp(4,1),ismstr10_fp(5,1),ismstr10_fp(6,1),
1049 . ismstr10_fp(7,1),ismstr10_fp(8,1),ismstr10_fp(9,1),
1056 * ismstr10_fp( 1,1), ismstr10_fp( 4,1), ismstr10_fp( 6,1), ismstr10_fp( 7,1),
1057 * ismstr10_fp( 2,1), ismstr10_fp( 5,1), ismstr10_fp( 9,1), ismstr10_fp( 8,1),ismstr10_fp( 3,1),
1058 * ismstr10_fp(10,1), ismstr10_fp(11,1), ismstr10_fp(12,1), ismstr10_fp(13,1),ismstr10_fp(14,1),
1059 * ismstr10_fp(15,1) )
1062 ismstr10_fp( 1,1) = zero
1063 ismstr10_fp( 2,1) = zero
1064 ismstr10_fp( 3,1) = zero
1065 ismstr10_fp( 4,1) = zero
1066 ismstr10_fp( 5,1) = zero
1067 ismstr10_fp( 6,1) = zero
1068 ismstr10_fp( 7,1) = zero
1069 ismstr10_fp( 8,1) = zero
1070 ismstr10_fp( 9,1) = zero
1071 ismstr10_fp(10,1) = zero
1072 ismstr10_fp(11,1) = zero
1073 ismstr10_fp(12,1) = zero
1074 ismstr10_fp(13,1) = zero
1075 ismstr10_fp(14,1) = zero
1076 ismstr10_fp(15,1) = zero
1080 CALL eng_mds_sigeps_s( ncycle ,imat, ngl,nel ,
1081 * iptr , ipts , iptt , npar ,nuvar ,nfunc ,ifunc ,
1082 * npf , tf , tt , dt1 , uparam , uvar ,
1083 * rho0 , rho , voln , eint , el_temp , amu ,
1084 * ep1 , ep2 , ep3 , ep4 , ep5 , ep6 ,
1085 * de1 , de2 , de3 , de4 , de5 , de6 ,
1086 * es1 , es2 , es3 , es4 , es5 , es6 ,
1087 * so1 , so2 , so3 , so4 , so5 , so6 ,
1088 * s1 , s2 , s3 , s4 , s5 , s6 ,
1089 * sv1 , sv2 , sv3 , sv4 , sv5 , sv6 ,
1090 * ssp , vis , off , r11 , r12 , r13 ,
1091 * r21 , r22 , r23 , r31 , r32 , r33 ,
1092 * ismstr , ismstr10_fp ,defp , dpla , sigy ,
1093 * additional_flt_parameters, additional_int_parameters )
1096 CALL mds_userlib_name_get(mds_libname,length)
1097 CALL ancmsg(msgid=287,anmode=aninfo,
1098 . c1=mds_libname(1:length))
1106 IF ((itask==0).AND.(imon_mat==1))
CALL startime(timers,121)
1112 le_max(1:nel) = nloc_dmg%LE_MAX(mat(1))
1113 el_len => le_max(1:nel)
1116 el_len => deltax(1:nel)
1119 IF (elbuf_tab(ng)%BUFLY(ilay)%L_PLA > 0)
THEN
1123 dpla(i) =
max(varnl(i),zero)
1125 el_pla => lbuf%PLANL(1:nel)
1129 dpla(i) = defp(i) - defp0(i)
1131 el_pla => defp(1:nel)
1142 dav = (ep1(i)+ep2(i)+ep3(i))*third
1149 epsp1(i) =half*(e1**2+e2**2+e3**2) +e4**2+e5**2+e6**2
1150 epsp1(i) = sqrt(three*epsp1(i))*two_third
1155 IF (elbuf_tab(ng)%BUFLY(ilay)%L_PLA > 0)
THEN
1158 epsp1(i) = lbuf%EPSDNL(i)
1163 uvarf => fbuf%FLOC(ir)%VAR
1164 irupt = fbuf%FLOC(ir)%ILAWF
1165 nvarf = fbuf%FLOC(ir)%NVAR
1166 dfmax => fbuf%FLOC(ir)%DAMMX
1167 damini => fbuf%FLOC(ir)%DAMINI
1168 tdel => fbuf%FLOC(ir)%TDEL
1169 fld_idx => fbuf%FLOC(ir)%INDX
1170 foff => fbuf%FLOC(ir)%OFF
1171 dam => fbuf%FLOC(ir)%DAM
1172 lf_dammx = fbuf%FLOC(ir)%LF_DAMMX
1174 failparam => mat_elem%MAT_PARAM(mx)%FAIL(ir)
1175 npar = mat_elem%MAT_PARAM(mx)%FAIL(ir)%NUPARAM
1176 nipar = mat_elem%MAT_PARAM(mx)%FAIL(ir)%NIPARAM
1177 uparamf => mat_elem%MAT_PARAM(mx)%FAIL(ir)%UPARAM(1:npar)
1178 iparamf => mat_elem%MAT_PARAM(mx)%FAIL(ir)%IPARAM(1:nipar)
1179 nfunc = mat_elem%MAT_PARAM(mx)%FAIL(ir)%NFUNC
1180 ifunc => mat_elem%MAT_PARAM(mx)%FAIL(ir)%IFUNC(1:nfunc)
1181 ntabl_fail = mat_elem%MAT_PARAM(mx)%FAIL(ir)%NTABLE
1182 itabl_fail => mat_elem%MAT_PARAM(mx)%FAIL(ir)%TABLE(1:ntabl_fail)
1187 2 tt ,dt1 ,uparamf,ngl ,
1188 4 s1 ,s2 ,s3 ,s4 ,s5 ,s6,
1189 5 dpla,epsp1,tstar,uvarf,off,
1191 ELSEIF (irupt == 2)
THEN
1194 2 tt ,dt1 ,uparamf,ngl ,
1195 4 s1 ,s2 ,s3 ,s4 ,s5 ,s6,
1196 5 uvarf,off ,dfmax,tdel )
1197 ELSEIF (irupt == 3)
THEN
1200 2 tt ,dt1 ,uparamf,ngl ,
1201 4 s1 ,s2 ,s3 ,s4 ,s5 ,s6,
1202 5 dpla,uvarf,off,dfmax,tdel )
1203 ELSEIF (irupt == 4)
THEN
1205 IF (logical_userl_avail)
THEN
1206 user_uelr(1:llt)=gbuf%UELR(1:llt)
1209 CALL eng_userlib_flaw(irupt,llt ,npar,nuvarr,nfunc,ifunc,
1210 2 npf ,tf ,tt_local ,dt1 ,uparamf,
1211 3 ngl ,ibidon1,ibidon2,ibidon3 ,ibidon4,
1212 4 ep1 ,ep2 ,ep3 ,ep4 ,ep5 ,ep6 ,
1213 5 es1 ,es2 ,es3 ,es4 ,es5 ,es6 ,
1214 6 s1 ,s2 ,s3 ,s4 ,s5 ,s6 ,
1215 7 defp ,dpla,epsp1,uvarf,off ,
1216 8 deltax,voln,user_uelr,dfmax,bidon5)
1217 gbuf%UELR(1:llt) = user_uelr(1:llt)
1226! 8 deltax,voln,gbuf%UELR,dfmax,bidon5)
1230 option=
'/FAIL/USER1 - SOLID '
1231 size=len_trim(option)
1232 CALL ancmsg(msgid=257,c1=option(1:size),anmode=aninfo)
1237 ELSEIF (irupt == 5)
THEN
1239 IF (logical_userl_avail)
THEN
1241 user_uelr(1:llt)=gbuf%UELR(1:llt)
1242 CALL eng_userlib_flaw(irupt,llt ,npar,nuvarr,nfunc,ifunc,
1243 2 npf ,tf ,tt_local ,dt1 ,uparamf,
1244 3 ngl ,ibidon1,ibidon2,ibidon3 ,ibidon4,
1245 4 ep1 ,ep2 ,ep3 ,ep4 ,ep5 ,ep6 ,
1246 5 es1 ,es2 ,es3 ,es4 ,es5 ,es6 ,
1247 6 s1 ,s2 ,s3 ,s4 ,s5 ,s6 ,
1248 7 defp ,dpla,epsp1,uvarf,off ,
1249 8 deltax,voln,user_uelr,dfmax,bidon5)
1250 gbuf%UELR(1:llt) = user_uelr(1:llt)
1263 option=
'/FAIL/USER2 - SOLID '
1264 size=len_trim(option)
1265 CALL ancmsg(msgid=257,c1=option(1:size),anmode=aninfo)
1270 ELSEIF (irupt == 6)
THEN
1272 IF (logical_userl_avail)
THEN
1274 user_uelr(1:llt)=gbuf%UELR(1:llt)
1275 CALL eng_userlib_flaw(irupt,llt ,npar,nuvarr,nfunc,ifunc,
1276 2 npf ,tf ,tt_local ,dt1 ,uparamf,
1277 3 ngl ,ibidon1,ibidon2,ibidon3 ,ibidon4,
1278 4 ep1 ,ep2 ,ep3 ,ep4 ,ep5 ,ep6 ,
1279 5 es1 ,es2 ,es3 ,es4 ,es5 ,es6 ,
1280 6 s1 ,s2 ,s3 ,s4 ,s5 ,s6 ,
1281 7 defp ,dpla,epsp1,uvarf,off ,
1282 8 deltax,voln,user_uelr,dfmax,bidon5)
1283 gbuf%UELR(1:llt) = user_uelr(1:llt)
1285!
CALL f06law(llt ,npar,nuvarr,nfunc,ifunc,
1296 option='/fail/user3 - solid
'
1297 SIZE=LEN_TRIM(OPTION)
1298 CALL ANCMSG(MSGID=257,C1=OPTION(1:SIZE),ANMODE=ANINFO)
1303 ELSEIF (IRUPT == 7)THEN
1304 ELSEIF (IRUPT == 8)THEN
1306 CALL FAIL_SPALLING_S(LLT ,NPAR,
1308 4 S1 ,S2 ,S3 ,S4 ,S5 ,S6 ,
1309 5 DPLA,EPSP1,TSTAR,OFF ,
1310 6 LF_DAMMX ,DFMAX,TDEL ,OFFG ,
1311 7 NIPAR ,IPARAMF,MVSIZ)
1312 ELSEIF (IRUPT == 9)THEN
1314 CALL FAIL_WIERZBICKI_S(LLT ,NPAR,NUVARR,
1315 2 TT ,DT1 ,UPARAMF,NGL ,
1316 4 S1 ,S2 ,S3 ,S4 ,S5 ,S6,
1317 5 DPLA,DEFP,UVARF,OFF ,DFMAX,
1319 ELSEIF (IRUPT == 10)THEN
1321 CALL FAIL_TENSSTRAIN_S(LLT ,NPAR,NVARF,NFUNC,IFUNC ,
1322 2 NPF ,TF ,TT ,DT1 ,UPARAMF,
1323 3 NGL ,DELTAX ,TSTAR ,ISMSTR,
1324 4 ES1 ,ES2 ,ES3 ,ES4 ,ES5 ,ES6 ,
1325 5 S1 ,S2 ,S3 ,S4 ,S5 ,S6 ,
1326 6 EPSP1,UVARF,OFF ,DFMAX,TDEL ,
1327 7 MFXX ,MFXY ,MFXZ ,MFYX ,MFYY ,MFYZ ,
1328 8 MFZX ,MFZY ,MFZZ ,LBUF%DMGSCL)
1329 ELSEIF (IRUPT == 11)THEN
1332 1 NEL ,NPAR ,NVARF ,NFUNC ,IFUNC ,NPF ,
1333 2 TF ,TT ,DT1 ,UPARAMF ,NGL ,EPSP1 ,
1334 3 UVARF ,OFF ,DFMAX ,TDEL ,LBUF%DMGSCL,
1335 4 S1 ,S2 ,S3 ,S4 ,S5 ,S6 ,
1336 5 DE1 ,DE2 ,DE3 ,DE4 ,DE5 ,DE6 )
1337 ELSEIF (IRUPT == 13) THEN
1339 CALL FAIL_CHANGCHANG_S(
1340 1 NEL ,NPAR ,NVARF ,UPARAMF ,UVARF ,
1341 2 TT ,IPG ,ILAY ,NPG ,NGL ,
1342 3 LBUF%DMGSCL,DFMAX ,OFF ,LBUF%OFF ,GBUF%NOFF,
1343 4 S1 ,S2 ,S3 ,S4 ,S6 ,
1345 ELSEIF(IRUPT == 14)THEN
1348 EPSP1(I) = MAX(ABS(EP1(I)),ABS(EP2(I)),ABS(EP3(I)),EM20)
1351 1 NEL ,NVARF ,ILAY ,NPG ,TT ,
1352 2 DT1 ,UPARAMF ,NGL ,OFF ,GBUF%NOFF,
1353 3 S1 ,S2 ,S3 ,S4 ,S5 ,S6 ,
1354 4 UVARF ,NPAR ,DFMAX ,TDEL ,EPSP1 ,LF_DAMMX )
1355 ELSEIF(IRUPT == 16)THEN
1358 1 NEL ,NVARF ,ILAY ,NPG ,TT ,
1359 2 DT1 ,UPARAMF ,NGL ,OFF ,GBUF%NOFF,
1360 3 S1 ,S2 ,S3 ,S4 ,S5 ,S6 ,
1361 4 UVARF ,NPAR ,DFMAX ,LF_DAMMX ,TDEL )
1362 ELSEIF (IRUPT == 23) THEN
1365 1 LLT ,NVARF ,NPF ,TF ,TT ,
1366 2 UPARAMF ,NGL ,EL_LEN ,
1367 3 S1 ,S2 ,S3 ,S4 ,S5 ,S6,
1368 4 DPLA ,EPSP1 ,TSTAR ,UVARF ,NTABL_FAIL,ITABL_FAIL,
1369 5 OFF ,TABLE ,DFMAX ,TDEL ,NFUNC ,IFUNC )
1370 ELSEIF (IRUPT == 24) THEN
1372 CALL FAIL_ORTHSTRAIN(
1373 1 LLT ,NPAR ,NVARF ,NFUNC ,IFUNC ,
1374 2 NPF ,TF ,TT ,DT1 ,UPARAMF ,ISMSTR ,
1375 3 EP1 ,EP2 ,EP3 ,EP4 ,EP5 ,EP6 ,
1376 4 ES1 ,ES2 ,ES3 ,ES4 ,ES5 ,ES6 ,
1377 5 S1 ,S2 ,S3 ,S4 ,S5 ,S6 ,
1378 6 UVARF ,OFF ,IPG ,NGL ,DFMAX ,TDEL ,
1379 7 GBUF%UELR,NPG ,DELTAX ,LF_DAMMX )
1380 ELSEIF (IRUPT == 27) THEN
1384 2 DT1 ,UPARAMF ,NGL ,
1385 3 S1 ,S2 ,S3 ,S4 ,S5 ,S6,
1386 4 DEFP ,DPLA ,EPSP1 ,UVARF ,
1387 5 OFF ,DFMAX ,TDEL )
1388 ELSEIF (IRUPT == 29) THEN
1390 CALL FAIL_SAHRAEI_S(
1391 1 LLT ,NFUNC ,IFUNC ,NPF ,TF ,
1392 2 TT ,NGL ,UPARAMF ,
1393 3 ES1 ,ES2 ,ES3 ,ES4 ,ES5 ,ES6 ,
1394 4 OFF ,DFMAX ,TDEL ,DELTAX ,
1396 ELSEIF (IRUPT == 30) THEN
1399 1 LLT ,NPAR ,NVARF ,NFUNC ,IFUNC ,EL_LEN ,
1400 2 NPF ,TF ,TT ,UPARAMF ,TDEL ,
1401 3 NGL ,DPLA ,UVARF ,OFF ,DFMAX ,LBUF%DMGSCL,
1402 4 S1 ,S2 ,S3 ,S4 ,S5 ,S6 )
1403 ELSEIF (IRUPT == 33) THEN
1405 CALL FAIL_MULLINS_OR_S(
1406 1 LLT ,NPAR ,NVARF ,
1407 2 TT ,DT1 ,UPARAMF ,NGL ,
1409 4 S5 ,S6 ,UVARF ,OFF ,
1411 ELSEIF (IRUPT == 34) THEN
1413 CALL FAIL_COCKROFT_S(LLT ,NPAR ,NVARF,
1414 1 TT ,DT1 ,UPARAMF ,NGL ,
1415 3 EP1 ,EP2 ,EP3 ,EP4 ,EP5 ,EP6 ,
1416 4 ES1 ,ES2 ,ES3 ,ES4 ,ES5 ,ES6 ,
1417 5 S1 ,S2 ,S3 ,S4 ,S5 ,S6 ,
1418 6 DEFP ,DPLA ,EPSP ,UVARF ,OFF ,
1420 ELSEIF (IRUPT == 36) THEN
1423 . LLT ,NPAR ,NVARF ,TT ,DT1 ,UPARAMF,
1424 . ES1 ,ES2 ,ES3 ,ES4 ,ES5 ,ES6 ,
1425 . S1 ,S2 ,S3 ,S4 ,S5 ,S6 ,
1426 . UVARF ,OFF ,NGL ,DFMAX ,ISMSTR )
1428 ELSEIF (IRUPT == 37) THEN
1430 CALL FAIL_TAB_OLD_S(
1431 1 LLT ,NVARF ,NPF ,TF ,TT ,
1432 2 UPARAMF ,NGL ,EL_LEN ,
1433 3 S1 ,S2 ,S3 ,S4 ,S5 ,S6,
1434 4 DEFP ,DPLA ,EPSP1 ,TSTAR ,UVARF ,
1435 5 OFF ,DFMAX ,TDEL ,
1438 ELSEIF (IRUPT == 38) THEN
1440 CALL FAIL_ORTHBIQUAD_S(
1441 1 LLT ,NPAR ,NVARF ,NFUNC ,IFUNC ,
1442 2 NPF ,TF ,TT ,DT1 ,UPARAMF ,
1443 3 NGL ,DPLA ,EPSP1 ,UVARF ,OFF ,
1444 4 S1 ,S2 ,S3 ,S4 ,S5 ,S6 ,
1445 5 DFMAX ,TDEL ,EL_LEN )
1447 ELSEIF (IRUPT == 39) THEN
1450 1 LLT ,NPAR ,NVARF ,NFUNC ,IFUNC ,LBUF%OFF ,
1451 2 NPF ,TF ,TT ,DT1 ,UPARAMF ,IPG ,
1452 3 NGL ,GBUF%DT ,EPSP1 ,UVARF ,OFF ,NPG ,
1453 4 ES1 ,ES2 ,ES3 ,ES4 ,ES5 ,ES6 ,
1454 5 S1 ,S2 ,S3 ,S4 ,S5 ,S6 ,
1455 6 EL_TEMP ,VOLN ,DFMAX ,TDEL ,DELTAX ,TABLE ,
1456 7 IR ,ELBUF_TAB(NG),ILAY ,NTABL_FAIL,ITABL_FAIL,LF_DAMMX,
1459 ELSEIF (IRUPT == 40) THEN
1462 1 LLT ,NPAR ,NVARF ,TT ,DT1 ,UPARAMF ,
1463 2 S1 ,S2 ,S3 ,S4 ,S5 ,S6 ,
1464 3 NGL ,DPLA ,UVARF ,OFF ,DFMAX ,TDEL )
1466 ELSEIF (IRUPT == 41) THEN
1469 1 LLT ,NPAR ,NVARF ,NFUNC ,IFUNC ,
1470 2 NPF ,TABLE ,TF ,TT ,UPARAMF ,
1471 3 NGL ,EL_LEN ,DPLA ,EPSP1 ,UVARF ,
1472 5 S1 ,S2 ,S3 ,S4 ,S5 ,S6 ,
1473 6 EL_TEMP ,OFF ,DFMAX ,TDEL ,LBUF%DMGSCL,
1474 7 GBUF%UELR,IPG ,NPG ,LBUF%OFF ,NTABL_FAIL,ITABL_FAIL,
1477 ELSEIF (IRUPT == 42) THEN
1480 1 NEL ,NPAR ,NVARF ,
1481 2 TABLE ,NTABL_FAIL,ITABL_FAIL,TT ,UPARAMF ,
1482 3 NGL ,EL_LEN ,DPLA ,EPSP1 ,UVARF ,
1483 5 S1 ,S2 ,S3 ,S4 ,S5 ,S6 ,
1484 6 EL_PLA ,EL_TEMP ,SIGY ,OFF ,DFMAX ,
1485 7 TDEL ,LBUF%DMGSCL,GBUF%UELR,IPG ,NPG ,
1486 8 LBUF%OFF ,DAMINI ,GBUF%VOL ,INLOC )
1488 ELSEIF (IRUPT == 43) THEN
1490 CALL FAIL_SYAZWAN_S(
1491 1 NEL ,UPARAMF ,NPAR ,UVARF ,NVARF ,
1492 2 TT ,NGL ,IPG ,DPLA ,TDEL ,
1493 3 S1 ,S2 ,S3 ,S4 ,S5 ,S6 ,
1494 4 DFMAX ,NFUNC ,IFUNC ,EL_LEN ,OFF ,
1495 5 NPF ,TF ,GBUF%UELR,NPG ,LBUF%OFF)
1496 ELSEIF (IRUPT == 44) THEN
1499 1 NEL ,NVARF ,IPG ,ILAY ,NPG ,TT ,
1500 2 DT1 ,UPARAMF ,NGL ,OFF ,LBUF%OFF ,GBUF%NOFF,
1501 3 S1 ,S2 ,S3 ,S4 ,S5 ,S6 ,
1502 4 UVARF ,NPAR ,DFMAX ,LF_DAMMX ,TDEL ,LBUF%DMGSCL)
1504 ELSEIF (IRUPT == 45) THEN
1506 CALL FAIL_TSAIHILL_S(
1507 1 NEL ,NVARF ,IPG ,ILAY ,NPG ,TT ,
1508 2 DT1 ,UPARAMF ,NGL ,OFF ,LBUF%OFF ,GBUF%NOFF,
1509 3 S1 ,S2 ,S3 ,S4 ,S5 ,S6 ,
1510 4 UVARF ,NPAR ,DFMAX ,LF_DAMMX ,TDEL ,LBUF%DMGSCL)
1512 ELSEIF (IRUPT == 46) THEN
1514 CALL FAIL_HOFFMAN_S(
1515 1 NEL ,NVARF ,IPG ,ILAY ,NPG ,TT ,
1516 2 DT1 ,UPARAMF ,NGL ,OFF ,LBUF%OFF ,GBUF%NOFF,
1517 3 S1 ,S2 ,S3 ,S4 ,S5 ,S6 ,
1518 4 UVARF ,NPAR ,DFMAX ,LF_DAMMX ,TDEL ,LBUF%DMGSCL)
1520 ELSEIF (IRUPT == 47) THEN
1522 CALL FAIL_MAXSTRAIN_S(
1523 1 NEL ,NVARF ,IPG ,ILAY ,NPG ,TT ,
1524 2 DT1 ,UPARAMF ,NGL ,OFF ,LBUF%OFF ,GBUF%NOFF,
1525 3 ES1 ,ES2 ,ES3 ,ES4 ,ES5 ,ES6 ,
1526 4 UVARF ,NPAR ,DFMAX ,LF_DAMMX ,TDEL ,LBUF%DMGSCL)
1528 ELSEIF (IRUPT == 48) THEN
1530 CALL FAIL_ORTHENERG_S(
1531 1 NEL ,NPAR ,NVARF ,UPARAMF ,UVARF ,NGL ,
1532 2 NPG ,IPG ,ILAY ,OFF ,LBUF%OFF ,GBUF%NOFF,
1533 3 DE1 ,DE2 ,DE3 ,DE4 ,DE5 ,DE6 ,
1534 5 S1 ,S2 ,S3 ,S4 ,S5 ,S6 ,
1535 6 TT ,TDEL ,DFMAX ,DELTAX ,LBUF%DMGSCL)
1537 ELSEIF (IRUPT == 50) THEN
1539 CALL FAIL_LEMAITRE_S(
1540 1 NEL ,NPAR ,UPARAMF ,TT,NGL,MAT_ELEM%MAT_PARAM(MX),
1541 2 S1 ,S2 ,S3 ,S4 ,S5 ,S6 ,
1542 3 DPLA ,EL_PLA ,LBUF%OFF ,OFF ,DFMAX ,TDEL ,
1543 4 NIPAR ,IPARAMF ,LBUF%DMGSCL,GBUF%NOFF,NPG )
1545 ELSEIF (IRUPT == 51) THEN
1547 CALL FAIL_COMPOSITE_S(
1548 1 NEL ,FAILPARAM,NVARF ,UVARF ,TT ,NGL ,
1549 2 IPG ,ILAY ,NPG ,TDEL ,OFF ,LBUF%OFF ,
1550 3 S1 ,S2 ,S3 ,S4 ,S5 ,S6 ,
1551 4 LBUF%DMGSCL,LF_DAMMX,DFMAX ,GBUF%NOFF)
1554 ENDDO ! IR = 1,NFAIL
1556.AND.
IF ((ITASK==0)(IMON_MAT==1))CALL STOPTIME(TIMERS,121)
1560.OR.
IF ((MAT_ELEM%MAT_PARAM(MAT(1))%IVISC > 0)(IDAMP_FREQ_RANGE > 0)) THEN
1561 CALL VISCMAIN(MAT_ELEM%MAT_PARAM(MAT(1))%VISC ,NEL ,
1562 . NVARVIS ,VBUF%VAR,RHO0 ,VIS ,SSP ,DT1 ,
1563 . EP1 ,EP2 ,EP3 ,EP4 ,EP5 ,EP6 ,
1564 . DE1 ,DE2 ,DE3 ,DE4 ,DE5 ,DE6 ,
1565 . SVO1 ,SVO2 ,SVO3 ,SVO4 ,SVO5 ,SVO6 ,
1566 . SV1 ,SV2 ,SV3 ,SV4 ,SV5 ,SV6 ,
1567 . MFXX ,MFXY ,MFXZ ,MFYX ,MFYY ,MFYZ ,
1568 . MFZX ,MFZY ,MFZZ ,
1569 . S1 ,S2 ,S3 ,S4 ,S5 ,S6 ,
1570 . DAMP_BUF,IDAMP_FREQ_RANGE,MVSIZ,ET,MAT_ELEM%MAT_PARAM(IMAT)%YOUNG,
1571 . MAT_ELEM%MAT_PARAM(IMAT)%SHEAR,MAT_ELEM%MAT_PARAM(MAT(1))%IVISC)
1578 CALL NSVISUL(LLT ,OFF ,RHO ,GEO ,
1579 2 PID ,SSP ,AIRE ,VOLN ,EP1 ,
1580 3 EP2 ,EP3 ,EP4 ,EP5 ,EP6 ,
1581 4 SV1 ,SV2 ,SV3 ,SV4 ,SV5 ,
1582 5 SV6 ,S3 ,ES3 ,RHO0 ,RHOREF )
1588.AND.
IF ((OFF_OLD(I) > ZERO) (OFF(I) == ZERO)) THEN
1595 ! -> Isotropic stress softening
1596 IF (DMG_FLAG == 1) THEN
1598 S1(I) = S1(I)*LBUF%DMGSCL(I)
1599 S2(I) = S2(I)*LBUF%DMGSCL(I)
1600 S3(I) = S3(I)*LBUF%DMGSCL(I)
1601 S4(I) = S4(I)*LBUF%DMGSCL(I)
1602 S5(I) = S5(I)*LBUF%DMGSCL(I)
1603 S6(I) = S6(I)*LBUF%DMGSCL(I)
1605 ! -> Orthotropic stress softening
1606 ELSEIF (DMG_FLAG == 6) THEN
1608 S1(I) = S1(I)*LBUF%DMGSCL(I+NEL*(1-1))
1609 S2(I) = S2(I)*LBUF%DMGSCL(I+NEL*(2-1))
1610 S3(I) = S3(I)*LBUF%DMGSCL(I+NEL*(3-1))
1611 S4(I) = S4(I)*LBUF%DMGSCL(I+NEL*(4-1))
1612 S5(I) = S5(I)*LBUF%DMGSCL(I+NEL*(5-1))
1613 S6(I) = S6(I)*LBUF%DMGSCL(I+NEL*(6-1))
1617 IF (ISORTH /= 0) THEN
1620 SIGL(I,1) = S1(I)*OFF(I)
1621 SIGL(I,2) = S2(I)*OFF(I)
1622 SIGL(I,3) = S3(I)*OFF(I)
1623 SIGL(I,4) = S4(I)*OFF(I)
1624 SIGL(I,5) = S5(I)*OFF(I)
1625 SIGL(I,6) = S6(I)*OFF(I)
1626 SV1(I) = SV1(I)*OFF(I)
1627 SV2(I) = SV2(I)*OFF(I)
1628 SV3(I) = SV3(I)*OFF(I)
1629 SV4(I) = SV4(I)*OFF(I)
1630 SV5(I) = SV5(I)*OFF(I)
1631 SV6(I) = SV6(I)*OFF(I)
1635 & s1 ,s2 ,s3 , s4 ,s5 ,s6 ,
1640 & sv1 ,sv2 ,sv3 , sv4 ,sv5 ,sv6 ,
1646 SV1(I) = SV1(I)*OFF(I)
1647 SV2(I) = SV2(I)*OFF(I)
1648 SV3(I) = SV3(I)*OFF(I)
1649 SV4(I) = SV4(I)*OFF(I)
1650 SV5(I) = SV5(I)*OFF(I)
1651 SV6(I) = SV6(I)*OFF(I)
1657 SIG(I,1) = S1(I)*OFF(I)
1658 SIG(I,2) = S2(I)*OFF(I)
1659 SIG(I,3) = S3(I)*OFF(I)
1660 SIG(I,4) = S4(I)*OFF(I)
1661 SIG(I,5) = S5(I)*OFF(I)
1662 SIG(I,6) = S6(I)*OFF(I)
1663 SVIS(I,1) = SV1(I)*OFF(I)
1664 SVIS(I,2) = SV2(I)*OFF(I)
1665 SVIS(I,3) = SV3(I)*OFF(I)
1666 SVIS(I,4) = SV4(I)*OFF(I)
1667 SVIS(I,5) = SV5(I)*OFF(I)
1668 SVIS(I,6) = SV6(I)*OFF(I)
1673 VISCTYPE = MAT_ELEM%MAT_PARAM(MAT(1))%IVISC
1674.OR..OR.
IF (ISVIS > 0 VISCTYPE == 1 VISCTYPE == 3) THEN
1676 SIGV(I,1) = SVIS(I,1)
1677 SIGV(I,2) = SVIS(I,2)
1678 SIGV(I,3) = SVIS(I,3)
1679 SIGV(I,4) = SVIS(I,4)
1680 SIGV(I,5) = SVIS(I,5)
1681 SIGV(I,6) = SVIS(I,6)
1684 IF (MAT_ELEM%MAT_PARAM(MAT(1))%IVISC > 0) THEN
1686 SVISC(I,1) = SVIS(I,1)
1687 SVISC(I,2) = SVIS(I,2)
1688 SVISC(I,3) = SVIS(I,3)
1689 SVISC(I,4) = SVIS(I,4)
1690 SVISC(I,5) = SVIS(I,5)
1691 SVISC(I,6) = SVIS(I,6)
1697 IF (ELBUF_TAB(NG)%BUFLY(ILAY)%L_PLA > 0) THEN
1700 IF (OFF(I) == ONE) THEN
1713 IF (SSP(I) == ZERO) SSP(I)=SQRT(C1(I)/RHO0(I))
1722 1 PM, OFF, RHO, BID1,
1723 2 EL_TEMP, SSP, BID3, STIFN,
1724 3 DT2T, NELTST, ITYPTST, AIRE,
1725 4 OFFG, GEO, PID, VOLN,
1726 5 VD2, DELTAX, VIS, D1,
1727 6 D2, D3, PNEW, PSH,
1728 7 MAT, NGL, Q, SSP_EQ,
1729 8 VOL, MSSA, DMELS, IGEO,
1730 9 FACQ0, CONDE, GBUF%DT, GBUF%G_DT,
1731 A IPM, RHOREF, RHOSP, NEL,
1732 B ITY, ISMSTR, JTUR, JTHE,
1733 C JSMS, NPG , glob_therm)
1734!------------------------------------------------
1737 1 PM, OFF, RHO, BID1,
1738 2 EL_TEMP, BID3, STIFN, DT2T,
1739 3 NELTST, ITYPTST, OFFG, GEO,
1740 4 PID, MUMAX, SSP, VOLN,
1741 5 VD2, DELTAX, VIS, D1,
1742 6 D2, D3, PNEW, PSH,
1743 7 MAT, NGL, Q, SSP_EQ,
1744 8 GBUF%G_DT,GBUF%DT, NEL, ITY,
1749 P2 = -(SOLD1(I)+SIG(I,1)+SOLD2(I)+SIG(I,2)+SOLD3(I)+SIG(I,3))* THIRD
1750 E1 = D1(I)*(SOLD1(I)+SIG(I,1) + P2+TWO*SVIS(I,1))
1751 E2 = D2(I)*(SOLD2(I)+SIG(I,2) + P2+TWO*SVIS(I,2))
1752 E3 = D3(I)*(SOLD3(I)+SIG(I,3) + P2+TWO*SVIS(I,3))
1753 E4 = D4(I)*(SOLD4(I)+SIG(I,4) + TWO*SVIS(I,4))
1754 E5 = D5(I)*(SOLD5(I)+SIG(I,5) + TWO*SVIS(I,5))
1755 E6 = D6(I)*(SOLD6(I)+SIG(I,6) + TWO*SVIS(I,6))
1756 EINC = VOL_AVG(I)*DT1 * (E1+E2+E3+E4+E5+E6+E7(I))
1757 . - DVOL(I)*(Q(I) + QOLD(I) + P2)
1758 EINT(I) = EINT(I) + OFF(I)*EINC*HALF
1760 QOLD(LFT:LLT) = Q(LFT:LLT)