Académique Documents
Professionnel Documents
Culture Documents
Shahriyar Beizaee
S(1:9,1)=0.0d0
n(1:9,1)=0.0d0
n_T(1,1:9)=0.0d0
h_tmp1(1,1:9)=0.0d0
Idev(1:9,1:9)=0.0d0
Et(1:9,1:9)=0.d0
eps_dev(1:9,1)=0.0d0
C---------- getting data from Abaqus ---------oldsig(1:6,1)=STRESS(1:NTENS)
oldsig(7:9,1)=oldsig(4:6,1)
oldeps(1:6,1)=STRAN(1:NTENS)
oldeps(7:9,1)=oldeps(4:6,1)
deps(1:6,1)=DSTRAN(1:NTENS)
deps(7:9,1)=deps(4:6,1)
oldeps_p(1:9,1)=state_old(4:12)
C------------ material properties from Abaqus ------E=PROPS(1)
nu=PROPS(2)
H=PROPS(3)
sig_y=PROPS(4)
C-------------- building Ee -------------------K=E/(3.0d0*(1.0d0-2.0d0*nu))
G=E/(2.0d0*(1.0d0+nu))
v1(1:9,1)=(/1.0d0,1.0d0,1.0d0,0.d0,0.d0,0.d0,0.d0,0.d0,0.d0/)
eye(1:9,1:9)=0
Do i=1,9
Do j=1,9
if (i.EQ.j) then
eye(i,j)=1.0d0
if (i<4) then
I2(i,j)=1.0d0
else
I2(i,j)=0.50d0
end if
end if
End do
End do
call Trans(v1,v1T,9)
v1v1T=matmul(v1,v1T)
Do j=1,9
Do i=1,9
Idev(i,j)=eye(i,j)-(1.0d0/3.0d0)*v1v1T(i,j)
I2dev(i,j)=I2(i,j)-(1.0d0/3.0d0)*v1v1T(i,j)
End do
End do
Do j=1,9
Do i=1,9
shear(i,j)=2.0d0*G*I2dev(i,j)
vol(i,j)=K*v1v1T(i,j)
Ee(i,j)=shear(i,j)+vol(i,j)
End do
End do
C--------- creating trial values -----------------
Shahriyar Beizaee
sig_tr(1:9,1)=oldsig(1:9,1)+matmul(Ee(1:9,1:9),deps(1:9,1))
K_tr=oldK_p
eps=oldeps+deps
eps_dev=matmul(Idev,eps)
call norm(eps_dev,norm_eps_dev,9)
ee1=(2.0d0/3.0d0)*norm_eps_dev
S_tr=matmul(Idev,sig_tr)
call norm(S_tr,norm_S_tr,9)
J2_tr=0.5d0*(norm_S_tr**2.0d0)
Phi_tr=sqrt(3.0d0*J2_tr)-(sig_y+K_tr)
C------------- check if it is plastic or elastic -------if (phi_tr.LT.0) then
eps_p(1:9,1)=oldeps_p(1:9,1)
E_tang=Ee
sig(1:9,1)=sig_tr(1:9,1)
mu=oldmu
kap=oldkap
K_p=oldK_p
else
C--------------- Plastic -----mu=phi_tr/(3.0d0*G+H)
sig_eq_tr=sqrt(3.0d0*J2_tr)
sig_eq=sig_eq_tr-3.0d0*G*mu
c=1-mu*3.0d0*G/sig_eq_tr
S(1:9,1)=S_tr(1:9,1)*c
sig_m=(sig_tr(1,1)+sig_tr(2,1)+sig_tr(3,1))/3.0d0
sig(1:9,1)=S(1:9,1)+v1(1:9,1)*sig_m
n(1:9,1)=(3.0d0/(2.0d0*sig_eq_tr))*S_tr(1:9,1)
eps_p(1:9,1)=oldeps_p(1:9,1)+mu*n(1:9,1)
kap=oldkap+mu
K_p=H*kap
call Trans(n(1:9,1),n_T(1,1:9),9)
cnst1=((2.0d0*G/(3.0d0*G+H))*((oldkap+sig_y)/sig_eq_tr))
cnst2=(2.0d0*G)*(mu*3.0d0*G/sig_eq_tr)
E_tang=Ee-(2.0d0*G)*cnst1*matmul(n,n_T)+cnst2*I2dev
end if
DDSDDE=E_tang(1:6,1:6)
STRESS=sig(1:6,1)
STATEV(1)=mu
STATEV(2)=K_p
STATEV(3)=kap
STATEV(4:12)=eps_p(1:9,1)
if (NOEL.EQ.1) then
if (NPT.EQ.1) then
print *, Time
end if
end if
SSE=0
SPD=0
SCD=0
RETURN
END
C--------------------------------------------
Shahriyar Beizaee
SUBROUTINE Trans(vec,vecT,n)
vec(n,1) vecT(1,n)
implicit none
double precision, INTENT (IN) :: vec(n,1)
double precision, INTENT (OUT) :: vecT(1,n)
integer ii,n
vecT(1,1:n)=0
do ii=1,n
vecT(1,ii)=vec(ii,1)
End do
End
C---------------------------------------------SUBROUTINE detM(A,detA)
implicit none
double precision A(3,3),detA
detA=0
detA=A(1,1)*A(2,2)*A(3,3)+A(1,2)*A(2,3)*A(3,1)+
1 A(1,3)*A(2,1)*A(3,2)-A(1,1)*A(2,3)*A(3,2)2 A(1,2)*A(2,1)*A(3,3)-A(1,3)*A(2,2)*A(3,1)
end
C---------------------------------------------SUBROUTINE MATINV(N1,N2,A,AINV)
C Download URL: http://wp.me/p61TQ-zb
C Last modified: 2011/07/19
C
A B C | 1 0 0
D E F | 0 1 0
G H I | 0 0 1
=>
1 0 0 | J K L
0 1 0 | M N O
0 0 1 | P Q R
INITIALIZATION
DO I=N1,N2
DO J=N1,N2
AINV(I,J)=0.0D0
END DO
END DO
Shahriyar Beizaee
Shahriyar Beizaee
SUBROUTINE norm(vector,scalar,n)
implicit none
double precision vector(n,1),scalar
Integer ii,n
scalar=0
Do ii=1,n
scalar=scalar+vector(ii,1)**2
End do
scalar=sqrt(scalar)
Return
End
C---------------------------------------------subroutine zarb(a,b,c,n)
implicit none
double precision a(1,n),b(n,1),c
integer ii,n
c=0.0
do ii=1,n
c=c+a(1,ii)*b(ii,1)
end do
end
c----------------------------------------------