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