fixed bug in timesyncing procedure: if any ip that synchronizes its time step did not converge, all nonlocals become terminally ill; before, this led to an infinite loop in crystallite
This commit is contained in:
parent
03a88d4798
commit
6a9b19e4c0
|
@ -622,14 +622,28 @@ do while (any(crystallite_todo(:,:,FEsolving_execELem(1):FEsolving_execElem(2)))
|
||||||
if (any(crystallite_syncSubFrac)) then
|
if (any(crystallite_syncSubFrac)) then
|
||||||
|
|
||||||
! Just did a time synchronization.
|
! Just did a time synchronization.
|
||||||
! Dont do anything else than winding the synchronizers forward.
|
! If all synchrnizers converged, then do nothing else than winding them forward.
|
||||||
|
! If any of the cynchronizers did not converge, something went completely wrong
|
||||||
|
! and its not clear how to fix this, so all nonlocals become terminally ill.
|
||||||
|
|
||||||
crystallite_clearToWindForward = crystallite_localPlasticity(1,:,:) .or. crystallite_syncSubFrac
|
if (any(crystallite_syncSubFrac .and. .not. crystallite_converged(1,:,:))) then
|
||||||
crystallite_clearToCutback = crystallite_localPlasticity(1,:,:)
|
where(.not. crystallite_localPlasticity)
|
||||||
if (iand(debug_level(debug_crystallite),debug_levelExtensive) /= 0_pInt) then
|
crystallite_substep = 0.0_pReal
|
||||||
!$OMP CRITICAL (write2out)
|
crystallite_todo = .false.
|
||||||
write(6,'(a,i6)') '<< CRYST >> time synchronization: wind forward'
|
endwhere
|
||||||
!$OMP END CRITICAL (write2out)
|
if (iand(debug_level(debug_crystallite),debug_levelExtensive) /= 0_pInt) then
|
||||||
|
!$OMP CRITICAL (write2out)
|
||||||
|
write(6,'(a,i6)') '<< CRYST >> time synchronization: failed'
|
||||||
|
!$OMP END CRITICAL (write2out)
|
||||||
|
endif
|
||||||
|
else
|
||||||
|
crystallite_clearToWindForward = crystallite_localPlasticity(1,:,:) .or. crystallite_syncSubFrac
|
||||||
|
crystallite_clearToCutback = crystallite_localPlasticity(1,:,:)
|
||||||
|
if (iand(debug_level(debug_crystallite),debug_levelExtensive) /= 0_pInt) then
|
||||||
|
!$OMP CRITICAL (write2out)
|
||||||
|
write(6,'(a,i6)') '<< CRYST >> time synchronization: wind forward'
|
||||||
|
!$OMP END CRITICAL (write2out)
|
||||||
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
elseif (any(crystallite_syncSubFracCompleted)) then
|
elseif (any(crystallite_syncSubFracCompleted)) then
|
||||||
|
|
Loading…
Reference in New Issue