Corrected HomogenisedC:
1- No dependence on material volume fractions!!! 2- Can now depend on state of microstructure changed some loops from Nstatevars to Nslip
This commit is contained in:
parent
975c113ae8
commit
d615406722
|
@ -735,10 +735,11 @@ enddo
|
||||||
end subroutine
|
end subroutine
|
||||||
|
|
||||||
|
|
||||||
function constitutive_HomogenizedC(ipc,ip,el)
|
function constitutive_HomogenizedC(state,ipc,ip,el)
|
||||||
!*********************************************************************
|
!*********************************************************************
|
||||||
!* This function returns the homogenized elacticity matrix *
|
!* This function returns the homogenized elacticity matrix *
|
||||||
!* INPUT: *
|
!* INPUT: *
|
||||||
|
!* - state : state variables *
|
||||||
!* - ipc : component-ID of current integration point *
|
!* - ipc : component-ID of current integration point *
|
||||||
!* - ip : current integration point *
|
!* - ip : current integration point *
|
||||||
!* - el : current element *
|
!* - el : current element *
|
||||||
|
@ -751,7 +752,7 @@ integer(pInt) ipc,ip,el
|
||||||
real(pReal), dimension(6,6) :: constitutive_homogenizedC
|
real(pReal), dimension(6,6) :: constitutive_homogenizedC
|
||||||
|
|
||||||
!* Homogenization scheme
|
!* Homogenization scheme
|
||||||
constitutive_homogenizedC=constitutive_MatVolFrac(ipc,ip,el)*material_Cslip_66(:,:,constitutive_matID(ipc,ip,el))
|
constitutive_homogenizedC=material_Cslip_66(:,:,constitutive_matID(ipc,ip,el))
|
||||||
|
|
||||||
return
|
return
|
||||||
end function
|
end function
|
||||||
|
@ -837,6 +838,8 @@ do i=1,material_Nslip(matID)
|
||||||
Lp=Lp+gdot_slip(i)*crystal_Sslip(:,:,i,material_CrystalStructure(matID))
|
Lp=Lp+gdot_slip(i)*crystal_Sslip(:,:,i,material_CrystalStructure(matID))
|
||||||
enddo
|
enddo
|
||||||
|
|
||||||
|
!* Lp twin
|
||||||
|
|
||||||
!* Calculation of the tangent of Lp
|
!* Calculation of the tangent of Lp
|
||||||
dLp_dTstar=0.0_pReal
|
dLp_dTstar=0.0_pReal
|
||||||
do i=1,material_Nslip(matID)
|
do i=1,material_Nslip(matID)
|
||||||
|
@ -857,7 +860,7 @@ end subroutine
|
||||||
function constitutive_dotState(Tstar_v,state,Tp,ipc,ip,el)
|
function constitutive_dotState(Tstar_v,state,Tp,ipc,ip,el)
|
||||||
!*********************************************************************
|
!*********************************************************************
|
||||||
!* This subroutine contains the constitutive equation for *
|
!* This subroutine contains the constitutive equation for *
|
||||||
!* calculating the velocity gradient *
|
!* calculating rate of change of microstructure *
|
||||||
!* INPUT: *
|
!* INPUT: *
|
||||||
!* - Tstar_v : 2nd Piola Kirchhoff stress tensor (Mandel) *
|
!* - Tstar_v : 2nd Piola Kirchhoff stress tensor (Mandel) *
|
||||||
!* - state : current microstructure *
|
!* - state : current microstructure *
|
||||||
|
@ -875,21 +878,21 @@ implicit none
|
||||||
!* Definition of variables
|
!* Definition of variables
|
||||||
integer(pInt) ipc,ip,el
|
integer(pInt) ipc,ip,el
|
||||||
integer(pInt) matID,i
|
integer(pInt) matID,i
|
||||||
real(pReal) Tp,tau_slip,gdot_slip
|
real(pReal) Tp,tau_slip,gdot_slip,lock,recovery
|
||||||
real(pReal), dimension(6) :: Tstar_v
|
real(pReal), dimension(6) :: Tstar_v
|
||||||
real(pReal), dimension(constitutive_Nstatevars(ipc,ip,el)) :: constitutive_dotState,state,lock,recovery
|
real(pReal), dimension(constitutive_Nstatevars(ipc,ip,el)) :: constitutive_dotState,state
|
||||||
|
|
||||||
!* Get the material-ID from the triplet(ipc,ip,el)
|
!* Get the material-ID from the triplet(ipc,ip,el)
|
||||||
matID = constitutive_matID(ipc,ip,el)
|
matID = constitutive_matID(ipc,ip,el)
|
||||||
|
|
||||||
!* Hardening of each system
|
!* Hardening of each system
|
||||||
do i=1,constitutive_Nstatevars(ipc,ip,el)
|
do i=1,material_Nslip(matID)
|
||||||
tau_slip = dot_product(Tstar_v,crystal_Sslip_v(:,i,material_CrystalStructure(matID)))
|
tau_slip = dot_product(Tstar_v,crystal_Sslip_v(:,i,material_CrystalStructure(matID)))
|
||||||
gdot_slip = constitutive_g0_slip(i)*sinh((abs(tau_slip)*constitutive_activation_volume(i))/(Kb*Tp))*&
|
gdot_slip = constitutive_g0_slip(i)*sinh((abs(tau_slip)*constitutive_activation_volume(i))/(Kb*Tp))*&
|
||||||
sign(1.0_pReal,tau_slip)
|
sign(1.0_pReal,tau_slip)
|
||||||
lock(i)=(material_c4(matID)*sqrt(constitutive_rho_f(i))*abs(gdot_slip))/material_bg(matID)
|
lock=(material_c4(matID)*sqrt(constitutive_rho_f(i))*abs(gdot_slip))/material_bg(matID)
|
||||||
recovery(i)=material_c5(matID)*state(i)*abs(gdot_slip)
|
recovery=material_c5(matID)*state(i)*abs(gdot_slip)
|
||||||
constitutive_dotState(i)=lock(i)-recovery(i)
|
constitutive_dotState(i)=lock-recovery
|
||||||
enddo
|
enddo
|
||||||
|
|
||||||
return
|
return
|
||||||
|
|
Loading…
Reference in New Issue