for state integrator 2 (explicit euler) and 3 (adaptive 2nd order euler): don't do any state evolution during stiffness perturbation, but only stress integration, since for those cases the state is not restored after every perturbation step
This commit is contained in:
parent
b9f97ba5da
commit
36676029e1
|
@ -2045,23 +2045,25 @@ relTemperatureResiduum = 0.0_pReal
|
||||||
!$OMP ENDDO
|
!$OMP ENDDO
|
||||||
|
|
||||||
|
|
||||||
! --- STATE JUMP ---
|
if (numerics_integrationMode < 2) then ! in stiffness calculation mode we do not need to do the state integration again, since this is not influenced by a small perturbation in F
|
||||||
|
! --- STATE JUMP ---
|
||||||
|
|
||||||
!$OMP DO
|
!$OMP DO
|
||||||
do e = eIter(1),eIter(2); do i = iIter(1,e),iIter(2,e); do g = gIter(1,e),gIter(2,e) ! iterate over elements, ips and grains
|
do e = eIter(1),eIter(2); do i = iIter(1,e),iIter(2,e); do g = gIter(1,e),gIter(2,e) ! iterate over elements, ips and grains
|
||||||
if (crystallite_todo(g,i,e) .and. crystallite_converged(g,i,e)) then ! converged and still alive...
|
if (crystallite_todo(g,i,e) .and. crystallite_converged(g,i,e)) then ! converged and still alive...
|
||||||
crystallite_todo(g,i,e) = .false. ! ... integration done
|
crystallite_todo(g,i,e) = .false. ! ... integration done
|
||||||
crystallite_converged(g,i,e) = crystallite_stateJump(g,i,e) ! if state jump fails, then convergence is broken
|
crystallite_converged(g,i,e) = crystallite_stateJump(g,i,e) ! if state jump fails, then convergence is broken
|
||||||
if (.not. crystallite_converged(g,i,e)) then
|
if (.not. crystallite_converged(g,i,e)) then
|
||||||
if (.not. crystallite_localPlasticity(g,i,e)) then ! if broken non-local...
|
if (.not. crystallite_localPlasticity(g,i,e)) then ! if broken non-local...
|
||||||
!$OMP CRITICAL (checkTodo)
|
!$OMP CRITICAL (checkTodo)
|
||||||
crystallite_todo = crystallite_todo .and. crystallite_localPlasticity ! ...all non-locals skipped
|
crystallite_todo = crystallite_todo .and. crystallite_localPlasticity ! ...all non-locals skipped
|
||||||
!$OMP END CRITICAL (checkTodo)
|
!$OMP END CRITICAL (checkTodo)
|
||||||
|
endif
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
endif
|
enddo; enddo; enddo
|
||||||
enddo; enddo; enddo
|
!$OMP ENDDO
|
||||||
!$OMP ENDDO
|
endif
|
||||||
|
|
||||||
!$OMP END PARALLEL
|
!$OMP END PARALLEL
|
||||||
|
|
||||||
|
@ -2236,20 +2238,22 @@ endif
|
||||||
!$OMP ENDDO
|
!$OMP ENDDO
|
||||||
|
|
||||||
|
|
||||||
! --- STATE JUMP ---
|
if (numerics_integrationMode < 2) then ! in stiffness calculation mode we do not need to do the state integration again, since this is not influenced by a small perturbation in F
|
||||||
|
! --- STATE JUMP ---
|
||||||
|
|
||||||
!$OMP DO
|
!$OMP DO
|
||||||
do e = eIter(1),eIter(2); do i = iIter(1,e),iIter(2,e); do g = gIter(1,e),gIter(2,e) ! iterate over elements, ips and grains
|
do e = eIter(1),eIter(2); do i = iIter(1,e),iIter(2,e); do g = gIter(1,e),gIter(2,e) ! iterate over elements, ips and grains
|
||||||
if (crystallite_todo(g,i,e)) then
|
if (crystallite_todo(g,i,e)) then
|
||||||
crystallite_todo(g,i,e) = crystallite_stateJump(g,i,e)
|
crystallite_todo(g,i,e) = crystallite_stateJump(g,i,e)
|
||||||
if (.not. crystallite_todo(g,i,e) .and. .not. crystallite_localPlasticity(g,i,e)) then ! if broken non-local...
|
if (.not. crystallite_todo(g,i,e) .and. .not. crystallite_localPlasticity(g,i,e)) then ! if broken non-local...
|
||||||
!$OMP CRITICAL (checkTodo)
|
!$OMP CRITICAL (checkTodo)
|
||||||
crystallite_todo = crystallite_todo .and. crystallite_localPlasticity ! ...all non-locals skipped
|
crystallite_todo = crystallite_todo .and. crystallite_localPlasticity ! ...all non-locals skipped
|
||||||
!$OMP END CRITICAL (checkTodo)
|
!$OMP END CRITICAL (checkTodo)
|
||||||
|
endif
|
||||||
endif
|
endif
|
||||||
endif
|
enddo; enddo; enddo
|
||||||
enddo; enddo; enddo
|
!$OMP ENDDO
|
||||||
!$OMP ENDDO
|
endif
|
||||||
|
|
||||||
|
|
||||||
! --- SET CONVERGENCE FLAG ---
|
! --- SET CONVERGENCE FLAG ---
|
||||||
|
|
Loading…
Reference in New Issue