part of homogenization
This commit is contained in:
parent
b58465415b
commit
1f94a64ca6
|
@ -23,7 +23,7 @@ module damage_nonlocal
|
||||||
real(pReal) :: &
|
real(pReal) :: &
|
||||||
charLength !< characteristic length scale for gradient problems
|
charLength !< characteristic length scale for gradient problems
|
||||||
end type tNumerics
|
end type tNumerics
|
||||||
|
|
||||||
type(tparameters), dimension(:), allocatable :: &
|
type(tparameters), dimension(:), allocatable :: &
|
||||||
param
|
param
|
||||||
type(tNumerics), private :: &
|
type(tNumerics), private :: &
|
||||||
|
@ -33,7 +33,6 @@ module damage_nonlocal
|
||||||
damage_nonlocal_init, &
|
damage_nonlocal_init, &
|
||||||
damage_nonlocal_getSourceAndItsTangent, &
|
damage_nonlocal_getSourceAndItsTangent, &
|
||||||
damage_nonlocal_getDiffusion, &
|
damage_nonlocal_getDiffusion, &
|
||||||
damage_nonlocal_getMobility, &
|
|
||||||
damage_nonlocal_putNonLocalDamage, &
|
damage_nonlocal_putNonLocalDamage, &
|
||||||
damage_nonlocal_results
|
damage_nonlocal_results
|
||||||
|
|
||||||
|
@ -104,7 +103,7 @@ subroutine damage_nonlocal_getSourceAndItsTangent(phiDot, dPhiDot_dPhi, phi, ip,
|
||||||
|
|
||||||
phiDot = 0.0_pReal
|
phiDot = 0.0_pReal
|
||||||
dPhiDot_dPhi = 0.0_pReal
|
dPhiDot_dPhi = 0.0_pReal
|
||||||
|
|
||||||
call constitutive_damage_getRateAndItsTangents(phiDot, dPhiDot_dPhi, phi, ip, el)
|
call constitutive_damage_getRateAndItsTangents(phiDot, dPhiDot_dPhi, phi, ip, el)
|
||||||
phiDot = phiDot/real(homogenization_Nconstituents(material_homogenizationAt(el)),pReal)
|
phiDot = phiDot/real(homogenization_Nconstituents(material_homogenizationAt(el)),pReal)
|
||||||
dPhiDot_dPhi = dPhiDot_dPhi/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
|
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
|
!> @brief updated nonlocal damage field with solution from damage phase field PDE
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
|
|
|
@ -145,6 +145,15 @@ module homogenization
|
||||||
real(pReal), intent(out) :: Tdot
|
real(pReal), intent(out) :: Tdot
|
||||||
end subroutine thermal_conduction_getSource
|
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
|
end interface
|
||||||
|
|
||||||
public :: &
|
public :: &
|
||||||
|
@ -154,6 +163,7 @@ module homogenization
|
||||||
thermal_conduction_getConductivity, &
|
thermal_conduction_getConductivity, &
|
||||||
thermal_conduction_getMassDensity, &
|
thermal_conduction_getMassDensity, &
|
||||||
thermal_conduction_getSource, &
|
thermal_conduction_getSource, &
|
||||||
|
damage_nonlocal_getMobility, &
|
||||||
homogenization_thermal_setfield, &
|
homogenization_thermal_setfield, &
|
||||||
homogenization_thermal_T, &
|
homogenization_thermal_T, &
|
||||||
homogenization_forward, &
|
homogenization_forward, &
|
||||||
|
|
|
@ -3,6 +3,8 @@
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
submodule(homogenization) homogenization_damage
|
submodule(homogenization) homogenization_damage
|
||||||
|
|
||||||
|
use lattice
|
||||||
|
|
||||||
type :: tDataContainer
|
type :: tDataContainer
|
||||||
real(pReal), dimension(:), allocatable :: phi
|
real(pReal), dimension(:), allocatable :: phi
|
||||||
end type tDataContainer
|
end type tDataContainer
|
||||||
|
@ -78,4 +80,28 @@ module subroutine damage_partition(ce)
|
||||||
end subroutine damage_partition
|
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
|
end submodule homogenization_damage
|
||||||
|
|
Loading…
Reference in New Issue