sorting
This commit is contained in:
parent
b452cce2f6
commit
f28fe0812e
|
@ -351,22 +351,6 @@ module constitutive
|
||||||
integer, intent(in) :: e, i, g
|
integer, intent(in) :: e, i, g
|
||||||
end subroutine integrateStateFPI
|
end subroutine integrateStateFPI
|
||||||
|
|
||||||
module subroutine integrateStateEuler(g,i,e)
|
|
||||||
integer, intent(in) :: e, i, g
|
|
||||||
end subroutine integrateStateEuler
|
|
||||||
|
|
||||||
module subroutine integrateStateAdaptiveEuler(g,i,e)
|
|
||||||
integer, intent(in) :: e, i, g
|
|
||||||
end subroutine integrateStateAdaptiveEuler
|
|
||||||
|
|
||||||
module subroutine integrateStateRK4(g,i,e)
|
|
||||||
integer, intent(in) :: e, i, g
|
|
||||||
end subroutine integrateStateRK4
|
|
||||||
|
|
||||||
module subroutine integrateStateRKCK45(g,i,e)
|
|
||||||
integer, intent(in) :: e, i, g
|
|
||||||
end subroutine integrateStateRKCK45
|
|
||||||
|
|
||||||
end interface
|
end interface
|
||||||
|
|
||||||
|
|
||||||
|
@ -696,7 +680,7 @@ end function constitutive_thermal_collectDotState
|
||||||
!> @brief for constitutive models having an instantaneous change of state
|
!> @brief for constitutive models having an instantaneous change of state
|
||||||
!> will return false if delta state is not needed/supported by the constitutive model
|
!> will return false if delta state is not needed/supported by the constitutive model
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
function constitutive_deltaState_source(Fe, ipc, ip, el, phase, of) result(broken)
|
function constitutive_damage_deltaState(Fe, ipc, ip, el, phase, of) result(broken)
|
||||||
|
|
||||||
integer, intent(in) :: &
|
integer, intent(in) :: &
|
||||||
ipc, & !< component-ID of integration point
|
ipc, & !< component-ID of integration point
|
||||||
|
@ -735,7 +719,7 @@ function constitutive_deltaState_source(Fe, ipc, ip, el, phase, of) result(broke
|
||||||
|
|
||||||
enddo SourceLoop
|
enddo SourceLoop
|
||||||
|
|
||||||
end function constitutive_deltaState_source
|
end function constitutive_damage_deltaState
|
||||||
|
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
|
@ -918,20 +902,6 @@ subroutine crystallite_init
|
||||||
if(num%nState < 1) call IO_error(301,ext_msg='nState')
|
if(num%nState < 1) call IO_error(301,ext_msg='nState')
|
||||||
if(num%nStress< 1) call IO_error(301,ext_msg='nStress')
|
if(num%nStress< 1) call IO_error(301,ext_msg='nStress')
|
||||||
|
|
||||||
select case(num_crystallite%get_asString('integrator',defaultVal='FPI'))
|
|
||||||
case('FPI')
|
|
||||||
integrateState => integrateStateFPI
|
|
||||||
case('Euler')
|
|
||||||
integrateState => integrateStateEuler
|
|
||||||
case('AdaptiveEuler')
|
|
||||||
integrateState => integrateStateAdaptiveEuler
|
|
||||||
case('RK4')
|
|
||||||
integrateState => integrateStateRK4
|
|
||||||
case('RKCK45')
|
|
||||||
integrateState => integrateStateRKCK45
|
|
||||||
case default
|
|
||||||
call IO_error(301,ext_msg='integrator')
|
|
||||||
end select
|
|
||||||
|
|
||||||
phases => config_material%get('phase')
|
phases => config_material%get('phase')
|
||||||
|
|
||||||
|
@ -1505,7 +1475,7 @@ subroutine integrateSourceState(g,i,e)
|
||||||
enddo
|
enddo
|
||||||
|
|
||||||
if(crystallite_converged(g,i,e)) then
|
if(crystallite_converged(g,i,e)) then
|
||||||
broken = constitutive_deltaState_source(crystallite_Fe(1:3,1:3,g,i,e),g,i,e,p,c)
|
broken = constitutive_damage_deltaState(crystallite_Fe(1:3,1:3,g,i,e),g,i,e,p,c)
|
||||||
exit iteration
|
exit iteration
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
|
|
@ -289,6 +289,7 @@ module subroutine mech_init
|
||||||
p, &
|
p, &
|
||||||
stiffDegradationCtr
|
stiffDegradationCtr
|
||||||
class(tNode), pointer :: &
|
class(tNode), pointer :: &
|
||||||
|
num_crystallite, &
|
||||||
phases, &
|
phases, &
|
||||||
phase, &
|
phase, &
|
||||||
mech, &
|
mech, &
|
||||||
|
@ -358,6 +359,30 @@ module subroutine mech_init
|
||||||
phase_plasticityInstance(p) = count(phase_plasticity(1:p) == phase_plasticity(p))
|
phase_plasticityInstance(p) = count(phase_plasticity(1:p) == phase_plasticity(p))
|
||||||
enddo
|
enddo
|
||||||
|
|
||||||
|
num_crystallite => config_numerics%get('crystallite',defaultVal=emptyDict)
|
||||||
|
|
||||||
|
select case(num_crystallite%get_asString('integrator',defaultVal='FPI'))
|
||||||
|
|
||||||
|
case('FPI')
|
||||||
|
integrateState => integrateStateFPI
|
||||||
|
|
||||||
|
case('Euler')
|
||||||
|
integrateState => integrateStateEuler
|
||||||
|
|
||||||
|
case('AdaptiveEuler')
|
||||||
|
integrateState => integrateStateAdaptiveEuler
|
||||||
|
|
||||||
|
case('RK4')
|
||||||
|
integrateState => integrateStateRK4
|
||||||
|
|
||||||
|
case('RKCK45')
|
||||||
|
integrateState => integrateStateRKCK45
|
||||||
|
|
||||||
|
case default
|
||||||
|
call IO_error(301,ext_msg='integrator')
|
||||||
|
|
||||||
|
end select
|
||||||
|
|
||||||
end subroutine mech_init
|
end subroutine mech_init
|
||||||
|
|
||||||
|
|
||||||
|
@ -1024,7 +1049,7 @@ end subroutine integrateStateFPI
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
!> @brief integrate state with 1st order explicit Euler method
|
!> @brief integrate state with 1st order explicit Euler method
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
module subroutine integrateStateEuler(g,i,e)
|
subroutine integrateStateEuler(g,i,e)
|
||||||
|
|
||||||
integer, intent(in) :: &
|
integer, intent(in) :: &
|
||||||
e, & !< element index in element loop
|
e, & !< element index in element loop
|
||||||
|
@ -1062,7 +1087,7 @@ end subroutine integrateStateEuler
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
!> @brief integrate stress, state with 1st order Euler method with adaptive step size
|
!> @brief integrate stress, state with 1st order Euler method with adaptive step size
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
module subroutine integrateStateAdaptiveEuler(g,i,e)
|
subroutine integrateStateAdaptiveEuler(g,i,e)
|
||||||
|
|
||||||
integer, intent(in) :: &
|
integer, intent(in) :: &
|
||||||
e, & !< element index in element loop
|
e, & !< element index in element loop
|
||||||
|
@ -1115,7 +1140,7 @@ end subroutine integrateStateAdaptiveEuler
|
||||||
!---------------------------------------------------------------------------------------------------
|
!---------------------------------------------------------------------------------------------------
|
||||||
!> @brief Integrate state (including stress integration) with the classic Runge Kutta method
|
!> @brief Integrate state (including stress integration) with the classic Runge Kutta method
|
||||||
!---------------------------------------------------------------------------------------------------
|
!---------------------------------------------------------------------------------------------------
|
||||||
module subroutine integrateStateRK4(g,i,e)
|
subroutine integrateStateRK4(g,i,e)
|
||||||
|
|
||||||
integer, intent(in) :: g,i,e
|
integer, intent(in) :: g,i,e
|
||||||
|
|
||||||
|
@ -1138,7 +1163,7 @@ end subroutine integrateStateRK4
|
||||||
!---------------------------------------------------------------------------------------------------
|
!---------------------------------------------------------------------------------------------------
|
||||||
!> @brief Integrate state (including stress integration) with the Cash-Carp method
|
!> @brief Integrate state (including stress integration) with the Cash-Carp method
|
||||||
!---------------------------------------------------------------------------------------------------
|
!---------------------------------------------------------------------------------------------------
|
||||||
module subroutine integrateStateRKCK45(g,i,e)
|
subroutine integrateStateRKCK45(g,i,e)
|
||||||
|
|
||||||
integer, intent(in) :: g,i,e
|
integer, intent(in) :: g,i,e
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue