function statement is more clear
This commit is contained in:
parent
580bb76b4c
commit
751d1d7582
|
@ -816,7 +816,7 @@ subroutine crystallite_stressAndItsTangent(updateJaco)
|
||||||
endif
|
endif
|
||||||
else
|
else
|
||||||
subFracIntermediate = maxval(crystallite_subFrac, mask=.not.crystallite_localPlasticity)
|
subFracIntermediate = maxval(crystallite_subFrac, mask=.not.crystallite_localPlasticity)
|
||||||
if (subFracIntermediate == 0.0_pReal) then
|
if (abs(subFracIntermediate) > tiny(0.0_pReal)) then
|
||||||
crystallite_neighborEnforcedCutback = .false. ! look for ips that require a cutback because of a nonconverged neighbor
|
crystallite_neighborEnforcedCutback = .false. ! look for ips that require a cutback because of a nonconverged neighbor
|
||||||
!$OMP PARALLEL
|
!$OMP PARALLEL
|
||||||
!$OMP DO PRIVATE(neighboring_e,neighboring_i)
|
!$OMP DO PRIVATE(neighboring_e,neighboring_i)
|
||||||
|
@ -858,7 +858,7 @@ subroutine crystallite_stressAndItsTangent(updateJaco)
|
||||||
!$OMP DO PRIVATE(neighboring_e,neighboring_i)
|
!$OMP DO PRIVATE(neighboring_e,neighboring_i)
|
||||||
do e = FEsolving_execElem(1),FEsolving_execElem(2)
|
do e = FEsolving_execElem(1),FEsolving_execElem(2)
|
||||||
do i = FEsolving_execIP(1,e),FEsolving_execIP(2,e)
|
do i = FEsolving_execIP(1,e),FEsolving_execIP(2,e)
|
||||||
if (.not. crystallite_localPlasticity(1,i,e) .and. crystallite_subFrac(1,i,e) == 0.0_pReal) then
|
if (.not. crystallite_localPlasticity(1,i,e) .and. abs(crystallite_subFrac(1,i,e)) > tiny(0.0_pReal)) then
|
||||||
do n = 1_pInt,FE_NipNeighbors(FE_celltype(FE_geomtype(mesh_element(2,e))))
|
do n = 1_pInt,FE_NipNeighbors(FE_celltype(FE_geomtype(mesh_element(2,e))))
|
||||||
neighboring_e = mesh_ipNeighborhood(1,n,i,e)
|
neighboring_e = mesh_ipNeighborhood(1,n,i,e)
|
||||||
neighboring_i = mesh_ipNeighborhood(2,n,i,e)
|
neighboring_i = mesh_ipNeighborhood(2,n,i,e)
|
||||||
|
@ -3358,6 +3358,8 @@ end subroutine crystallite_integrateStateFPI
|
||||||
!> returns true, if state jump was successfull or not needed. false indicates NaN in delta state
|
!> returns true, if state jump was successfull or not needed. false indicates NaN in delta state
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
logical function crystallite_stateJump(g,i,e)
|
logical function crystallite_stateJump(g,i,e)
|
||||||
|
use prec, only: &
|
||||||
|
prec_isNaN
|
||||||
use debug, only: &
|
use debug, only: &
|
||||||
debug_level, &
|
debug_level, &
|
||||||
debug_crystallite, &
|
debug_crystallite, &
|
||||||
|
@ -3391,7 +3393,7 @@ logical function crystallite_stateJump(g,i,e)
|
||||||
p = mappingConstitutive(2,g,i,e)
|
p = mappingConstitutive(2,g,i,e)
|
||||||
call constitutive_collectDeltaState(crystallite_Tstar_v(1:6,g,i,e), crystallite_Fe(1:3,1:3,g,i,e), g,i,e)
|
call constitutive_collectDeltaState(crystallite_Tstar_v(1:6,g,i,e), crystallite_Fe(1:3,1:3,g,i,e), g,i,e)
|
||||||
mySizePlasticDeltaState = plasticState(p)%sizeDeltaState
|
mySizePlasticDeltaState = plasticState(p)%sizeDeltaState
|
||||||
if( any(plasticState(p)%deltaState(:,c) /= plasticState(p)%deltaState(:,c))) then ! NaN occured in deltaState
|
if( any(prec_isNaN(plasticState(p)%deltaState(:,c)))) then ! NaN occured in deltaState
|
||||||
crystallite_stateJump = .false.
|
crystallite_stateJump = .false.
|
||||||
return
|
return
|
||||||
endif
|
endif
|
||||||
|
@ -3399,7 +3401,7 @@ logical function crystallite_stateJump(g,i,e)
|
||||||
plasticState(p)%deltaState(1:mySizePlasticDeltaState,c)
|
plasticState(p)%deltaState(1:mySizePlasticDeltaState,c)
|
||||||
do mySource = 1_pInt, phase_Nsources(p)
|
do mySource = 1_pInt, phase_Nsources(p)
|
||||||
mySizeSourceDeltaState = sourceState(p)%p(mySource)%sizeDeltaState
|
mySizeSourceDeltaState = sourceState(p)%p(mySource)%sizeDeltaState
|
||||||
if( any(sourceState(p)%p(mySource)%deltaState(:,c) /= sourceState(p)%p(mySource)%deltaState(:,c))) then ! NaN occured in deltaState
|
if( any(prec_isNaN(sourceState(p)%p(mySource)%deltaState(:,c)))) then ! NaN occured in deltaState
|
||||||
crystallite_stateJump = .false.
|
crystallite_stateJump = .false.
|
||||||
return
|
return
|
||||||
endif
|
endif
|
||||||
|
@ -3463,7 +3465,8 @@ logical function crystallite_integrateStress(&
|
||||||
timeFraction &
|
timeFraction &
|
||||||
)
|
)
|
||||||
use prec, only: pLongInt, &
|
use prec, only: pLongInt, &
|
||||||
tol_math_check
|
tol_math_check, &
|
||||||
|
prec_isNaN
|
||||||
use numerics, only: nStress, &
|
use numerics, only: nStress, &
|
||||||
aTol_crystalliteStress, &
|
aTol_crystalliteStress, &
|
||||||
rTol_crystalliteStress, &
|
rTol_crystalliteStress, &
|
||||||
|
@ -3728,7 +3731,7 @@ logical function crystallite_integrateStress(&
|
||||||
aTol_crystalliteStress) ! minimum lower cutoff
|
aTol_crystalliteStress) ! minimum lower cutoff
|
||||||
residuumLp = Lpguess - Lp_constitutive
|
residuumLp = Lpguess - Lp_constitutive
|
||||||
|
|
||||||
if (any(residuumLp /= residuumLp)) then ! NaN in residuum...
|
if (any(prec_isNaN(residuumLp))) then ! NaN in residuum...
|
||||||
#ifndef _OPENMP
|
#ifndef _OPENMP
|
||||||
if (iand(debug_level(debug_crystallite), debug_levelBasic) /= 0_pInt) &
|
if (iand(debug_level(debug_crystallite), debug_levelBasic) /= 0_pInt) &
|
||||||
write(6,'(a,i8,1x,a,i8,a,1x,i2,1x,i3,a,i3,a)') '<< CRYST >> integrateStress encountered NaN at el (elFE) ip g ', &
|
write(6,'(a,i8,1x,a,i8,a,1x,i2,1x,i3,a,i3,a)') '<< CRYST >> integrateStress encountered NaN at el (elFE) ip g ', &
|
||||||
|
@ -3822,7 +3825,7 @@ logical function crystallite_integrateStress(&
|
||||||
aTolLi = max(rTol_crystalliteStress * max(math_norm33(Liguess),math_norm33(Li_constitutive)), & ! absolute tolerance from largest acceptable relative error
|
aTolLi = max(rTol_crystalliteStress * max(math_norm33(Liguess),math_norm33(Li_constitutive)), & ! absolute tolerance from largest acceptable relative error
|
||||||
aTol_crystalliteStress) ! minimum lower cutoff
|
aTol_crystalliteStress) ! minimum lower cutoff
|
||||||
residuumLi = Liguess - Li_constitutive
|
residuumLi = Liguess - Li_constitutive
|
||||||
if (any(residuumLi /= residuumLi)) then ! NaN in residuum...
|
if (any(prec_isNaN(residuumLi))) then ! NaN in residuum...
|
||||||
return ! ...me = .false. to inform integrator about problem
|
return ! ...me = .false. to inform integrator about problem
|
||||||
elseif (math_norm33(residuumLi) < aTolLi) then ! converged if below absolute tolerance
|
elseif (math_norm33(residuumLi) < aTolLi) then ! converged if below absolute tolerance
|
||||||
exit LiLoop ! ...leave iteration loop
|
exit LiLoop ! ...leave iteration loop
|
||||||
|
|
Loading…
Reference in New Issue