1 SUBROUTINE pull2(PK,SIG,FINV,DET,NDI)
4 include
'PARAM_UMAT.INC' 6 INTEGER I1,J1,II1,JJ1,NDI
7 DOUBLE PRECISION PK(ndi,ndi),FINV(ndi,ndi)
8 DOUBLE PRECISION SIG(ndi,ndi)
9 DOUBLE PRECISION AUX,DET
16 aux=aux+det*finv(i1,ii1)*finv(j1,jj1)*sig(ii1,jj1)
25 SUBROUTINE pinvariants(A,INV4,NDI,ST,LAMBDA,BARLAMBDA,DET)
28 include
'PARAM_UMAT.INC' 31 DOUBLE PRECISION A(ndi,ndi),DET,SCALE1,ST(ndi,ndi),LAMBDA
32 DOUBLE PRECISION BARLAMBDA,INV4
37 inv4=inv4+a(i,j)*st(i,j)
41 scale1=det**(-one /three)
43 lambda=barlambda/scale1
47 SUBROUTINE metvol(CVOL,C,PV,PPV,DET,NDI)
50 include
'PARAM_UMAT.INC' 52 INTEGER NDI,I1,J1,K1,L1
53 DOUBLE PRECISION C(ndi,ndi),CINV(ndi,ndi),
54 1 cvol(ndi,ndi,ndi,ndi)
55 DOUBLE PRECISION PV,PPV,DET
64 1 det*ppv*cinv(i1,j1)*cinv(k1,l1)
65 2 -det*pv*(cinv(i1,k1)*cinv(j1,l1)
66 3 +cinv(i1,l1)*cinv(j1,k1))
82 include
'PARAM_UMAT.INC' 84 INTEGER I1,J1,K1,L1,NDI
86 DOUBLE PRECISION RT(ndi,ndi),LT(ndi,ndi,ndi,ndi)
87 DOUBLE PRECISION S(ndi,ndi)
95 aux=aux+lt(i1,j1,k1,l1)*rt(k1,l1)
128 SUBROUTINE umat(STRESS,STATEV,DDSDDE,SSE,SPD,SCD,
129 1 rpl,ddsddt,drplde,drpldt,
130 2 stran,dstran,time,dtime,temp,dtemp,predef,dpred,cmname,
131 3 ndi,nshr,ntens,nstatev,props,nprops,coords,drot,pnewdt,
132 4 celent,dfgrd0,dfgrd1,noel,npt,layer,kspt,kstep,kinc)
138 include
'PARAM_UMAT.INC' 146 INTEGER NDI, NSHR, NTENS, NSTATEV, NPROPS, NOEL, NPT,
147 1 layer, kspt, kstep, kinc
149 DOUBLE PRECISION STRESS(ntens),STATEV(nstatev),
150 1 ddsdde(ntens,ntens),ddsddt(ntens),drplde(ntens),
151 2 stran(ntens),dstran(ntens),time(2),predef(1),dpred(1),
152 3 props(nprops),coords(3),drot(3,3),dfgrd0(3,3),dfgrd1(3,3),
155 DOUBLE PRECISION SSE, SPD, SCD, RPL, DRPLDT, DTIME, TEMP,
156 1 dtemp,pnewdt,celent
163 DOUBLE PRECISION UNIT2(ndi,ndi),UNIT4(ndi,ndi,ndi,ndi),
164 1 unit4s(ndi,ndi,ndi,ndi),
165 2 proje(ndi,ndi,ndi,ndi),projl(ndi,ndi,ndi,ndi)
167 DOUBLE PRECISION DISTGR(ndi,ndi),C(ndi,ndi),B(ndi,ndi),
168 1 cbar(ndi,ndi),bbar(ndi,ndi),distgrinv(ndi,ndi),
169 2 ubar(ndi,ndi),vbar(ndi,ndi),rot(ndi,ndi),
171 DOUBLE PRECISION DET,CBARI1,CBARI2
173 DOUBLE PRECISION PKVOL(ndi,ndi),SVOL(ndi,ndi),
174 1 cvol(ndi,ndi,ndi,ndi),cmvol(ndi,ndi,ndi,ndi)
175 DOUBLE PRECISION KBULK,PV,PPV,SSEV
177 DOUBLE PRECISION SISO(ndi,ndi),PKISO(ndi,ndi),PK2(ndi,ndi),
178 1 ciso(ndi,ndi,ndi,ndi),cmiso(ndi,ndi,ndi,ndi),
179 2 sfic(ndi,ndi),cfic(ndi,ndi,ndi,ndi),
180 3 pkfic(ndi,ndi),cmfic(ndi,ndi,ndi,ndi)
182 DOUBLE PRECISION C10,C01,SSEISO,DISO(5),PKMATFIC(ndi,ndi),
183 1 smatfic(ndi,ndi),sisomatfic(ndi,ndi),
184 2 cmisomatfic(ndi,ndi,ndi,ndi),
185 3 cisomatfic(ndi,ndi,ndi,ndi)
187 DOUBLE PRECISION K1,K2,KDISP,SSEANISO,
189 2 pkmatficaniso(ndi,ndi),
190 3 sanisomatfic(ndi,ndi),
191 4 cmanisomatfic(ndi,ndi,ndi,ndi),
192 6 canisomatfic(ndi,ndi,ndi,ndi),
195 DOUBLE PRECISION VORIF(3),VD(3),M0(3,3),MM(3,3),
196 1 vorif2(3),vd2(3),n0(3,3),nn(3,3)
200 DOUBLE PRECISION VSCPROPS(6)
203 DOUBLE PRECISION CJR(ndi,ndi,ndi,ndi)
205 DOUBLE PRECISION SIGMA(ndi,ndi),DDSIGDDE(ndi,ndi,ndi,ndi),
206 1 ddpkdde(ndi,ndi,ndi,ndi)
208 DOUBLE PRECISION STEST(ndi,ndi), CTEST(ndi,ndi,ndi,ndi)
267 CALL onem(unit2,unit4,unit4s,ndi)
288 IF ((time(1).EQ.zero).AND.(kstep.EQ.1))
THEN 298 CALL fslip(dfgrd1,distgr,det,ndi)
307 CALL fibdir(fibori,m0,mm,nelem,noel,ndi,vorif,vd,distgr,dfgrd1)
311 CALL pinvariants(cbar,cbari4,ndi,m0,lambda,barlambda,det)
314 CALL stretch(cbar,bbar,ubar,vbar,ndi)
318 CALL projeul(unit2,unit4s,proje,ndi)
320 CALL projlag(c,unit4,projl,ndi)
327 CALL vol(ssev,pv,ppv,kbulk,det)
328 CALL isomat(sseiso,diso,c10,c01,cbari1,cbari2)
329 CALL anisomat(sseaniso,daniso,diso,k1,k2,kdisp,cbari4,cbari1)
338 1 diso,unit2,unit4,det,ndi)
340 CALL csisomatfic(cisomatfic,cmisomatfic,distgr,det,ndi)
345 CALL push2(sanisomatfic,pkmatficaniso,distgr,det,ndi)
348 CALL push4(canisomatfic,cmanisomatfic,distgr,det,ndi)
353 sse=ssev+sseiso+sseaniso
355 pkfic=pkmatfic+pkmatficaniso
357 sfic=sisomatfic+sanisomatfic
359 cmfic=cmisomatfic+cmanisomatfic
361 cfic=cisomatfic+canisomatfic
369 CALL pk2vol(pkvol,pv,c,ndi)
371 CALL sigvol(svol,pv,unit2,ndi)
375 CALL pk2iso(pkiso,pkfic,projl,det,ndi)
377 CALL sigiso(siso,sfic,proje,ndi)
391 CALL metvol(cmvol,c,pv,ppv,det,ndi)
395 CALL metiso(cmiso,cmfic,projl,pkiso,pkfic,c,unit2,det,ndi)
399 ddpkdde= cmvol + cmiso
407 CALL setvol(cvol,pv,ppv,unit2,unit4s,ndi)
411 CALL setiso(ciso,cfic,proje,siso,sfic,unit2,ndi)
415 CALL setjr(cjr,sigma,unit2,ndi)
420 ddsigdde=cvol+ciso+cjr
426 CALL indexx(stress,ddsdde,sigma,ddsigdde,ntens,ndi)
442 SUBROUTINE projeul(A,AA,PE,NDI)
450 include
'PARAM_UMAT.INC' 454 DOUBLE PRECISION A(ndi,ndi),AA(ndi,ndi,ndi,ndi),
455 1 pe(ndi,ndi,ndi,ndi)
461 pe(i,j,k,l)=aa(i,j,k,l)-(one/three)*(a(i,j)*a(k,l))
469 SUBROUTINE sigvol(SVOL,PV,UNIT2,NDI)
472 include
'PARAM_UMAT.INC' 475 DOUBLE PRECISION UNIT2(ndi,ndi),SVOL(ndi,ndi)
480 svol(i1,j1)=pv*unit2(i1,j1)
486 SUBROUTINE isomat(SSEISO,DISO,C10,C01,CBARI1,CBARI2)
489 include
'PARAM_UMAT.INC' 491 DOUBLE PRECISION SSEISO,DISO(5)
492 DOUBLE PRECISION C10,C01,CBARI1,CBARI2
494 sseiso=c10*(cbari1-three)+c01*(cbari2-three)
512 include
'PARAM_UMAT.INC' 514 DOUBLE PRECISION STATEV(nsdv)
528 SUBROUTINE anisomat(SSEANISO,DANISO,DISO,K1,K2,KDISP,I4,I1)
531 include
'PARAM_UMAT.INC' 533 DOUBLE PRECISION SSEISO,DANISO(4),DISO(5)
534 DOUBLE PRECISION K1,K2,KDISP,I4,I1
535 DOUBLE PRECISION DUDI1,D2UD2I1,SSEANISO
536 DOUBLE PRECISION E1,EE2,EE3,DUDI4,D2UD2I4,D2DUDI1DI4,D2DUDI2DI4
541 e1=i4*(one-three*kdisp)+i1*kdisp-one
543 sseaniso=(k1/k2)*(dexp(k1*e1*e1)-one)
548 ee3=(one+two*k2*e1*e1)
550 dudi1=dudi1+k1*kdisp*e1*ee2
551 d2ud2i1=d2ud2i1+k1*kdisp*kdisp*ee3*ee2
553 dudi4=k1*(one-three*kdisp)*e1*ee2
555 d2ud2i4=k1*((one-three*kdisp)**two)*ee3*ee2
557 d2dudi1di4=k1*(one-three*kdisp)*kdisp*ee3*ee2
585 SUBROUTINE pk2vol(PKVOL,PV,C,NDI)
588 include
'PARAM_UMAT.INC' 591 DOUBLE PRECISION PKVOL(ndi,ndi),C(ndi,ndi),CINV(ndi,ndi)
598 pkvol(i1,j1)=pv*cinv(i1,j1)
604 SUBROUTINE pull4(MAT,SPATIAL,FINV,DET,NDI)
607 include
'PARAM_UMAT.INC' 609 INTEGER I1,J1,K1,L1,II1,JJ1,KK1,LL1,NDI
610 DOUBLE PRECISION MAT(ndi,ndi,ndi,ndi),FINV(ndi,ndi)
611 DOUBLE PRECISION SPATIAL(ndi,ndi,ndi,ndi)
612 DOUBLE PRECISION AUX,DET
624 + finv(i1,ii1)*finv(j1,jj1)*
625 + finv(k1,kk1)*finv(l1,ll1)*spatial(ii1,jj1,kk1,ll1)
638 SUBROUTINE setjr(CJR,SIGMA,UNIT2,NDI)
641 include
'PARAM_UMAT.INC' 643 INTEGER NDI,I1,J1,K1,L1
644 DOUBLE PRECISION UNIT2(ndi,ndi),
645 1 cjr(ndi,ndi,ndi,ndi),sigma(ndi,ndi)
652 1 (one/two)*(unit2(i1,k1)*sigma(j1,l1)
653 2 +sigma(i1,k1)*unit2(j1,l1)+unit2(i1,l1)*sigma(j1,k1)
654 3 +sigma(i1,l1)*unit2(j1,k1))
670 include
'PARAM_UMAT.INC' 672 INTEGER I1,J1,K1,L1,M1,N1,NDI
674 DOUBLE PRECISION LT(ndi,ndi,ndi,ndi),RT(ndi,ndi,ndi,ndi)
675 DOUBLE PRECISION S(ndi,ndi,ndi,ndi)
685 aux=aux+lt(i1,j1,m1,n1)*rt(m1,n1,k1,l1)
699 include
'PARAM_UMAT.INC' 704 INTEGER I1,POS,POS1,POS2,POS3
705 DOUBLE PRECISION STATEV(nsdv)
712 SUBROUTINE setvol(CVOL,PV,PPV,UNIT2,UNIT4S,NDI)
715 include
'PARAM_UMAT.INC' 717 INTEGER NDI,I1,J1,K1,L1
718 DOUBLE PRECISION UNIT2(ndi,ndi),UNIT4S(ndi,ndi,ndi,ndi),
719 1 cvol(ndi,ndi,ndi,ndi)
720 DOUBLE PRECISION PV,PPV
727 1 ppv*unit2(i1,j1)*unit2(k1,l1)
728 2 -two*pv*unit4s(i1,j1,k1,l1)
746 include
'PARAM_UMAT.INC' 749 DOUBLE PRECISION FIC(ndi,ndi),DISO(5),CBAR(ndi,ndi),UNIT2(ndi,ndi)
750 DOUBLE PRECISION DUDI1,DUDI2,CBARI1
751 DOUBLE PRECISION AUX1,AUX2
756 aux1=two*(dudi1+cbari1*dudi2)
761 fic(i1,j1)=aux1*unit2(i1,j1)+aux2*cbar(i1,j1)
767 SUBROUTINE uexternaldb(LOP,LRESTART,TIME,DTIME,KSTEP,KINC)
769 include
'ABA_PARAM.INC' 770 include
'PARAM_UMAT.INC' 779 CHARACTER(256) FILENAME
780 CHARACTER(256) JOBDIR
783 REAL*8 FIBORI(nelem,4)
786 IF(lop.EQ.0.OR.lop.EQ.4)
THEN 790 filename=jobdir(:lenjobdir)//
'/'//dir1
792 OPEN(15,file=filename)
794 READ(15,*) (fibori(i,j),j=1,4)
805 include
'aba_param.inc' 812 lenoutdir=len_trim(outdir)
819 include
'PARAM_UMAT.INC' 822 DOUBLE PRECISION SFIC(ndi,ndi),F(ndi,ndi),
826 CALL push2(sfic,pkfic,f,det,ndi)
840 include
'PARAM_UMAT.INC' 843 DOUBLE PRECISION AFIC(ndi,ndi),DANISO(3),CBAR(3,3)
844 DOUBLE PRECISION DUDI4,DI4DC(3,3),INV4
845 DOUBLE PRECISION ST0(3,3)
854 afic=two*(dudi4*di4dc)
858 SUBROUTINE stretch(C,B,U,V,NDI)
861 include
'PARAM_UMAT.INC' 864 DOUBLE PRECISION C(ndi,ndi),B(ndi,ndi),U(ndi,ndi),V(ndi,ndi)
865 DOUBLE PRECISION EIGVAL(ndi),OMEGA(ndi),EIGVEC(ndi,ndi)
869 eigval(1) = dsqrt(omega(1))
870 eigval(2) = dsqrt(omega(2))
871 eigval(3) = dsqrt(omega(3))
877 u = matmul(matmul(eigvec,u),transpose(eigvec))
881 eigval(1) = dsqrt(omega(1))
882 eigval(2) = dsqrt(omega(2))
883 eigval(3) = dsqrt(omega(3))
890 v = matmul(matmul(eigvec,v),transpose(eigvec))
900 DOUBLE PRECISION A(ndi,ndi),A_INV(ndi,ndi),DET_A,DET_A_INV
902 det_a = a(1,1)*(a(2,2)*a(3,3) - a(3,2)*a(2,3)) -
903 + a(2,1)*(a(1,2)*a(3,3) - a(3,2)*a(1,3)) +
904 + a(3,1)*(a(1,2)*a(2,3) - a(2,2)*a(1,3))
906 IF (det_a .LE. 0.d0)
THEN 907 WRITE(*,*)
'WARNING: SUBROUTINE MATINV3D:' 908 WRITE(*,*)
'WARNING: DET OF MAT=',det_a
912 det_a_inv = 1.d0/det_a
914 a_inv(1,1) = det_a_inv*(a(2,2)*a(3,3)-a(3,2)*a(2,3))
915 a_inv(1,2) = det_a_inv*(a(3,2)*a(1,3)-a(1,2)*a(3,3))
916 a_inv(1,3) = det_a_inv*(a(1,2)*a(2,3)-a(2,2)*a(1,3))
917 a_inv(2,1) = det_a_inv*(a(3,1)*a(2,3)-a(2,1)*a(3,3))
918 a_inv(2,2) = det_a_inv*(a(1,1)*a(3,3)-a(3,1)*a(1,3))
919 a_inv(2,3) = det_a_inv*(a(2,1)*a(1,3)-a(1,1)*a(2,3))
920 a_inv(3,1) = det_a_inv*(a(2,1)*a(3,2)-a(3,1)*a(2,2))
921 a_inv(3,2) = det_a_inv*(a(3,1)*a(1,2)-a(1,1)*a(3,2))
922 a_inv(3,3) = det_a_inv*(a(1,1)*a(2,2)-a(2,1)*a(1,2))
940 DOUBLE PRECISION D(3),V(3,3),A(3,3),E(3,3)
944 CALL jacobi(e,3,np,d,v,nrot)
952 SUBROUTINE jacobi(A,N,NP,D,V,NROT)
968 include
'PARAM_UMAT.INC' 970 INTEGER IP,IQ,N,NMAX,NP,NROT,I,J
973 DOUBLE PRECISION A(np,np),D(np),V(np,np),B(nmax),Z(nmax),
974 + sm,tresh,g,t,h,theta,s,c,tau
1007 sm = sm + dabs(a(ip,iq))
1015 IF (sm.EQ.0.d0)
RETURN 1022 tresh = 0.2d0*sm/n**2
1029 g = 100.d0*dabs(a(ip,iq))
1034 IF ((i.GT.4).AND.(dabs(d(ip))+g.EQ.dabs(d(ip)))
1035 + .AND.(dabs(d(iq))+g.EQ.dabs(d(iq))))
THEN 1037 ELSE IF (dabs(a(ip,iq)).GT.tresh)
THEN 1039 IF (dabs(h)+g.EQ.dabs(h))
THEN 1045 theta = 0.5d0*h/a(ip,iq)
1046 t =1.d0/(dabs(theta)+dsqrt(1.d0+theta**2.d0))
1047 IF (theta.LT.0.d0) t = -t
1049 c = 1.d0/dsqrt(1.d0 + t**2.d0)
1064 a(j,ip) = g - s*(h + g*tau)
1065 a(j,iq) = h + s*(g - h*tau)
1073 a(ip,j) = g - s*(h + g*tau)
1074 a(j,iq) = h + s*(g - h*tau)
1082 a(ip,j) = g - s*(h + g*tau)
1083 a(iq,j) = h + s*(g - h*tau)
1088 v(j,ip) = g - s*(h + g*tau)
1089 v(j,iq) = h + s*(g - h*tau)
1099 b(ip) = b(ip) + z(ip)
1109 WRITE (*,
'(/1X,A/)')
'50 ITERATIONS IN JACOBI SHOULD NEVER HAPPEN' 1115 SUBROUTINE eigsrt(D,V,N,NP)
1127 DOUBLE PRECISION D(np),V(np,np),P
1157 DOUBLE PRECISION A(ndi,ndi),B(ndi,ndi),C(ndi,ndi,ndi,ndi)
1163 c(i,j,k,l)=a(i,j)*b(k,l)
1180 include
'PARAM_UMAT.INC' 1182 INTEGER I1,J1,K1,L1,NDI
1184 DOUBLE PRECISION LT(ndi,ndi),RT(ndi,ndi,ndi,ndi)
1185 DOUBLE PRECISION S(ndi,ndi)
1186 DOUBLE PRECISION AUX
1193 aux=aux+lt(k1,l1)*rt(i1,j1,k1,l1)
1204 include
'PARAM_UMAT.INC' 1207 DOUBLE PRECISION A(ndi,ndi),AA(ndi,ndi)
1208 DOUBLE PRECISION INV1,INV1AA, INV2
1215 inv1aa=inv1aa+aa(i1,i1)
1217 inv2=(one/two)*(inv1*inv1-inv1aa)
1221 SUBROUTINE sigiso(SISO,SFIC,PE,NDI)
1224 include
'PARAM_UMAT.INC' 1227 DOUBLE PRECISION SISO(ndi,ndi),
1228 1 pe(ndi,ndi,ndi,ndi),sfic(ndi,ndi)
1234 SUBROUTINE vol(SSEV,PV,PPV,K,DET)
1237 include
'PARAM_UMAT.INC' 1239 DOUBLE PRECISION SSEV,PV,PPV
1240 DOUBLE PRECISION K,G,DET,AUX
1242 g=(one/four)*(det*det-one-two*log(det))
1246 pv=k*(one/two)*(det-one/det)
1247 aux=k*(one/two)*(one+one/(det*det))
1252 SUBROUTINE push4(SPATIAL,MAT,F,DET,NDI)
1261 include
'PARAM_UMAT.INC' 1263 INTEGER I1,J1,K1,L1,II1,JJ1,KK1,LL1,NDI
1265 DOUBLE PRECISION MAT(ndi,ndi,ndi,ndi),F(ndi,ndi)
1266 DOUBLE PRECISION SPATIAL(ndi,ndi,ndi,ndi)
1267 DOUBLE PRECISION AUX,DET
1278 aux=aux+(det**(-one))*
1279 + f(i1,ii1)*f(j1,jj1)*
1280 + f(k1,kk1)*f(l1,ll1)*mat(ii1,jj1,kk1,ll1)
1285 spatial(i1,j1,k1,l1)=aux
1292 END SUBROUTINE push4 1293 SUBROUTINE pk2iso(PKISO,PKFIC,PL,DET,NDI)
1296 include
'PARAM_UMAT.INC' 1299 DOUBLE PRECISION PKISO(ndi,ndi),
1300 1 pl(ndi,ndi,ndi,ndi),pkfic(ndi,ndi)
1301 DOUBLE PRECISION DET,SCALE2
1305 scale2=det**(-two/three)
1308 pkiso(i1,j1)=scale2*pkiso(i1,j1)
1314 SUBROUTINE onem(A,AA,AAS,NDI)
1322 include
'PARAM_UMAT.INC' 1326 DOUBLE PRECISION A(ndi,ndi),AA(ndi,ndi,ndi,ndi),
1327 1 aas(ndi,ndi,ndi,ndi)
1343 aa(i,j,k,l)=a(i,k)*a(j,l)
1344 aas(i,j,k,l)=(one/two)*(a(i,k)*a(j,l)+a(i,l)*a(j,k))
1352 SUBROUTINE metiso(CMISO,CMFIC,PL,PKISO,PKFIC,C,UNIT2,DET,NDI)
1355 include
'PARAM_UMAT.INC' 1357 INTEGER NDI,I1,J1,K1,L1
1358 DOUBLE PRECISION UNIT2(ndi,ndi),PL(ndi,ndi,ndi,ndi),
1359 1 cmiso(ndi,ndi,ndi,ndi),pkiso(ndi,ndi),
1360 2 cmfic(ndi,ndi,ndi,ndi),pkfic(ndi,ndi),
1361 3 cisoaux(ndi,ndi,ndi,ndi),
1362 4 cisoaux1(ndi,ndi,ndi,ndi),c(ndi,ndi),
1363 5 plt(ndi,ndi,ndi,ndi),cinv(ndi,ndi),
1364 6 pll(ndi,ndi,ndi,ndi)
1365 DOUBLE PRECISION TRFIC,XX,YY,ZZ,DET,AUX,AUX1
1377 plt(i1,j1,k1,l1)=pl(k1,l1,i1,j1)
1386 aux=det**(-two/three)
1389 trfic=trfic+aux*pkfic(i1,i1)*c(i1,i1)
1396 xx=aux1*cisoaux(i1,j1,k1,l1)
1397 pll(i1,j1,k1,l1)=(one/two)*(cinv(i1,k1)*cinv(j1,l1)+
1398 1 cinv(i1,l1)*cinv(j1,k1))-
1399 2 (one/three)*cinv(i1,j1)*cinv(k1,l1)
1400 yy=trfic*pll(i1,j1,k1,l1)
1401 zz=pkiso(i1,j1)*cinv(k1,l1)+cinv(i1,j1)*pkiso(k1,l1)
1403 cmiso(i1,j1,k1,l1)=xx+(two/three)*yy-(two/three)*zz
1411 SUBROUTINE setiso(CISO,CFIC,PE,SISO,SFIC,UNIT2,NDI)
1414 include
'PARAM_UMAT.INC' 1416 INTEGER NDI,I1,J1,K1,L1
1417 DOUBLE PRECISION UNIT2(ndi,ndi),PE(ndi,ndi,ndi,ndi),
1418 1 ciso(ndi,ndi,ndi,ndi),siso(ndi,ndi),
1419 2 cfic(ndi,ndi,ndi,ndi),sfic(ndi,ndi),
1420 3 cisoaux(ndi,ndi,ndi,ndi),
1421 4 cisoaux1(ndi,ndi,ndi,ndi)
1422 DOUBLE PRECISION TRFIC,XX,YY,ZZ
1432 trfic=trfic+sfic(i1,i1)
1439 xx=cisoaux(i1,j1,k1,l1)
1440 yy=trfic*pe(i1,j1,k1,l1)
1441 zz=siso(i1,j1)*unit2(k1,l1)+unit2(i1,j1)*siso(k1,l1)
1443 ciso(i1,j1,k1,l1)=xx+(two/three)*yy-(two/three)*zz
1451 SUBROUTINE push2(SIG,PK,F,DET,NDI)
1460 include
'PARAM_UMAT.INC' 1462 INTEGER I1,J1,II1,JJ1,NDI
1463 DOUBLE PRECISION PK(ndi,ndi),F(ndi,ndi)
1464 DOUBLE PRECISION SIG(ndi,ndi)
1465 DOUBLE PRECISION AUX,DET
1472 aux=aux+(det**(-one))*f(i1,ii1)*f(j1,jj1)*pk(ii1,jj1)
1480 END SUBROUTINE push2 1484 include
'PARAM_UMAT.INC' 1487 DOUBLE PRECISION F(ndi,ndi),C(ndi,ndi),B(ndi,ndi)
1489 c=matmul(transpose(f),f)
1491 b=matmul(f,transpose(f))
1494 SUBROUTINE fslip(F,FBAR,DET,NDI)
1497 include
'PARAM_UMAT.INC' 1500 DOUBLE PRECISION F(ndi,ndi),FBAR(ndi,ndi)
1501 DOUBLE PRECISION DET,SCALE1
1504 det = f(1,1) * f(2,2) * f(3,3)
1505 1 - f(1,2) * f(2,1) * f(3,3)
1507 IF (ndi .EQ. 3)
THEN 1508 det = det + f(1,2) * f(2,3) * f(3,1)
1509 1 + f(1,3) * f(3,2) * f(2,1)
1510 2 - f(1,3) * f(3,1) * f(2,2)
1511 3 - f(2,3) * f(3,2) * f(1,1)
1514 scale1=det**(-one /three)
1518 fbar(i1,j1)=scale1*f(i1,j1)
1523 END SUBROUTINE fslip 1528 include
'PARAM_UMAT.INC' 1531 DOUBLE PRECISION CMANISOMATFIC(ndi,ndi,ndi,ndi),UNIT2(ndi,ndi),
1532 1 m0(ndi,ndi),daniso(3),det
1533 DOUBLE PRECISION CINV4(ndi,ndi,ndi,ndi),CINV14(ndi,ndi,ndi,ndi)
1534 DOUBLE PRECISION D2UDI4,D2UDI1DI4
1535 DOUBLE PRECISION IMM(ndi,ndi,ndi,ndi),MMI(ndi,ndi,ndi,ndi),
1536 1 mm0(ndi,ndi,ndi,ndi)
1552 cinv4(i,j,k,l)=d2udi4*mm0(i,j,k,l)
1553 cinv14(i,j,k,l)=d2udi1di4*(imm(i,j,k,l)+mmi(i,j,k,l))
1554 cmanisomatfic(i,j,k,l)=four*(cinv4(i,j,k,l)+cinv14(i,j,k,l))
1562 SUBROUTINE sdvwrite(DET,LAMBDA,STATEV)
1565 include
'PARAM_UMAT.INC' 1567 DOUBLE PRECISION STATEV(nsdv),DET,LAMBDA
1579 include
'PARAM_UMAT.INC' 1582 DOUBLE PRECISION DFGRD(ndi,ndi)
1595 SUBROUTINE fibdir(FIB,ST0,ST,NE,NOEL,NDI,VORIF,VD,DISTGR,DFGRD1)
1598 include
'PARAM_UMAT.INC' 1600 INTEGER NDI, NE, NOEL,INOEL,I,J,I1,J1
1601 DOUBLE PRECISION SUM1, DFGRD1(3,3), DNORM
1602 DOUBLE PRECISION VORIF(3),ST(3,3),VD(3),ST0(3,3),DISTGR(3,3)
1603 DOUBLE PRECISION FIB(ne,4)
1609 IF(noel.EQ.int(fib(i,1)))
THEN 1615 dnorm=dsqrt(fib(inoel,2)*fib(inoel,2)+
1616 1 fib(inoel,3)*fib(inoel,3)+
1617 2 fib(inoel,4)*fib(inoel,4))
1624 vorif(i1)=fib(inoel,j1)/dnorm
1631 sum1=sum1+dfgrd1(i,j)*vorif(j)
1637 dnorm=dsqrt(vd(1)*vd(1)+
1647 st0(i,j)=vorif(i)*vorif(j)
1652 st=matmul(st0,transpose(distgr))
1653 st=matmul(distgr,st)
1658 SUBROUTINE indexx(STRESS,DDSDDE,SIG,TNG,NTENS,NDI)
1661 include
'PARAM_UMAT.INC' 1663 INTEGER II1(6),II2(6),NTENS,NDI,I1,J1
1664 DOUBLE PRECISION STRESS(ntens),DDSDDE(ntens,ntens)
1665 DOUBLE PRECISION SIG(ndi,ndi),TNG(ndi,ndi,ndi,ndi)
1666 DOUBLE PRECISION PP1,PP2
1684 stress(i1)=sig(ii1(i1),ii2(i1))
1687 pp1=tng(ii1(i1),ii2(i1),ii1(j1),ii2(j1))
1688 pp2=tng(ii1(i1),ii2(i1),ii2(j1),ii1(j1))
1689 ddsdde(i1,j1)=(one/two)*(pp1+pp2)
1699 include
'PARAM_UMAT.INC' 1702 DOUBLE PRECISION F(ndi,ndi),R(ndi,ndi),U(ndi,ndi),UINV(ndi,ndi)
1710 1 diso,unit2,unit4,det,ndi)
1713 include
'PARAM_UMAT.INC' 1715 INTEGER NDI,I1,J1,K1,L1
1716 DOUBLE PRECISION CMISOMATFIC(ndi,ndi,ndi,ndi),UNIT2(ndi,ndi),
1717 1 cbar(ndi,ndi),diso(5),
1718 2 unit4(ndi,ndi,ndi,ndi)
1719 DOUBLE PRECISION CBARI1,CBARI2
1720 DOUBLE PRECISION DUDI1,DUDI2,D2UD2I1,D2UD2I2,D2UDI1I2
1721 DOUBLE PRECISION AUX,AUX1,AUX2,AUX3,AUX4,DET
1722 DOUBLE PRECISION UIJ,UKL,CIJ,CKL
1730 aux1=four*(d2ud2i1+two*cbari1*d2udi1i2+
1731 1 dudi2+cbari1*cbari1*d2ud2i2)
1732 aux2=-four*(d2udi1i2+cbari1*d2ud2i2)
1745 1 aux2*(uij*ckl+cij*ukl)+aux3*cij*ckl+
1746 3 aux4*unit4(i1,j1,k1,l1)
1747 cmisomatfic(i1,j1,k1,l1)=aux
1755 SUBROUTINE projlag(C,AA,PL,NDI)
1765 include
'PARAM_UMAT.INC' 1769 DOUBLE PRECISION CINV(ndi,ndi),AA(ndi,ndi,ndi,ndi),
1770 1 pl(ndi,ndi,ndi,ndi),c(ndi,ndi)
1778 pl(i,j,k,l)=aa(i,j,k,l)-(one/three)*(cinv(i,j)*c(k,l))
1786 SUBROUTINE csisomatfic(CISOMATFIC,CMISOMATFIC,DISTGR,DET,NDI)
1789 include
'PARAM_UMAT.INC' 1792 DOUBLE PRECISION CMISOMATFIC(ndi,ndi),DISTGR(ndi,ndi),
1793 1 cisomatfic(ndi,ndi,ndi,ndi)
1794 DOUBLE PRECISION DET
1796 CALL push4(cisomatfic,cmisomatfic,distgr,det,ndi)
subroutine pull4(MAT, SPATIAL, FINV, DET, NDI)
subroutine uexternaldb(LOP, LRESTART, TIME, DTIME, KSTEP, KINC)
subroutine sdvread(STATEV)
subroutine anisomat(SSEANISO, DANISO, DISO, K1, K2, KDISP, I4, I1)
subroutine initialize(STATEV)
subroutine contraction44(S, LT, RT, NDI)
subroutine push2(SIG, PK, F, DET, NDI)
subroutine sdvwrite(DET, LAMBDA, STATEV)
subroutine setiso(CISO, CFIC, PE, SISO, SFIC, UNIT2, NDI)
subroutine cmatanisomatfic(CMANISOMATFIC, M0, DANISO, UNIT2, DET, NDI)
subroutine jacobi(A, N, NP, D, V, NROT)
subroutine stretch(C, B, U, V, NDI)
subroutine matinv3d(A, A_INV, NDI)
subroutine onem(A, AA, AAS, NDI)
subroutine fibdir(FIB, ST0, ST, NE, NOEL, NDI, VORIF, VD, DISTGR, DFGRD1)
subroutine push4(SPATIAL, MAT, F, DET, NDI)
subroutine metvol(CVOL, C, PV, PPV, DET, NDI)
subroutine umat(STRESS, STATEV, DDSDDE, SSE, SPD, SCD, RPL, DDSDDT, DRPLDE, DRPLDT, STRAN, DSTRAN, TIME, DTIME, TEMP, DTEMP, PREDEF, DPRED, CMNAME, NDI, NSHR, NTENS, NSTATEV, PROPS, NPROPS, COORDS, DROT, PNEWDT, CELENT, DFGRD0, DFGRD1, NOEL, NPT, LAYER, KSPT, KSTEP, KINC)
Record of revisions: | Date Programmer Description of change | ==== ========== =====================...
subroutine csisomatfic(CISOMATFIC, CMISOMATFIC, DISTGR, DET, NDI)
subroutine sigisomatfic(SFIC, PKFIC, F, DET, NDI)
subroutine invariants(A, INV1, INV2, NDI)
subroutine sigvol(SVOL, PV, UNIT2, NDI)
subroutine projeul(A, AA, PE, NDI)
subroutine getoutdir(OUTDIR, LENOUTDIR)
subroutine contraction42(S, LT, RT, NDI)
subroutine indexx(STRESS, DDSDDE, SIG, TNG, NTENS, NDI)
subroutine pk2iso(PKISO, PKFIC, PL, DET, NDI)
subroutine fslip(F, FBAR, DET, NDI)
subroutine setjr(CJR, SIGMA, UNIT2, NDI)
subroutine pull2(PK, SIG, FINV, DET, NDI)
subroutine pinvariants(A, INV4, NDI, ST, LAMBDA, BARLAMBDA, DET)
subroutine cmatisomatfic(CMISOMATFIC, CBAR, CBARI1, CBARI2, DISO, UNIT2, UNIT4, DET, NDI)
subroutine isomat(SSEISO, DISO, C10, C01, CBARI1, CBARI2)
subroutine spectral(A, D, V)
subroutine tensorprod2(A, B, C, NDI)
subroutine eigsrt(D, V, N, NP)
subroutine pk2anisomatfic(AFIC, DANISO, CBAR, INV4, ST0, NDI)
subroutine contraction24(S, LT, RT, NDI)
subroutine projlag(C, AA, PL, NDI)
subroutine rotation(F, R, U, NDI)
subroutine metiso(CMISO, CMFIC, PL, PKISO, PKFIC, C, UNIT2, DET, NDI)
subroutine resetdfgrd(DFGRD, NDI)
subroutine vol(SSEV, PV, PPV, K, DET)
subroutine pk2vol(PKVOL, PV, C, NDI)
subroutine pk2isomatfic(FIC, DISO, CBAR, CBARI1, UNIT2, NDI)
subroutine sigiso(SISO, SFIC, PE, NDI)
subroutine setvol(CVOL, PV, PPV, UNIT2, UNIT4S, NDI)