From 4f69c7630d00a26b8035781e7f45d0bb30171274 Mon Sep 17 00:00:00 2001 From: Martin Diehl Date: Sat, 17 Dec 2022 06:58:01 +0100 Subject: [PATCH] competing damage models are not implemented while there might be the chance that we need this, we better focus on today's capabilities and don't make the material.yaml syntax more complicated in anticipation of potential changes --- PRIVATE | 2 +- src/phase_damage.f90 | 21 +++++++++------------ src/phase_damage_anisobrittle.f90 | 5 +---- src/phase_damage_isobrittle.f90 | 5 +---- src/phase_mechanical_eigen.f90 | 10 ++++------ 5 files changed, 16 insertions(+), 27 deletions(-) diff --git a/PRIVATE b/PRIVATE index e9254133c..75460bbb5 160000 --- a/PRIVATE +++ b/PRIVATE @@ -1 +1 @@ -Subproject commit e9254133c1e9ea3855a4fd17078d4c6f7d8728b1 +Subproject commit 75460bbb55d8c8f48c43b0843c1cbc80a95f37e1 diff --git a/src/phase_damage.f90 b/src/phase_damage.f90 index ff262bc41..ad592a846 100644 --- a/src/phase_damage.f90 +++ b/src/phase_damage.f90 @@ -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 diff --git a/src/phase_damage_anisobrittle.f90 b/src/phase_damage_anisobrittle.f90 index 86b133cb7..072dbcb7f 100644 --- a/src/phase_damage_anisobrittle.f90 +++ b/src/phase_damage_anisobrittle.f90 @@ -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)) diff --git a/src/phase_damage_isobrittle.f90 b/src/phase_damage_isobrittle.f90 index 8d0054c0c..ff91265b9 100644 --- a/src/phase_damage_isobrittle.f90 +++ b/src/phase_damage_isobrittle.f90 @@ -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') diff --git a/src/phase_mechanical_eigen.f90 b/src/phase_mechanical_eigen.f90 index 263ef9db5..1e639b051 100644 --- a/src/phase_mechanical_eigen.f90 +++ b/src/phase_mechanical_eigen.f90 @@ -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