modified damage diffusion tensor for brittle damage so this is now doing griffith's fracture criterion
This commit is contained in:
parent
616a44f898
commit
c0584b47e1
|
@ -32,6 +32,7 @@ module constitutive
|
|||
constitutive_getLocalDamage, &
|
||||
constitutive_putLocalDamage, &
|
||||
constitutive_getDamage, &
|
||||
constitutive_getDamageDiffusion33, &
|
||||
constitutive_getAdiabaticTemperature, &
|
||||
constitutive_putAdiabaticTemperature, &
|
||||
constitutive_getTemperature, &
|
||||
|
@ -1019,6 +1020,42 @@ function constitutive_getDamage(ipc, ip, el)
|
|||
end select
|
||||
|
||||
end function constitutive_getDamage
|
||||
|
||||
!--------------------------------------------------------------------------------------------------
|
||||
!> @brief returns damage diffusion tensor
|
||||
!--------------------------------------------------------------------------------------------------
|
||||
function constitutive_getDamageDiffusion33(ipc, ip, el)
|
||||
use prec, only: &
|
||||
pReal
|
||||
use lattice, only: &
|
||||
lattice_DamageDiffusion33
|
||||
use material, only: &
|
||||
material_phase, &
|
||||
LOCAL_DAMAGE_none_ID, &
|
||||
LOCAL_DAMAGE_brittle_ID, &
|
||||
LOCAL_DAMAGE_ductile_ID, &
|
||||
LOCAL_DAMAGE_gurson_ID, &
|
||||
phase_damage
|
||||
use damage_brittle, only: &
|
||||
damage_brittle_getDamageDiffusion33
|
||||
|
||||
implicit none
|
||||
integer(pInt), intent(in) :: &
|
||||
ipc, & !< grain number
|
||||
ip, & !< integration point number
|
||||
el !< element number
|
||||
real(pReal), dimension(3,3) :: &
|
||||
constitutive_getDamageDiffusion33
|
||||
|
||||
constitutive_getDamageDiffusion33 = lattice_DamageDiffusion33(1:3,1:3,material_phase(ipc,ip,el))
|
||||
select case(phase_damage(material_phase(ipc,ip,el)))
|
||||
case (LOCAL_DAMAGE_brittle_ID)
|
||||
constitutive_getDamageDiffusion33 = damage_brittle_getDamageDiffusion33(ipc, ip, el)
|
||||
|
||||
end select
|
||||
|
||||
end function constitutive_getDamageDiffusion33
|
||||
|
||||
!--------------------------------------------------------------------------------------------------
|
||||
!> @brief returns local (unregularised) temperature
|
||||
!--------------------------------------------------------------------------------------------------
|
||||
|
|
|
@ -46,6 +46,7 @@ module damage_brittle
|
|||
damage_brittle_microstructure, &
|
||||
constitutive_brittle_getDamage, &
|
||||
constitutive_brittle_putDamage, &
|
||||
damage_brittle_getDamageDiffusion33, &
|
||||
damage_brittle_postResults
|
||||
|
||||
contains
|
||||
|
@ -361,6 +362,34 @@ subroutine constitutive_brittle_putDamage(ipc, ip, el, localDamage)
|
|||
|
||||
end subroutine constitutive_brittle_putDamage
|
||||
|
||||
!--------------------------------------------------------------------------------------------------
|
||||
!> @brief returns brittle damage diffusion tensor
|
||||
!--------------------------------------------------------------------------------------------------
|
||||
function damage_brittle_getDamageDiffusion33(ipc, ip, el)
|
||||
use lattice, only: &
|
||||
lattice_DamageDiffusion33
|
||||
use material, only: &
|
||||
mappingConstitutive, &
|
||||
damageState
|
||||
|
||||
implicit none
|
||||
integer(pInt), intent(in) :: &
|
||||
ipc, & !< grain number
|
||||
ip, & !< integration point number
|
||||
el !< element number
|
||||
real(pReal), dimension(3,3) :: &
|
||||
damage_brittle_getDamageDiffusion33
|
||||
integer(pInt) :: &
|
||||
phase, constituent
|
||||
|
||||
phase = mappingConstitutive(2,ipc,ip,el)
|
||||
constituent = mappingConstitutive(1,ipc,ip,el)
|
||||
damage_brittle_getDamageDiffusion33 = &
|
||||
damageState(phase)%state(2,constituent)* &
|
||||
lattice_DamageDiffusion33(1:3,1:3,phase)
|
||||
|
||||
end function damage_brittle_getDamageDiffusion33
|
||||
|
||||
!--------------------------------------------------------------------------------------------------
|
||||
!> @brief return array of constitutive results
|
||||
!--------------------------------------------------------------------------------------------------
|
||||
|
|
|
@ -1029,16 +1029,15 @@ end function field_getThermalConductivity33
|
|||
function field_getDamageDiffusion33(ip,el)
|
||||
use mesh, only: &
|
||||
mesh_element
|
||||
use lattice, only: &
|
||||
lattice_DamageDiffusion33
|
||||
use material, only: &
|
||||
material_phase, &
|
||||
material_homog, &
|
||||
field_damage_type, &
|
||||
FIELD_DAMAGE_NONLOCAL_ID, &
|
||||
homogenization_Ngrains
|
||||
use crystallite, only: &
|
||||
crystallite_push33ToRef
|
||||
use constitutive, only: &
|
||||
constitutive_getDamageDiffusion33
|
||||
|
||||
implicit none
|
||||
real(pReal), dimension(3,3) :: field_getDamageDiffusion33
|
||||
|
@ -1054,7 +1053,7 @@ function field_getDamageDiffusion33(ip,el)
|
|||
case (FIELD_DAMAGE_NONLOCAL_ID)
|
||||
do ipc = 1, homogenization_Ngrains(mesh_element(3,el))
|
||||
field_getDamageDiffusion33 = field_getDamageDiffusion33 + &
|
||||
crystallite_push33ToRef(ipc,ip,el,lattice_DamageDiffusion33(:,:,material_phase(ipc,ip,el)))
|
||||
crystallite_push33ToRef(ipc,ip,el,constitutive_getDamageDiffusion33(ipc,ip,el))
|
||||
enddo
|
||||
|
||||
end select
|
||||
|
|
Loading…
Reference in New Issue