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:
parent
902f9d2e97
commit
4f69c7630d
2
PRIVATE
2
PRIVATE
|
@ -1 +1 @@
|
|||
Subproject commit e9254133c1e9ea3855a4fd17078d4c6f7d8728b1
|
||||
Subproject commit 75460bbb55d8c8f48c43b0843c1cbc80a95f37e1
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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))
|
||||
|
|
|
@ -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')
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
Loading…
Reference in New Issue