have dotState after Lp/Li
This commit is contained in:
parent
4037085f6c
commit
e06fc036c5
|
@ -393,36 +393,6 @@ subroutine plastic_disloUCLA_init()
|
||||||
end subroutine plastic_disloUCLA_init
|
end subroutine plastic_disloUCLA_init
|
||||||
|
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
|
||||||
!> @brief calculates derived quantities from state
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
|
||||||
subroutine plastic_disloUCLA_dependentState(instance,of)
|
|
||||||
|
|
||||||
implicit none
|
|
||||||
integer(pInt), intent(in) :: instance, of
|
|
||||||
|
|
||||||
integer(pInt) :: &
|
|
||||||
i
|
|
||||||
|
|
||||||
associate(prm => param(instance), stt => state(instance),dst => dependentState(instance))
|
|
||||||
|
|
||||||
forall (i = 1_pInt:prm%totalNslip)
|
|
||||||
dst%dislocationSpacing(i,of) = sqrt(dot_product(stt%rhoEdge(:,of)+stt%rhoEdgeDip(:,of), &
|
|
||||||
prm%forestProjectionEdge(:,i)))
|
|
||||||
dst%threshold_stress(i,of) = prm%mu*prm%burgers(i) &
|
|
||||||
* sqrt(dot_product(stt%rhoEdge(:,of)+stt%rhoEdgeDip(:,of), &
|
|
||||||
prm%interaction_SlipSlip(i,:)))
|
|
||||||
end forall
|
|
||||||
|
|
||||||
dst%mfp(:,of) = prm%grainSize/(1.0_pReal+prm%grainSize*dst%dislocationSpacing(:,of)/prm%Clambda)
|
|
||||||
dst%dislocationSpacing(:,of) = dst%mfp(:,of) ! ToDo: Hack to recover wrong behavior for the moment
|
|
||||||
|
|
||||||
end associate
|
|
||||||
|
|
||||||
|
|
||||||
end subroutine plastic_disloUCLA_dependentState
|
|
||||||
|
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
!> @brief calculates plastic velocity gradient and its tangent
|
!> @brief calculates plastic velocity gradient and its tangent
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
|
@ -531,6 +501,36 @@ subroutine plastic_disloUCLA_dotState(Mp,Temperature,instance,of)
|
||||||
end subroutine plastic_disloUCLA_dotState
|
end subroutine plastic_disloUCLA_dotState
|
||||||
|
|
||||||
|
|
||||||
|
!--------------------------------------------------------------------------------------------------
|
||||||
|
!> @brief calculates derived quantities from state
|
||||||
|
!--------------------------------------------------------------------------------------------------
|
||||||
|
subroutine plastic_disloUCLA_dependentState(instance,of)
|
||||||
|
|
||||||
|
implicit none
|
||||||
|
integer(pInt), intent(in) :: instance, of
|
||||||
|
|
||||||
|
integer(pInt) :: &
|
||||||
|
i
|
||||||
|
|
||||||
|
associate(prm => param(instance), stt => state(instance),dst => dependentState(instance))
|
||||||
|
|
||||||
|
forall (i = 1_pInt:prm%totalNslip)
|
||||||
|
dst%dislocationSpacing(i,of) = sqrt(dot_product(stt%rhoEdge(:,of)+stt%rhoEdgeDip(:,of), &
|
||||||
|
prm%forestProjectionEdge(:,i)))
|
||||||
|
dst%threshold_stress(i,of) = prm%mu*prm%burgers(i) &
|
||||||
|
* sqrt(dot_product(stt%rhoEdge(:,of)+stt%rhoEdgeDip(:,of), &
|
||||||
|
prm%interaction_SlipSlip(i,:)))
|
||||||
|
end forall
|
||||||
|
|
||||||
|
dst%mfp(:,of) = prm%grainSize/(1.0_pReal+prm%grainSize*dst%dislocationSpacing(:,of)/prm%Clambda)
|
||||||
|
dst%dislocationSpacing(:,of) = dst%mfp(:,of) ! ToDo: Hack to recover wrong behavior for the moment
|
||||||
|
|
||||||
|
end associate
|
||||||
|
|
||||||
|
|
||||||
|
end subroutine plastic_disloUCLA_dependentState
|
||||||
|
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
!> @brief return array of constitutive results
|
!> @brief return array of constitutive results
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
|
|
|
@ -397,6 +397,50 @@ pure subroutine plastic_kinehardening_LpAndItsTangent(Lp,dLp_dMp,Mp,instance,of)
|
||||||
end subroutine plastic_kinehardening_LpAndItsTangent
|
end subroutine plastic_kinehardening_LpAndItsTangent
|
||||||
|
|
||||||
|
|
||||||
|
!--------------------------------------------------------------------------------------------------
|
||||||
|
!> @brief calculates the rate of change of microstructure
|
||||||
|
!--------------------------------------------------------------------------------------------------
|
||||||
|
subroutine plastic_kinehardening_dotState(Mp,instance,of)
|
||||||
|
|
||||||
|
implicit none
|
||||||
|
real(pReal), dimension(3,3), intent(in) :: &
|
||||||
|
Mp !< Mandel stress
|
||||||
|
integer(pInt), intent(in) :: &
|
||||||
|
instance, &
|
||||||
|
of
|
||||||
|
|
||||||
|
integer(pInt) :: &
|
||||||
|
i
|
||||||
|
real(pReal), dimension(param(instance)%totalNslip) :: &
|
||||||
|
gdot_pos,gdot_neg
|
||||||
|
real(pReal) :: &
|
||||||
|
sumGamma
|
||||||
|
|
||||||
|
associate(prm => param(instance), stt => state(instance), dot => dotState(instance))
|
||||||
|
|
||||||
|
call kinetics(Mp,instance,of,gdot_pos,gdot_neg)
|
||||||
|
dot%accshear(:,of) = abs(gdot_pos+gdot_neg)
|
||||||
|
sumGamma = sum(stt%accshear(:,of))
|
||||||
|
|
||||||
|
do i = 1_pInt, prm%totalNslip
|
||||||
|
dot%crss(i,of) = dot_product(prm%interaction_SlipSlip(i,:),dot%accshear(:,of)) &
|
||||||
|
* ( prm%theta1(i) &
|
||||||
|
+ (prm%theta0(i) - prm%theta1(i) + prm%theta0(i)*prm%theta1(i)*sumGamma/prm%tau1(i)) &
|
||||||
|
* exp(-sumGamma*prm%theta0(i)/prm%tau1(i)) &
|
||||||
|
)
|
||||||
|
enddo
|
||||||
|
dot%crss_back(:,of) = stt%sense(:,of)*dot%accshear(:,of) * &
|
||||||
|
( prm%theta1_b + &
|
||||||
|
(prm%theta0_b - prm%theta1_b &
|
||||||
|
+ prm%theta0_b*prm%theta1_b/(prm%tau1_b+stt%chi0(:,of))*(stt%accshear(:,of)-stt%gamma0(:,of))&
|
||||||
|
) *exp(-(stt%accshear(:,of)-stt%gamma0(:,of)) *prm%theta0_b/(prm%tau1_b+stt%chi0(:,of))) &
|
||||||
|
)
|
||||||
|
|
||||||
|
end associate
|
||||||
|
|
||||||
|
end subroutine plastic_kinehardening_dotState
|
||||||
|
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
!> @brief calculates (instantaneous) incremental change of microstructure
|
!> @brief calculates (instantaneous) incremental change of microstructure
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
|
@ -456,50 +500,6 @@ subroutine plastic_kinehardening_deltaState(Mp,instance,of)
|
||||||
end subroutine plastic_kinehardening_deltaState
|
end subroutine plastic_kinehardening_deltaState
|
||||||
|
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
|
||||||
!> @brief calculates the rate of change of microstructure
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
|
||||||
subroutine plastic_kinehardening_dotState(Mp,instance,of)
|
|
||||||
|
|
||||||
implicit none
|
|
||||||
real(pReal), dimension(3,3), intent(in) :: &
|
|
||||||
Mp !< Mandel stress
|
|
||||||
integer(pInt), intent(in) :: &
|
|
||||||
instance, &
|
|
||||||
of
|
|
||||||
|
|
||||||
integer(pInt) :: &
|
|
||||||
i
|
|
||||||
real(pReal), dimension(param(instance)%totalNslip) :: &
|
|
||||||
gdot_pos,gdot_neg
|
|
||||||
real(pReal) :: &
|
|
||||||
sumGamma
|
|
||||||
|
|
||||||
associate(prm => param(instance), stt => state(instance), dot => dotState(instance))
|
|
||||||
|
|
||||||
call kinetics(Mp,instance,of,gdot_pos,gdot_neg)
|
|
||||||
dot%accshear(:,of) = abs(gdot_pos+gdot_neg)
|
|
||||||
sumGamma = sum(stt%accshear(:,of))
|
|
||||||
|
|
||||||
do i = 1_pInt, prm%totalNslip
|
|
||||||
dot%crss(i,of) = dot_product(prm%interaction_SlipSlip(i,:),dot%accshear(:,of)) &
|
|
||||||
* ( prm%theta1(i) &
|
|
||||||
+ (prm%theta0(i) - prm%theta1(i) + prm%theta0(i)*prm%theta1(i)*sumGamma/prm%tau1(i)) &
|
|
||||||
* exp(-sumGamma*prm%theta0(i)/prm%tau1(i)) &
|
|
||||||
)
|
|
||||||
enddo
|
|
||||||
dot%crss_back(:,of) = stt%sense(:,of)*dot%accshear(:,of) * &
|
|
||||||
( prm%theta1_b + &
|
|
||||||
(prm%theta0_b - prm%theta1_b &
|
|
||||||
+ prm%theta0_b*prm%theta1_b/(prm%tau1_b+stt%chi0(:,of))*(stt%accshear(:,of)-stt%gamma0(:,of))&
|
|
||||||
) *exp(-(stt%accshear(:,of)-stt%gamma0(:,of)) *prm%theta0_b/(prm%tau1_b+stt%chi0(:,of))) &
|
|
||||||
)
|
|
||||||
|
|
||||||
end associate
|
|
||||||
|
|
||||||
end subroutine plastic_kinehardening_dotState
|
|
||||||
|
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
!> @brief return array of constitutive results
|
!> @brief return array of constitutive results
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
|
|
|
@ -60,7 +60,6 @@ subroutine plastic_none_init
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
! allocate state arrays
|
! allocate state arrays
|
||||||
NipcMyPhase = count(material_phase == p)
|
NipcMyPhase = count(material_phase == p)
|
||||||
|
|
||||||
call material_allocatePlasticState(p,NipcMyPhase,0_pInt,0_pInt,0_pInt, &
|
call material_allocatePlasticState(p,NipcMyPhase,0_pInt,0_pInt,0_pInt, &
|
||||||
0_pInt,0_pInt,0_pInt)
|
0_pInt,0_pInt,0_pInt)
|
||||||
plasticState(p)%sizePostResults = 0_pInt
|
plasticState(p)%sizePostResults = 0_pInt
|
||||||
|
|
Loading…
Reference in New Issue