bounding the analytically integrated damage variable

This commit is contained in:
Pratheek Shanthraj 2014-12-08 14:05:38 +00:00
parent 347dac74c6
commit 67c3eb3a2e
2 changed files with 15 additions and 10 deletions

View File

@ -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) = &
max(residualStiffness, &
min(damageState(phase)%state0(2,constituent), &
damage_isoBrittle_critStrainEnergy(instance)/sum(abs(stress*strain)))
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

View File

@ -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) = &
max(residualStiffness, &
min(damageState(phase)%state0(2,constituent), &
damage_phaseField_surfaceEnergy(instance)/ &
(2.0_pReal*(sum(abs(stress*strain)) + Cv*damage_phaseField_vacancyFormationEnergy(instance))))
(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