added functions to get degraded stiffness and undamaged intermediate deformation gradient.
This commit is contained in:
parent
80bb9a2e66
commit
9c8873f16c
|
@ -29,6 +29,7 @@ module constitutive
|
|||
constitutive_LpAndItsTangent, &
|
||||
constitutive_LiAndItsTangent, &
|
||||
constitutive_getFi, &
|
||||
constitutive_getUndamagedFi, &
|
||||
constitutive_putFi, &
|
||||
constitutive_getFi0, &
|
||||
constitutive_getPartionedFi0, &
|
||||
|
@ -519,10 +520,13 @@ function constitutive_damagedC(ipc,ip,el)
|
|||
use material, only: &
|
||||
material_phase, &
|
||||
LOCAL_DAMAGE_isoBrittle_ID, &
|
||||
LOCAL_DAMAGE_isoDuctile_ID, &
|
||||
LOCAL_DAMAGE_phaseField_ID, &
|
||||
phase_damage
|
||||
use damage_isoBrittle, only: &
|
||||
damage_isoBrittle_getDamagedC66
|
||||
use damage_isoDuctile, only: &
|
||||
damage_isoDuctile_getDamagedC66
|
||||
use damage_phaseField, only: &
|
||||
damage_phaseField_getDamagedC66
|
||||
|
||||
|
@ -537,6 +541,11 @@ function constitutive_damagedC(ipc,ip,el)
|
|||
case (LOCAL_DAMAGE_isoBrittle_ID)
|
||||
constitutive_damagedC = damage_isoBrittle_getDamagedC66(constitutive_homogenizedC(ipc,ip,el), &
|
||||
ipc,ip,el)
|
||||
|
||||
case (LOCAL_DAMAGE_isoDuctile_ID)
|
||||
constitutive_damagedC = damage_isoDuctile_getDamagedC66(constitutive_homogenizedC(ipc,ip,el), &
|
||||
ipc,ip,el)
|
||||
|
||||
case (LOCAL_DAMAGE_phaseField_ID)
|
||||
constitutive_damagedC = damage_phaseField_getDamagedC66(constitutive_homogenizedC(ipc,ip,el), &
|
||||
ipc,ip,el)
|
||||
|
@ -847,6 +856,41 @@ pure function constitutive_getFi(ipc, ip, el)
|
|||
|
||||
end function constitutive_getFi
|
||||
|
||||
!--------------------------------------------------------------------------------------------------
|
||||
!> @brief contains the constitutive equation for calculating the undamaged
|
||||
!> intermediate deformation gradient
|
||||
!--------------------------------------------------------------------------------------------------
|
||||
pure function constitutive_getUndamagedFi(ipc, ip, el)
|
||||
use prec, only: &
|
||||
pReal
|
||||
use math, only: &
|
||||
math_I3, &
|
||||
math_mul33x33
|
||||
use material, only: &
|
||||
phase_thermal, &
|
||||
material_phase, &
|
||||
LOCAL_THERMAL_adiabatic_ID
|
||||
use thermal_adiabatic, only: &
|
||||
thermal_adiabatic_getFT
|
||||
|
||||
implicit none
|
||||
integer(pInt), intent(in) :: &
|
||||
ipc, & !< grain number
|
||||
ip, & !< integration point number
|
||||
el !< element number
|
||||
real(pReal), dimension(3,3) :: &
|
||||
constitutive_getUndamagedFi !< intermediate deformation gradient
|
||||
|
||||
constitutive_getUndamagedFi = math_I3
|
||||
|
||||
select case (phase_thermal(material_phase(ipc,ip,el)))
|
||||
case (LOCAL_THERMAL_adiabatic_ID)
|
||||
constitutive_getUndamagedFi = math_mul33x33(constitutive_getUndamagedFi,thermal_adiabatic_getFT (ipc, ip, el))
|
||||
|
||||
end select
|
||||
|
||||
end function constitutive_getUndamagedFi
|
||||
|
||||
|
||||
!--------------------------------------------------------------------------------------------------
|
||||
!> @brief contains the constitutive equation for calculating the intermediate deformation gradient
|
||||
|
|
|
@ -47,6 +47,7 @@ module damage_isoDuctile
|
|||
damage_isoDuctile_getSlipDamage, &
|
||||
damage_isoDuctile_putLocalDamage, &
|
||||
damage_isoDuctile_getLocalDamage, &
|
||||
damage_isoDuctile_getDamagedC66, &
|
||||
damage_isoDuctile_postResults
|
||||
|
||||
contains
|
||||
|
@ -392,6 +393,35 @@ function damage_isoDuctile_getLocalDamage(ipc, ip, el)
|
|||
damageState(mappingConstitutive(2,ipc,ip,el))%state(1,mappingConstitutive(1,ipc,ip,el))
|
||||
|
||||
end function damage_isoDuctile_getLocalDamage
|
||||
!--------------------------------------------------------------------------------------------------
|
||||
!> @brief returns ductile damaged stiffness tensor
|
||||
!--------------------------------------------------------------------------------------------------
|
||||
function damage_isoDuctile_getDamagedC66(C, ipc, ip, el)
|
||||
use material, only: &
|
||||
mappingConstitutive, &
|
||||
damageState
|
||||
|
||||
implicit none
|
||||
integer(pInt), intent(in) :: &
|
||||
ipc, & !< grain number
|
||||
ip, & !< integration point number
|
||||
el !< element number
|
||||
real(pReal), intent(in), dimension(6,6) :: &
|
||||
C
|
||||
real(pReal), dimension(6,6) :: &
|
||||
damage_isoDuctile_getDamagedC66
|
||||
integer(pInt) :: &
|
||||
phase, constituent
|
||||
real(pReal) :: &
|
||||
damage
|
||||
|
||||
phase = mappingConstitutive(2,ipc,ip,el)
|
||||
constituent = mappingConstitutive(1,ipc,ip,el)
|
||||
damage = damage_isoDuctile_getDamage(ipc, ip, el)
|
||||
damage_isoDuctile_getDamagedC66 = &
|
||||
damage*damage*C
|
||||
|
||||
end function damage_isoDuctile_getDamagedC66
|
||||
|
||||
!--------------------------------------------------------------------------------------------------
|
||||
!> @brief return array of constitutive results
|
||||
|
|
Loading…
Reference in New Issue