diff --git a/src/damage_nonlocal.f90 b/src/damage_nonlocal.f90 index 4423c1e3a..1ae327833 100644 --- a/src/damage_nonlocal.f90 +++ b/src/damage_nonlocal.f90 @@ -23,7 +23,7 @@ module damage_nonlocal real(pReal) :: & charLength !< characteristic length scale for gradient problems end type tNumerics - + type(tparameters), dimension(:), allocatable :: & param type(tNumerics), private :: & @@ -33,7 +33,6 @@ module damage_nonlocal damage_nonlocal_init, & damage_nonlocal_getSourceAndItsTangent, & damage_nonlocal_getDiffusion, & - damage_nonlocal_getMobility, & damage_nonlocal_putNonLocalDamage, & damage_nonlocal_results @@ -104,7 +103,7 @@ subroutine damage_nonlocal_getSourceAndItsTangent(phiDot, dPhiDot_dPhi, phi, ip, phiDot = 0.0_pReal dPhiDot_dPhi = 0.0_pReal - + call constitutive_damage_getRateAndItsTangents(phiDot, dPhiDot_dPhi, phi, ip, el) phiDot = phiDot/real(homogenization_Nconstituents(material_homogenizationAt(el)),pReal) dPhiDot_dPhi = dPhiDot_dPhi/real(homogenization_Nconstituents(material_homogenizationAt(el)),pReal) @@ -139,29 +138,6 @@ function damage_nonlocal_getDiffusion(ip,el) end function damage_nonlocal_getDiffusion -!-------------------------------------------------------------------------------------------------- -!> @brief Returns homogenized nonlocal damage mobility -!-------------------------------------------------------------------------------------------------- -real(pReal) function damage_nonlocal_getMobility(ip,el) - - integer, intent(in) :: & - ip, & !< integration point number - el !< element number - integer :: & - co - - damage_nonlocal_getMobility = 0.0_pReal - - do co = 1, homogenization_Nconstituents(material_homogenizationAt(el)) - damage_nonlocal_getMobility = damage_nonlocal_getMobility + lattice_M(material_phaseAt(co,el)) - enddo - - damage_nonlocal_getMobility = damage_nonlocal_getMobility/& - real(homogenization_Nconstituents(material_homogenizationAt(el)),pReal) - -end function damage_nonlocal_getMobility - - !-------------------------------------------------------------------------------------------------- !> @brief updated nonlocal damage field with solution from damage phase field PDE !-------------------------------------------------------------------------------------------------- diff --git a/src/homogenization.f90 b/src/homogenization.f90 index 048bf46df..816da4fa6 100644 --- a/src/homogenization.f90 +++ b/src/homogenization.f90 @@ -145,6 +145,15 @@ module homogenization real(pReal), intent(out) :: Tdot end subroutine thermal_conduction_getSource + module function damage_nonlocal_getMobility(ip,el) result(M) + integer, intent(in) :: & + ip, & !< integration point number + el !< element number + integer :: & + co + real(pReal) :: M + end function damage_nonlocal_getMobility + end interface public :: & @@ -154,6 +163,7 @@ module homogenization thermal_conduction_getConductivity, & thermal_conduction_getMassDensity, & thermal_conduction_getSource, & + damage_nonlocal_getMobility, & homogenization_thermal_setfield, & homogenization_thermal_T, & homogenization_forward, & diff --git a/src/homogenization_damage.f90 b/src/homogenization_damage.f90 index ad029cce8..3a6758914 100644 --- a/src/homogenization_damage.f90 +++ b/src/homogenization_damage.f90 @@ -3,6 +3,8 @@ !-------------------------------------------------------------------------------------------------- submodule(homogenization) homogenization_damage + use lattice + type :: tDataContainer real(pReal), dimension(:), allocatable :: phi end type tDataContainer @@ -78,4 +80,28 @@ module subroutine damage_partition(ce) end subroutine damage_partition + +!-------------------------------------------------------------------------------------------------- +!> @brief Returns homogenized nonlocal damage mobility +!-------------------------------------------------------------------------------------------------- +module function damage_nonlocal_getMobility(ip,el) result(M) + + integer, intent(in) :: & + ip, & !< integration point number + el !< element number + integer :: & + co + real(pReal) :: M + + M = 0.0_pReal + + do co = 1, homogenization_Nconstituents(material_homogenizationAt(el)) + M = M + lattice_M(material_phaseAt(co,el)) + enddo + + M = M/real(homogenization_Nconstituents(material_homogenizationAt(el)),pReal) + +end function damage_nonlocal_getMobility + + end submodule homogenization_damage