now capturing "terminallyIll" for basic solution, should end in a automatic cutback of time steps for the spectral solver

This commit is contained in:
Martin Diehl 2012-08-29 05:50:42 +00:00
parent 3106b8ce0c
commit d83150be1b
2 changed files with 5 additions and 3 deletions

View File

@ -169,7 +169,8 @@ type(solutionState) function basic_solution(guessmode,timeinc,timeinc_old,P_BC,F
Utilities_constitutiveResponse Utilities_constitutiveResponse
use FEsolving, only: & use FEsolving, only: &
restartWrite restartWrite, &
terminallyIll
implicit none implicit none
!-------------------------------------------------------------------------------------------------- !--------------------------------------------------------------------------------------------------
@ -248,6 +249,7 @@ type(solutionState) function basic_solution(guessmode,timeinc,timeinc_old,P_BC,F
! evaluate constitutive response ! evaluate constitutive response
call Utilities_constitutiveResponse(coordinates,F_lastInc,F,temperature,timeinc,& call Utilities_constitutiveResponse(coordinates,F_lastInc,F,temperature,timeinc,&
P,C,P_av,ForwardData,rotation_BC) P,C,P_av,ForwardData,rotation_BC)
basic_solution%termIll = terminallyIll
ForwardData = .False. ForwardData = .False.
!-------------------------------------------------------------------------------------------------- !--------------------------------------------------------------------------------------------------
@ -267,7 +269,7 @@ type(solutionState) function basic_solution(guessmode,timeinc,timeinc_old,P_BC,F
call Utilities_backwardFFT() call Utilities_backwardFFT()
F = F - reshape(field_real(1:res(1),1:res(2),1:res(3),1:3,1:3),shape(F),order=[3,4,5,1,2]) ! F(x)^(n+1) = F(x)^(n) + correction; *wgt: correcting for missing normalization F = F - reshape(field_real(1:res(1),1:res(2),1:res(3),1:3,1:3),shape(F),order=[3,4,5,1,2]) ! F(x)^(n+1) = F(x)^(n) + correction; *wgt: correcting for missing normalization
basic_solution%converged = basic_Converged(err_div,P_av,err_stress,P_av) basic_solution%converged = basic_Converged(err_div,P_av,err_stress,P_av)
if (basic_solution%converged .and. iter > itmin) exit if ((basic_solution%converged .and. iter > itmin) .or. basic_solution%termIll) exit
enddo convergenceLoop enddo convergenceLoop
end function basic_solution end function basic_solution

View File

@ -56,7 +56,7 @@ module DAMASK_spectral_Utilities
type solutionState type solutionState
logical :: converged = .false. logical :: converged = .false.
logical :: regrid = .false. logical :: regrid = .false.
logical :: term_ill = .false. logical :: termIll = .false.
end type solutionState end type solutionState
type boundaryCondition type boundaryCondition