hardening does not depend on damage
This commit is contained in:
parent
b6ccbc0fe9
commit
0a01d5f3a1
|
@ -538,8 +538,6 @@ subroutine constitutive_collectDotState(Tstar_v, FeArray, FpArray, Temperature,
|
||||||
PLASTICITY_DISLOKMC_ID, &
|
PLASTICITY_DISLOKMC_ID, &
|
||||||
PLASTICITY_TITANMOD_ID, &
|
PLASTICITY_TITANMOD_ID, &
|
||||||
PLASTICITY_NONLOCAL_ID
|
PLASTICITY_NONLOCAL_ID
|
||||||
use constitutive_damage, only: &
|
|
||||||
constitutive_damageValue
|
|
||||||
use constitutive_j2, only: &
|
use constitutive_j2, only: &
|
||||||
constitutive_j2_dotState
|
constitutive_j2_dotState
|
||||||
use constitutive_phenopowerlaw, only: &
|
use constitutive_phenopowerlaw, only: &
|
||||||
|
@ -578,9 +576,9 @@ subroutine constitutive_collectDotState(Tstar_v, FeArray, FpArray, Temperature,
|
||||||
|
|
||||||
select case (phase_plasticity(material_phase(ipc,ip,el)))
|
select case (phase_plasticity(material_phase(ipc,ip,el)))
|
||||||
case (PLASTICITY_J2_ID)
|
case (PLASTICITY_J2_ID)
|
||||||
call constitutive_j2_dotState (Tstar_v,constitutive_damageValue(ipc,ip,el),ipc,ip,el)
|
call constitutive_j2_dotState (Tstar_v,ipc,ip,el)
|
||||||
case (PLASTICITY_PHENOPOWERLAW_ID)
|
case (PLASTICITY_PHENOPOWERLAW_ID)
|
||||||
call constitutive_phenopowerlaw_dotState(Tstar_v,constitutive_damageValue(ipc,ip,el),ipc,ip,el)
|
call constitutive_phenopowerlaw_dotState(Tstar_v,ipc,ip,el)
|
||||||
case (PLASTICITY_DISLOTWIN_ID)
|
case (PLASTICITY_DISLOTWIN_ID)
|
||||||
call constitutive_dislotwin_dotState (Tstar_v,Temperature,ipc,ip,el)
|
call constitutive_dislotwin_dotState (Tstar_v,Temperature,ipc,ip,el)
|
||||||
case (PLASTICITY_DISLOKMC_ID)
|
case (PLASTICITY_DISLOKMC_ID)
|
||||||
|
@ -725,7 +723,7 @@ function constitutive_postResults(Tstar_v, FeArray, temperature, ipc, ip, el)
|
||||||
case (PLASTICITY_TITANMOD_ID)
|
case (PLASTICITY_TITANMOD_ID)
|
||||||
constitutive_postResults = constitutive_titanmod_postResults (ipc,ip,el)
|
constitutive_postResults = constitutive_titanmod_postResults (ipc,ip,el)
|
||||||
case (PLASTICITY_J2_ID)
|
case (PLASTICITY_J2_ID)
|
||||||
constitutive_postResults= constitutive_j2_postResults (Tstar_v,ipc,ip,el)
|
constitutive_postResults= constitutive_j2_postResults (Tstar_v,constitutive_damageValue(ipc,ip,el),ipc,ip,el)
|
||||||
case (PLASTICITY_PHENOPOWERLAW_ID)
|
case (PLASTICITY_PHENOPOWERLAW_ID)
|
||||||
constitutive_postResults = constitutive_phenopowerlaw_postResults(Tstar_v,constitutive_damageValue(ipc,ip,el),ipc,ip,el)
|
constitutive_postResults = constitutive_phenopowerlaw_postResults(Tstar_v,constitutive_damageValue(ipc,ip,el),ipc,ip,el)
|
||||||
case (PLASTICITY_DISLOTWIN_ID)
|
case (PLASTICITY_DISLOTWIN_ID)
|
||||||
|
|
|
@ -421,7 +421,7 @@ end subroutine constitutive_j2_LpAndItsTangent
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
!> @brief calculates the rate of change of microstructure
|
!> @brief calculates the rate of change of microstructure
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
subroutine constitutive_j2_dotState(Tstar_v,damage,ipc,ip,el)
|
subroutine constitutive_j2_dotState(Tstar_v,ipc,ip,el)
|
||||||
use math, only: &
|
use math, only: &
|
||||||
math_mul6x6
|
math_mul6x6
|
||||||
use mesh, only: &
|
use mesh, only: &
|
||||||
|
@ -443,8 +443,6 @@ subroutine constitutive_j2_dotState(Tstar_v,damage,ipc,ip,el)
|
||||||
el !< element
|
el !< element
|
||||||
real(pReal), dimension(6) :: &
|
real(pReal), dimension(6) :: &
|
||||||
Tstar_dev_v !< deviatoric part of the 2nd Piola Kirchhoff stress tensor in Mandel notation
|
Tstar_dev_v !< deviatoric part of the 2nd Piola Kirchhoff stress tensor in Mandel notation
|
||||||
real(pReal), intent(in) :: &
|
|
||||||
damage
|
|
||||||
real(pReal) :: &
|
real(pReal) :: &
|
||||||
gamma_dot, & !< strainrate
|
gamma_dot, & !< strainrate
|
||||||
hardening, & !< hardening coefficient
|
hardening, & !< hardening coefficient
|
||||||
|
@ -469,7 +467,7 @@ subroutine constitutive_j2_dotState(Tstar_v,damage,ipc,ip,el)
|
||||||
! strain rate
|
! strain rate
|
||||||
gamma_dot = constitutive_j2_gdot0(instance) * ( sqrt(1.5_pReal) * norm_Tstar_dev &
|
gamma_dot = constitutive_j2_gdot0(instance) * ( sqrt(1.5_pReal) * norm_Tstar_dev &
|
||||||
/ &!-----------------------------------------------------------------------------------
|
/ &!-----------------------------------------------------------------------------------
|
||||||
(damage*constitutive_j2_fTaylor(instance)*plasticState(ph)%state(1,of)) )**constitutive_j2_n(instance)
|
(constitutive_j2_fTaylor(instance)*plasticState(ph)%state(1,of)) )**constitutive_j2_n(instance)
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
! hardening coefficient
|
! hardening coefficient
|
||||||
|
@ -505,7 +503,7 @@ end subroutine constitutive_j2_dotState
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
!> @brief return array of constitutive results
|
!> @brief return array of constitutive results
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
function constitutive_j2_postResults(Tstar_v,ipc,ip,el)
|
function constitutive_j2_postResults(Tstar_v,damage,ipc,ip,el)
|
||||||
use math, only: &
|
use math, only: &
|
||||||
math_mul6x6
|
math_mul6x6
|
||||||
use mesh, only: &
|
use mesh, only: &
|
||||||
|
@ -522,6 +520,8 @@ function constitutive_j2_postResults(Tstar_v,ipc,ip,el)
|
||||||
implicit none
|
implicit none
|
||||||
real(pReal), dimension(6), intent(in) :: &
|
real(pReal), dimension(6), intent(in) :: &
|
||||||
Tstar_v !< 2nd Piola Kirchhoff stress tensor in Mandel notation
|
Tstar_v !< 2nd Piola Kirchhoff stress tensor in Mandel notation
|
||||||
|
real(pReal), intent(in) :: &
|
||||||
|
damage
|
||||||
integer(pInt), intent(in) :: &
|
integer(pInt), intent(in) :: &
|
||||||
ipc, & !< component-ID of integration point
|
ipc, & !< component-ID of integration point
|
||||||
ip, & !< integration point
|
ip, & !< integration point
|
||||||
|
@ -562,7 +562,7 @@ function constitutive_j2_postResults(Tstar_v,ipc,ip,el)
|
||||||
constitutive_j2_postResults(c+1_pInt) = &
|
constitutive_j2_postResults(c+1_pInt) = &
|
||||||
constitutive_j2_gdot0(instance) * ( sqrt(1.5_pReal) * norm_Tstar_dev &
|
constitutive_j2_gdot0(instance) * ( sqrt(1.5_pReal) * norm_Tstar_dev &
|
||||||
/ &!----------------------------------------------------------------------------------
|
/ &!----------------------------------------------------------------------------------
|
||||||
(constitutive_j2_fTaylor(instance) * plasticState(ph)%state(1,of)) ) ** constitutive_j2_n(instance)
|
(damage * constitutive_j2_fTaylor(instance) * plasticState(ph)%state(1,of)) ) ** constitutive_j2_n(instance)
|
||||||
c = c + 1_pInt
|
c = c + 1_pInt
|
||||||
end select
|
end select
|
||||||
enddo outputsLoop
|
enddo outputsLoop
|
||||||
|
|
|
@ -821,7 +821,7 @@ end subroutine constitutive_phenopowerlaw_LpAndItsTangent
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
!> @brief calculates the rate of change of microstructure
|
!> @brief calculates the rate of change of microstructure
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
subroutine constitutive_phenopowerlaw_dotState(Tstar_v,damage,ipc,ip,el)
|
subroutine constitutive_phenopowerlaw_dotState(Tstar_v,ipc,ip,el)
|
||||||
use lattice, only: &
|
use lattice, only: &
|
||||||
lattice_Sslip_v, &
|
lattice_Sslip_v, &
|
||||||
lattice_Stwin_v, &
|
lattice_Stwin_v, &
|
||||||
|
@ -844,8 +844,6 @@ subroutine constitutive_phenopowerlaw_dotState(Tstar_v,damage,ipc,ip,el)
|
||||||
implicit none
|
implicit none
|
||||||
real(pReal), dimension(6), intent(in) :: &
|
real(pReal), dimension(6), intent(in) :: &
|
||||||
Tstar_v !< 2nd Piola Kirchhoff stress tensor in Mandel notation
|
Tstar_v !< 2nd Piola Kirchhoff stress tensor in Mandel notation
|
||||||
real(pReal), intent(in) :: &
|
|
||||||
damage
|
|
||||||
integer(pInt), intent(in) :: &
|
integer(pInt), intent(in) :: &
|
||||||
ipc, & !< component-ID of integration point
|
ipc, & !< component-ID of integration point
|
||||||
ip, & !< integration point
|
ip, & !< integration point
|
||||||
|
@ -920,8 +918,8 @@ subroutine constitutive_phenopowerlaw_dotState(Tstar_v,damage,ipc,ip,el)
|
||||||
dot_product(Tstar_v,lattice_Sslip_v(1:6,2*k+1,index_myFamily+i,ph))
|
dot_product(Tstar_v,lattice_Sslip_v(1:6,2*k+1,index_myFamily+i,ph))
|
||||||
enddo
|
enddo
|
||||||
gdot_slip(j) = constitutive_phenopowerlaw_gdot0_slip(instance)*0.5_pReal* &
|
gdot_slip(j) = constitutive_phenopowerlaw_gdot0_slip(instance)*0.5_pReal* &
|
||||||
((abs(tau_slip_pos(j))/(damage*plasticState(ph)%state(j,of)))**constitutive_phenopowerlaw_n_slip(instance) &
|
((abs(tau_slip_pos(j))/(plasticState(ph)%state(j,of)))**constitutive_phenopowerlaw_n_slip(instance) &
|
||||||
+(abs(tau_slip_neg(j))/(damage*plasticState(ph)%state(j,of)))**constitutive_phenopowerlaw_n_slip(instance))&
|
+(abs(tau_slip_neg(j))/(plasticState(ph)%state(j,of)))**constitutive_phenopowerlaw_n_slip(instance))&
|
||||||
*sign(1.0_pReal,tau_slip_pos(j))
|
*sign(1.0_pReal,tau_slip_pos(j))
|
||||||
enddo
|
enddo
|
||||||
enddo slipFamiliesLoop1
|
enddo slipFamiliesLoop1
|
||||||
|
@ -942,7 +940,7 @@ subroutine constitutive_phenopowerlaw_dotState(Tstar_v,damage,ipc,ip,el)
|
||||||
tau_twin(j) = dot_product(Tstar_v,lattice_Stwin_v(1:6,index_myFamily+i,ph))
|
tau_twin(j) = dot_product(Tstar_v,lattice_Stwin_v(1:6,index_myFamily+i,ph))
|
||||||
gdot_twin(j) = (1.0_pReal-plasticState(ph)%state(index_F,of))*& ! 1-F
|
gdot_twin(j) = (1.0_pReal-plasticState(ph)%state(index_F,of))*& ! 1-F
|
||||||
constitutive_phenopowerlaw_gdot0_twin(instance)*&
|
constitutive_phenopowerlaw_gdot0_twin(instance)*&
|
||||||
(abs(tau_twin(j))/(damage*plasticState(ph)%state(nslip+j,of)))**&
|
(abs(tau_twin(j))/(plasticState(ph)%state(nslip+j,of)))**&
|
||||||
constitutive_phenopowerlaw_n_twin(instance)*max(0.0_pReal,sign(1.0_pReal,tau_twin(j)))
|
constitutive_phenopowerlaw_n_twin(instance)*max(0.0_pReal,sign(1.0_pReal,tau_twin(j)))
|
||||||
enddo
|
enddo
|
||||||
enddo twinFamiliesLoop1
|
enddo twinFamiliesLoop1
|
||||||
|
@ -953,7 +951,7 @@ subroutine constitutive_phenopowerlaw_dotState(Tstar_v,damage,ipc,ip,el)
|
||||||
slipFamiliesLoop2: do f = 1_pInt,lattice_maxNslipFamily
|
slipFamiliesLoop2: do f = 1_pInt,lattice_maxNslipFamily
|
||||||
do i = 1_pInt,constitutive_phenopowerlaw_Nslip(f,instance) ! process each (active) slip system in family
|
do i = 1_pInt,constitutive_phenopowerlaw_Nslip(f,instance) ! process each (active) slip system in family
|
||||||
j = j+1_pInt
|
j = j+1_pInt
|
||||||
plasticState(ph)%dotState(j,of) = & ! evolution of slip resistance j
|
plasticState(ph)%dotState(j,of) = & ! evolution of slip resistance j
|
||||||
c_SlipSlip * left_SlipSlip(j) * &
|
c_SlipSlip * left_SlipSlip(j) * &
|
||||||
dot_product(constitutive_phenopowerlaw_hardeningMatrix_SlipSlip(j,1:nSlip,instance), &
|
dot_product(constitutive_phenopowerlaw_hardeningMatrix_SlipSlip(j,1:nSlip,instance), &
|
||||||
right_SlipSlip*abs(gdot_slip)) + & ! dot gamma_slip modulated by right-side slip factor
|
right_SlipSlip*abs(gdot_slip)) + & ! dot gamma_slip modulated by right-side slip factor
|
||||||
|
@ -968,7 +966,7 @@ subroutine constitutive_phenopowerlaw_dotState(Tstar_v,damage,ipc,ip,el)
|
||||||
|
|
||||||
j = 0_pInt
|
j = 0_pInt
|
||||||
twinFamiliesLoop2: do f = 1_pInt,lattice_maxNtwinFamily
|
twinFamiliesLoop2: do f = 1_pInt,lattice_maxNtwinFamily
|
||||||
index_myFamily = sum(lattice_NtwinSystem(1:f-1_pInt,ph)) ! at which index starts my family
|
index_myFamily = sum(lattice_NtwinSystem(1:f-1_pInt,ph)) ! at which index starts my family
|
||||||
do i = 1_pInt,constitutive_phenopowerlaw_Ntwin(f,instance) ! process each (active) twin system in family
|
do i = 1_pInt,constitutive_phenopowerlaw_Ntwin(f,instance) ! process each (active) twin system in family
|
||||||
j = j+1_pInt
|
j = j+1_pInt
|
||||||
plasticState(ph)%dotState(j+nSlip,of) = & ! evolution of twin resistance j
|
plasticState(ph)%dotState(j+nSlip,of) = & ! evolution of twin resistance j
|
||||||
|
|
Loading…
Reference in New Issue