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
|
S
|
||||||
end subroutine anisobrittle_dotState
|
end subroutine anisobrittle_dotState
|
||||||
|
|
||||||
|
|
||||||
module subroutine anisobrittle_results(phase,group)
|
module subroutine anisobrittle_results(phase,group)
|
||||||
integer, intent(in) :: phase
|
integer, intent(in) :: phase
|
||||||
character(len=*), intent(in) :: group
|
character(len=*), intent(in) :: group
|
||||||
|
@ -70,9 +71,9 @@ submodule(phase) damage
|
||||||
contains
|
contains
|
||||||
|
|
||||||
!----------------------------------------------------------------------------------------------
|
!----------------------------------------------------------------------------------------------
|
||||||
!< @brief initialize damage sources and kinematics mechanism
|
!< @brief Initialize damage mechanisms.
|
||||||
!----------------------------------------------------------------------------------------------
|
!----------------------------------------------------------------------------------------------
|
||||||
module subroutine damage_init
|
module subroutine damage_init()
|
||||||
|
|
||||||
integer :: &
|
integer :: &
|
||||||
ph, &
|
ph, &
|
||||||
|
@ -81,8 +82,6 @@ module subroutine damage_init
|
||||||
phases, &
|
phases, &
|
||||||
phase, &
|
phase, &
|
||||||
source
|
source
|
||||||
type(tList), pointer :: &
|
|
||||||
sources
|
|
||||||
logical:: damage_active
|
logical:: damage_active
|
||||||
|
|
||||||
print'(/,1x,a)', '<<<+- phase:damage init -+>>>'
|
print'(/,1x,a)', '<<<+- phase:damage init -+>>>'
|
||||||
|
@ -101,11 +100,9 @@ module subroutine damage_init
|
||||||
allocate(current(ph)%phi(Nmembers),source=1.0_pReal)
|
allocate(current(ph)%phi(Nmembers),source=1.0_pReal)
|
||||||
|
|
||||||
phase => phases%get_dict(ph)
|
phase => phases%get_dict(ph)
|
||||||
sources => phase%get_list('damage',defaultVal=emptyList)
|
source => phase%get_dict('damage',defaultVal=emptyDict)
|
||||||
if (sources%length > 1) error stop
|
if (source%length > 0) then
|
||||||
if (sources%length == 1) then
|
|
||||||
damage_active = .true.
|
damage_active = .true.
|
||||||
source => sources%get_dict(1)
|
|
||||||
param(ph)%mu = source%get_asFloat('mu')
|
param(ph)%mu = source%get_asFloat('mu')
|
||||||
param(ph)%l_c = source%get_asFloat('l_c')
|
param(ph)%l_c = source%get_asFloat('l_c')
|
||||||
end if
|
end if
|
||||||
|
@ -287,7 +284,7 @@ function integrateDamageState(Delta_t,ph,en) result(broken)
|
||||||
|
|
||||||
contains
|
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)
|
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)
|
function source_active(source_label) result(active_source)
|
||||||
|
|
||||||
|
@ -478,12 +475,12 @@ function source_active(source_label) result(active_source)
|
||||||
sources
|
sources
|
||||||
integer :: ph
|
integer :: ph
|
||||||
|
|
||||||
|
|
||||||
phases => config_material%get_dict('phase')
|
phases => config_material%get_dict('phase')
|
||||||
allocate(active_source(phases%length))
|
allocate(active_source(phases%length))
|
||||||
do ph = 1, phases%length
|
do ph = 1, phases%length
|
||||||
phase => phases%get_dict(ph)
|
phase => phases%get_dict(ph)
|
||||||
sources => phase%get_list('damage',defaultVal=emptyList)
|
src => phase%get_dict('damage',defaultVal=emptyDict)
|
||||||
src => sources%get_dict(1)
|
|
||||||
active_source(ph) = src%get_asString('type',defaultVal = 'x') == source_label
|
active_source(ph) = src%get_asString('type',defaultVal = 'x') == source_label
|
||||||
end do
|
end do
|
||||||
|
|
||||||
|
|
|
@ -39,8 +39,6 @@ module function anisobrittle_init() result(mySources)
|
||||||
phases, &
|
phases, &
|
||||||
phase, &
|
phase, &
|
||||||
src
|
src
|
||||||
type(tList), pointer :: &
|
|
||||||
sources
|
|
||||||
integer :: Nmembers,ph
|
integer :: Nmembers,ph
|
||||||
integer, dimension(:), allocatable :: N_cl
|
integer, dimension(:), allocatable :: N_cl
|
||||||
character(len=pStringLen) :: extmsg = ''
|
character(len=pStringLen) :: extmsg = ''
|
||||||
|
@ -60,10 +58,9 @@ module function anisobrittle_init() result(mySources)
|
||||||
do ph = 1, phases%length
|
do ph = 1, phases%length
|
||||||
if (mySources(ph)) then
|
if (mySources(ph)) then
|
||||||
phase => phases%get_dict(ph)
|
phase => phases%get_dict(ph)
|
||||||
sources => phase%get_list('damage')
|
src => phase%get_dict('damage')
|
||||||
|
|
||||||
associate(prm => param(ph))
|
associate(prm => param(ph))
|
||||||
src => sources%get_dict(1)
|
|
||||||
|
|
||||||
N_cl = src%get_as1dInt('N_cl',defaultVal=emptyIntArray)
|
N_cl = src%get_as1dInt('N_cl',defaultVal=emptyIntArray)
|
||||||
prm%sum_N_cl = sum(abs(N_cl))
|
prm%sum_N_cl = sum(abs(N_cl))
|
||||||
|
|
|
@ -38,8 +38,6 @@ module function isobrittle_init() result(mySources)
|
||||||
phases, &
|
phases, &
|
||||||
phase, &
|
phase, &
|
||||||
src
|
src
|
||||||
type(tList), pointer :: &
|
|
||||||
sources
|
|
||||||
integer :: Nmembers,ph
|
integer :: Nmembers,ph
|
||||||
character(len=pStringLen) :: extmsg = ''
|
character(len=pStringLen) :: extmsg = ''
|
||||||
|
|
||||||
|
@ -59,10 +57,9 @@ module function isobrittle_init() result(mySources)
|
||||||
do ph = 1, phases%length
|
do ph = 1, phases%length
|
||||||
if (mySources(ph)) then
|
if (mySources(ph)) then
|
||||||
phase => phases%get_dict(ph)
|
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))
|
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')
|
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)
|
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)
|
function kinematics_active2(kinematics_label) result(active_kinematics)
|
||||||
|
|
||||||
|
@ -123,14 +123,12 @@ function kinematics_active2(kinematics_label) result(active_kinematics)
|
||||||
kinematics
|
kinematics
|
||||||
integer :: ph
|
integer :: ph
|
||||||
|
|
||||||
|
|
||||||
phases => config_material%get_dict('phase')
|
phases => config_material%get_dict('phase')
|
||||||
allocate(active_kinematics(phases%length), source = .false.)
|
allocate(active_kinematics(phases%length), source = .false.)
|
||||||
do ph = 1, phases%length
|
do ph = 1, phases%length
|
||||||
phase => phases%get_dict(ph)
|
phase => phases%get_dict(ph)
|
||||||
kinematics => phase%get_list('damage',defaultVal=emptyList)
|
kinematics_type => phase%get_dict('damage',defaultVal=emptyDict)
|
||||||
if (kinematics%length < 1) return
|
|
||||||
kinematics_type => kinematics%get_dict(1)
|
|
||||||
if (.not. kinematics_type%contains('type')) continue
|
|
||||||
active_kinematics(ph) = kinematics_type%get_asString('type',defaultVal='n/a') == kinematics_label
|
active_kinematics(ph) = kinematics_type%get_asString('type',defaultVal='n/a') == kinematics_label
|
||||||
end do
|
end do
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue