From 0a01d5f3a109e64bd6b49f61ab66a339ee8ec976 Mon Sep 17 00:00:00 2001 From: Pratheek Shanthraj Date: Sun, 10 Aug 2014 10:47:12 +0000 Subject: [PATCH] hardening does not depend on damage --- code/constitutive.f90 | 8 +++----- code/constitutive_j2.f90 | 12 ++++++------ code/constitutive_phenopowerlaw.f90 | 14 ++++++-------- 3 files changed, 15 insertions(+), 19 deletions(-) diff --git a/code/constitutive.f90 b/code/constitutive.f90 index 085dadffb..aefe0586e 100644 --- a/code/constitutive.f90 +++ b/code/constitutive.f90 @@ -538,8 +538,6 @@ subroutine constitutive_collectDotState(Tstar_v, FeArray, FpArray, Temperature, PLASTICITY_DISLOKMC_ID, & PLASTICITY_TITANMOD_ID, & PLASTICITY_NONLOCAL_ID - use constitutive_damage, only: & - constitutive_damageValue use constitutive_j2, only: & constitutive_j2_dotState 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))) 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) - 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) call constitutive_dislotwin_dotState (Tstar_v,Temperature,ipc,ip,el) case (PLASTICITY_DISLOKMC_ID) @@ -725,7 +723,7 @@ function constitutive_postResults(Tstar_v, FeArray, temperature, ipc, ip, el) case (PLASTICITY_TITANMOD_ID) constitutive_postResults = constitutive_titanmod_postResults (ipc,ip,el) 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) constitutive_postResults = constitutive_phenopowerlaw_postResults(Tstar_v,constitutive_damageValue(ipc,ip,el),ipc,ip,el) case (PLASTICITY_DISLOTWIN_ID) diff --git a/code/constitutive_j2.f90 b/code/constitutive_j2.f90 index 2b73c2d7b..23e53c406 100644 --- a/code/constitutive_j2.f90 +++ b/code/constitutive_j2.f90 @@ -421,7 +421,7 @@ end subroutine constitutive_j2_LpAndItsTangent !-------------------------------------------------------------------------------------------------- !> @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: & math_mul6x6 use mesh, only: & @@ -443,8 +443,6 @@ subroutine constitutive_j2_dotState(Tstar_v,damage,ipc,ip,el) el !< element real(pReal), dimension(6) :: & Tstar_dev_v !< deviatoric part of the 2nd Piola Kirchhoff stress tensor in Mandel notation - real(pReal), intent(in) :: & - damage real(pReal) :: & gamma_dot, & !< strainrate hardening, & !< hardening coefficient @@ -469,7 +467,7 @@ subroutine constitutive_j2_dotState(Tstar_v,damage,ipc,ip,el) ! strain rate 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 @@ -505,7 +503,7 @@ end subroutine constitutive_j2_dotState !-------------------------------------------------------------------------------------------------- !> @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: & math_mul6x6 use mesh, only: & @@ -522,6 +520,8 @@ function constitutive_j2_postResults(Tstar_v,ipc,ip,el) implicit none real(pReal), dimension(6), intent(in) :: & Tstar_v !< 2nd Piola Kirchhoff stress tensor in Mandel notation + real(pReal), intent(in) :: & + damage integer(pInt), intent(in) :: & ipc, & !< component-ID of 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_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 end select enddo outputsLoop diff --git a/code/constitutive_phenopowerlaw.f90 b/code/constitutive_phenopowerlaw.f90 index ed8340916..ce93bfcab 100644 --- a/code/constitutive_phenopowerlaw.f90 +++ b/code/constitutive_phenopowerlaw.f90 @@ -821,7 +821,7 @@ end subroutine constitutive_phenopowerlaw_LpAndItsTangent !-------------------------------------------------------------------------------------------------- !> @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: & lattice_Sslip_v, & lattice_Stwin_v, & @@ -844,8 +844,6 @@ subroutine constitutive_phenopowerlaw_dotState(Tstar_v,damage,ipc,ip,el) implicit none real(pReal), dimension(6), intent(in) :: & Tstar_v !< 2nd Piola Kirchhoff stress tensor in Mandel notation - real(pReal), intent(in) :: & - damage integer(pInt), intent(in) :: & ipc, & !< component-ID of 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)) enddo 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_neg(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))/(plasticState(ph)%state(j,of)))**constitutive_phenopowerlaw_n_slip(instance))& *sign(1.0_pReal,tau_slip_pos(j)) enddo 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)) gdot_twin(j) = (1.0_pReal-plasticState(ph)%state(index_F,of))*& ! 1-F 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))) enddo enddo twinFamiliesLoop1 @@ -953,7 +951,7 @@ subroutine constitutive_phenopowerlaw_dotState(Tstar_v,damage,ipc,ip,el) slipFamiliesLoop2: do f = 1_pInt,lattice_maxNslipFamily do i = 1_pInt,constitutive_phenopowerlaw_Nslip(f,instance) ! process each (active) slip system in family 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) * & dot_product(constitutive_phenopowerlaw_hardeningMatrix_SlipSlip(j,1:nSlip,instance), & 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 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 j = j+1_pInt plasticState(ph)%dotState(j+nSlip,of) = & ! evolution of twin resistance j