Merge branch '245-no-need-for-multiple-damage-mechanisms' into 'development'

competing damage models are not implemented

Closes #245

See merge request damask/DAMASK!689
This commit is contained in:
Yi Hu 2023-01-02 15:43:53 +00:00
commit 12c0919566
5 changed files with 16 additions and 27 deletions

@ -1 +1 @@
Subproject commit e9254133c1e9ea3855a4fd17078d4c6f7d8728b1
Subproject commit 75460bbb55d8c8f48c43b0843c1cbc80a95f37e1

View File

@ -55,6 +55,7 @@ submodule(phase) damage
S
end subroutine anisobrittle_dotState
module subroutine anisobrittle_results(phase,group)
integer, intent(in) :: phase
character(len=*), intent(in) :: group
@ -70,9 +71,9 @@ submodule(phase) damage
contains
!----------------------------------------------------------------------------------------------
!< @brief initialize damage sources and kinematics mechanism
!< @brief Initialize damage mechanisms.
!----------------------------------------------------------------------------------------------
module subroutine damage_init
module subroutine damage_init()
integer :: &
ph, &
@ -81,8 +82,6 @@ module subroutine damage_init
phases, &
phase, &
source
type(tList), pointer :: &
sources
logical:: damage_active
print'(/,1x,a)', '<<<+- phase:damage init -+>>>'
@ -101,11 +100,9 @@ module subroutine damage_init
allocate(current(ph)%phi(Nmembers),source=1.0_pReal)
phase => phases%get_dict(ph)
sources => phase%get_list('damage',defaultVal=emptyList)
if (sources%length > 1) error stop
if (sources%length == 1) then
source => phase%get_dict('damage',defaultVal=emptyDict)
if (source%length > 0) then
damage_active = .true.
source => sources%get_dict(1)
param(ph)%mu = source%get_asFloat('mu')
param(ph)%l_c = source%get_asFloat('l_c')
end if
@ -287,7 +284,7 @@ function integrateDamageState(Delta_t,ph,en) result(broken)
contains
!--------------------------------------------------------------------------------------------------
!> @brief calculate the damping for correction of state and dot state
!> @brief Calculate the damping for correction of state and dot state.
!--------------------------------------------------------------------------------------------------
real(pReal) pure function damper(omega_0,omega_1,omega_2)
@ -463,7 +460,7 @@ end function phase_damage_deltaState
!--------------------------------------------------------------------------------------------------
!> @brief checks if a source mechanism is active or not
!> @brief Check if a source mechanism is active or not.
!--------------------------------------------------------------------------------------------------
function source_active(source_label) result(active_source)
@ -478,12 +475,12 @@ function source_active(source_label) result(active_source)
sources
integer :: ph
phases => config_material%get_dict('phase')
allocate(active_source(phases%length))
do ph = 1, phases%length
phase => phases%get_dict(ph)
sources => phase%get_list('damage',defaultVal=emptyList)
src => sources%get_dict(1)
src => phase%get_dict('damage',defaultVal=emptyDict)
active_source(ph) = src%get_asString('type',defaultVal = 'x') == source_label
end do

View File

@ -39,8 +39,6 @@ module function anisobrittle_init() result(mySources)
phases, &
phase, &
src
type(tList), pointer :: &
sources
integer :: Nmembers,ph
integer, dimension(:), allocatable :: N_cl
character(len=pStringLen) :: extmsg = ''
@ -60,10 +58,9 @@ module function anisobrittle_init() result(mySources)
do ph = 1, phases%length
if (mySources(ph)) then
phase => phases%get_dict(ph)
sources => phase%get_list('damage')
src => phase%get_dict('damage')
associate(prm => param(ph))
src => sources%get_dict(1)
N_cl = src%get_as1dInt('N_cl',defaultVal=emptyIntArray)
prm%sum_N_cl = sum(abs(N_cl))

View File

@ -38,8 +38,6 @@ module function isobrittle_init() result(mySources)
phases, &
phase, &
src
type(tList), pointer :: &
sources
integer :: Nmembers,ph
character(len=pStringLen) :: extmsg = ''
@ -59,10 +57,9 @@ module function isobrittle_init() result(mySources)
do ph = 1, phases%length
if (mySources(ph)) then
phase => phases%get_dict(ph)
sources => phase%get_list('damage')
src => phase%get_dict('damage')
associate(prm => param(ph), dlt => deltaState(ph), stt => state(ph))
src => sources%get_dict(1)
prm%W_crit = src%get_asFloat('G_crit')/src%get_asFloat('l_c')

View File

@ -73,7 +73,7 @@ end subroutine eigen_init
!--------------------------------------------------------------------------------------------------
!> @brief checks if a kinematic mechanism is active or not
!> @brief Check if an eigen kinematic mechanism is active.
!--------------------------------------------------------------------------------------------------
function kinematics_active(kinematics_label,kinematics_length) result(active_kinematics)
@ -108,7 +108,7 @@ end function kinematics_active
!--------------------------------------------------------------------------------------------------
!> @brief checks if a kinematic mechanism is active or not
!> @brief Checks if a damage kinematic mechanism is active.
!--------------------------------------------------------------------------------------------------
function kinematics_active2(kinematics_label) result(active_kinematics)
@ -123,14 +123,12 @@ function kinematics_active2(kinematics_label) result(active_kinematics)
kinematics
integer :: ph
phases => config_material%get_dict('phase')
allocate(active_kinematics(phases%length), source = .false.)
do ph = 1, phases%length
phase => phases%get_dict(ph)
kinematics => phase%get_list('damage',defaultVal=emptyList)
if (kinematics%length < 1) return
kinematics_type => kinematics%get_dict(1)
if (.not. kinematics_type%contains('type')) continue
kinematics_type => phase%get_dict('damage',defaultVal=emptyDict)
active_kinematics(ph) = kinematics_type%get_asString('type',defaultVal='n/a') == kinematics_label
end do