fixed cut back issue with Marc. Necessity to introduce compMode 7 to capture tangent restoration at lovl=4 call.
This commit is contained in:
parent
974116808b
commit
992077e88e
|
@ -297,7 +297,8 @@ subroutine CPFEM_general(mode, ffn, ffn1, Temperature, dt, element, IP, cauchySt
|
||||||
CPFEM_calc_done = .false.
|
CPFEM_calc_done = .false.
|
||||||
|
|
||||||
! --+>> RECYCLING OF FORMER RESULTS (MARC SPECIALTY) <<+--
|
! --+>> RECYCLING OF FORMER RESULTS (MARC SPECIALTY) <<+--
|
||||||
case (6)
|
case (6,7)
|
||||||
|
if (mode == 7) CPFEM_dcsde = CPFEM_dcsde_knownGood ! --+>> RESTORE CONSISTENT JACOBIAN FROM FORMER CONVERGED INC
|
||||||
! do nothing
|
! do nothing
|
||||||
|
|
||||||
end select
|
end select
|
||||||
|
|
|
@ -190,11 +190,15 @@ subroutine hypela2(&
|
||||||
|
|
||||||
computationMode = 2 ! calc + init
|
computationMode = 2 ! calc + init
|
||||||
!$OMP CRITICAL (write2out)
|
!$OMP CRITICAL (write2out)
|
||||||
write (6,'(i6,x,i2,x,a)') n(1),nn,'first call special case..!'; call flush(6)
|
write (6,'(a,x,i6,x,i2)') '<< hypela2 >> first call special case..!',n(1),nn; call flush(6)
|
||||||
!$OMP END CRITICAL (write2out)
|
!$OMP END CRITICAL (write2out)
|
||||||
|
|
||||||
else if (lovl == 4) then ! Marc requires stiffness in separate call
|
else if (lovl == 4) then ! Marc requires stiffness in separate call
|
||||||
computationMode = 6 ! --> just return known value
|
if ( timinc < theDelta ) then ! first after cutback
|
||||||
|
computationMode = 7 ! --> restore tangent and return
|
||||||
|
else
|
||||||
|
computationMode = 6 ! --> just return known value
|
||||||
|
endif
|
||||||
else
|
else
|
||||||
cp_en = mesh_FEasCP('elem',n(1))
|
cp_en = mesh_FEasCP('elem',n(1))
|
||||||
if (theTime < cptim .or. theInc /= inc) then ! reached convergence
|
if (theTime < cptim .or. theInc /= inc) then ! reached convergence
|
||||||
|
@ -203,17 +207,16 @@ subroutine hypela2(&
|
||||||
terminallyIll = .false.
|
terminallyIll = .false.
|
||||||
cycleCounter = 0
|
cycleCounter = 0
|
||||||
!$OMP CRITICAL (write2out)
|
!$OMP CRITICAL (write2out)
|
||||||
write (6,'(i6,x,i2,x,a)') n(1),nn,'lastIncConverged + outdated'; call flush(6)
|
write (6,'(i6,x,i2,x,a)') n(1),nn,'<< hypela2 >> lastIncConverged + outdated'; call flush(6)
|
||||||
!$OMP END CRITICAL (write2out)
|
!$OMP END CRITICAL (write2out)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if ( timinc < theDelta ) then ! cutBack
|
if ( timinc < theDelta ) then ! cutBack
|
||||||
calcMode = .true. ! pretend last step was calculation
|
calcMode = .true. ! pretend last step was calculation
|
||||||
cutBack = .true.
|
|
||||||
terminallyIll = .false.
|
terminallyIll = .false.
|
||||||
cycleCounter = 0
|
cycleCounter = 0
|
||||||
!$OMP CRITICAL (write2out)
|
!$OMP CRITICAL (write2out)
|
||||||
write(6,'(i6,x,i2,x,a)') n(1),nn,'cutback detected..!'; call flush(6)
|
write(6,'(i6,x,i2,x,a)') n(1),nn,'<< hypela2 >> cutback detected..!'; call flush(6)
|
||||||
!$OMP END CRITICAL (write2out)
|
!$OMP END CRITICAL (write2out)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
@ -232,13 +235,10 @@ subroutine hypela2(&
|
||||||
computationMode = 2 ! plain calc
|
computationMode = 2 ! plain calc
|
||||||
endif
|
endif
|
||||||
else ! now collect
|
else ! now collect
|
||||||
if ( lastMode .ne. calcMode(nn,cp_en) ) call debug_info() ! first after ping pong reports debugging
|
if ( lastMode /= calcMode(nn,cp_en) ) call debug_info() ! first after ping pong reports debugging
|
||||||
if ( lastIncConverged ) then
|
if ( lastIncConverged ) then
|
||||||
lastIncConverged = .false.
|
lastIncConverged = .false.
|
||||||
computationMode = 4 ! collect and backup Jacobian after convergence
|
computationMode = 4 ! collect and backup Jacobian after convergence
|
||||||
elseif ( cutBack ) then
|
|
||||||
cutBack = .false.
|
|
||||||
computationMode = 5 ! collect and restore Jacobian after cutback
|
|
||||||
else
|
else
|
||||||
computationMode = 3 ! plain collect
|
computationMode = 3 ! plain collect
|
||||||
endif
|
endif
|
||||||
|
|
Loading…
Reference in New Issue