From 67c3eb3a2ef2e7a7b92b3744dba626fb9a9c53f2 Mon Sep 17 00:00:00 2001 From: Pratheek Shanthraj Date: Mon, 8 Dec 2014 14:05:38 +0000 Subject: [PATCH] bounding the analytically integrated damage variable --- code/damage_isoBrittle.f90 | 9 ++++++--- code/damage_phaseField.f90 | 16 +++++++++------- 2 files changed, 15 insertions(+), 10 deletions(-) diff --git a/code/damage_isoBrittle.f90 b/code/damage_isoBrittle.f90 index 52687a12e..9c13ab338 100644 --- a/code/damage_isoBrittle.f90 +++ b/code/damage_isoBrittle.f90 @@ -266,6 +266,8 @@ end subroutine damage_isoBrittle_aTolState !> @brief calculates derived quantities from state !-------------------------------------------------------------------------------------------------- subroutine damage_isoBrittle_microstructure(C, Fe, subdt, ipc, ip, el) + use numerics, only: & + residualStiffness use material, only: & mappingConstitutive, & phase_damageInstance, & @@ -303,13 +305,14 @@ subroutine damage_isoBrittle_microstructure(C, Fe, subdt, ipc, ip, el) stress = math_mul66x6(C,strain) damageState(phase)%state(2,constituent) = & - min(damageState(phase)%state0(2,constituent), & - damage_isoBrittle_critStrainEnergy(instance)/sum(abs(stress*strain))) + max(residualStiffness, & + min(damageState(phase)%state0(2,constituent), & + damage_isoBrittle_critStrainEnergy(instance)/(2.0_pReal*sum(abs(stress*strain))))) !< residualStiffness < damage < damage0 damageState(phase)%state(1,constituent) = & damageState(phase)%state(2,constituent) + & (damageState(phase)%subState0(1,constituent) - damageState(phase)%state(2,constituent))* & - exp(-subdt/lattice_DamageMobility(phase)) + exp(-subdt/(damageState(phase)%state(2,constituent)*lattice_DamageMobility(phase))) end subroutine damage_isoBrittle_microstructure diff --git a/code/damage_phaseField.f90 b/code/damage_phaseField.f90 index 60bd39d56..d7a565a56 100644 --- a/code/damage_phaseField.f90 +++ b/code/damage_phaseField.f90 @@ -271,6 +271,8 @@ end subroutine damage_phaseField_aTolState !> @brief calculates derived quantities from state !-------------------------------------------------------------------------------------------------- subroutine damage_phaseField_microstructure(C, Fe, Cv, subdt, ipc, ip, el) + use numerics, only: & + residualStiffness use material, only: & mappingConstitutive, & phase_damageInstance, & @@ -311,14 +313,15 @@ subroutine damage_phaseField_microstructure(C, Fe, Cv, subdt, ipc, ip, el) stress = math_mul66x6(C,strain) damageState(phase)%state(2,constituent) = & - min(damageState(phase)%state0(2,constituent), & - damage_phaseField_surfaceEnergy(instance)/ & - (2.0_pReal*(sum(abs(stress*strain)) + Cv*damage_phaseField_vacancyFormationEnergy(instance)))) + max(residualStiffness, & + min(damageState(phase)%state0(2,constituent), & + (1.0_pReal - Cv)*damage_phaseField_surfaceEnergy(instance)/ & + (2.0_pReal*(sum(abs(stress*strain)) + Cv*damage_phaseField_vacancyFormationEnergy(instance))))) damageState(phase)%state(1,constituent) = & - damageState(phase)%state(2,constituent)*(1.0_pReal - Cv) + & - (damageState(phase)%subState0(1,constituent) - damageState(phase)%state(2,constituent)*(1.0_pReal - Cv))* & - exp(-subdt/lattice_DamageMobility(phase)) + damageState(phase)%state(2,constituent) + & + (damageState(phase)%subState0(1,constituent) - damageState(phase)%state(2,constituent))* & + exp(-subdt/(damageState(phase)%state(2,constituent)*lattice_DamageMobility(phase))) end subroutine damage_phaseField_microstructure @@ -419,7 +422,6 @@ function damage_phaseField_getDamageDiffusion33(ipc, ip, el) phase = mappingConstitutive(2,ipc,ip,el) constituent = mappingConstitutive(1,ipc,ip,el) damage_phaseField_getDamageDiffusion33 = & - damageState(phase)%state(2,constituent)* & lattice_DamageDiffusion33(1:3,1:3,phase) end function damage_phaseField_getDamageDiffusion33