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
This commit is contained in:
Martin Diehl 2022-12-17 06:58:01 +01:00
parent 902f9d2e97
commit 4f69c7630d
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