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:
commit
12c0919566
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