now reporting extreme values of stress and tangent, that were returned to marc, in output file

This commit is contained in:
Christoph Kords 2011-02-08 10:25:51 +00:00
parent 7a7ca1aab7
commit 0a30fb739a
1 changed files with 45 additions and 2 deletions

View File

@ -229,7 +229,12 @@ subroutine hypela2(&
real(pReal), dimension (3,3) :: pstress ! dummy argument for call of cpfem_general (used by mpie_spectral)
real(pReal), dimension (3,3,3,3) :: dPdF ! dummy argument for call of cpfem_general (used by mpie_spectral)
integer(pInt) computationMode, i, cp_en
integer(pInt) computationMode, i, cp_en, &
s_max_e, s_max_i, s_min_e, s_min_i, &
d_max_e, d_max_i, d_min_e, d_min_i
real(pReal) s_max, s_min, &
d_max, d_min
! OpenMP variable
!$ integer(pInt) defaultNumThreadsInt ! default value set by Marc
@ -297,6 +302,10 @@ subroutine hypela2(&
call debug_reset() ! resets debugging
outdatedFFN1 = .false.
cycleCounter = cycleCounter + 1_pInt
s_max = - 1.0_pReal / 0.0_pReal ! reset stored max/min values
s_min = + 1.0_pReal / 0.0_pReal
d_max = - 1.0_pReal / 0.0_pReal
d_min = + 1.0_pReal / 0.0_pReal
endif
if ( outdatedByNewInc ) then
outdatedByNewInc = .false. ! reset flag
@ -306,7 +315,18 @@ subroutine hypela2(&
endif
else ! now --- COLLECT ---
if ( lastMode /= calcMode(nn,cp_en) .and. &
.not. terminallyIll ) call debug_info() ! first after ping pong reports (meaningful) debugging
.not. terminallyIll ) then
call debug_info() ! first after ping pong reports (meaningful) debugging
write(6,*)
write(6,*) 'REPORT EXTREME VALUES OF RETURNED VARIABLES'
write(6,*)
write(6,'(a39)') ' value el ip'
write(6,'(a14,x,e12.3,x,i6,x,i4)') 'stress min :', s_min, s_min_e, s_min_i
write(6,'(a14,x,e12.3,x,i6,x,i4)') ' max :', s_max, s_max_e, s_max_i
write(6,'(a14,x,e12.3,x,i6,x,i4)') 'jacobian min :', d_min, d_min_e, d_min_i
write(6,'(a14,x,e12.3,x,i6,x,i4)') ' max :', d_max, d_max_e, d_max_i
write(6,*)
endif
if ( lastIncConverged ) then
lastIncConverged = .false. ! reset flag
computationMode = 4 ! collect and backup Jacobian after convergence
@ -330,6 +350,29 @@ subroutine hypela2(&
forall(i=1:ngens) d(1:ngens,i) = invnrmMandel(i)*ddsdde(1:ngens,i)*invnrmMandel(1:ngens)
s(1:ngens) = stress(1:ngens)*invnrmMandel(1:ngens)
if(symmetricSolver) d(1:ngens,1:ngens) = 0.5_pReal*(d(1:ngens,1:ngens)+transpose(d(1:ngens,1:ngens)))
if (calcMode(nn,cp_en)) then
if (maxval(s(1:ngens)) > s_max) then ! remember extreme values of stress and jacobian
s_max_e = cp_en
s_max_i = nn
s_max = maxval(s(1:ngens))
endif
if (minval(s(1:ngens)) < s_min) then
s_min_e = cp_en
s_min_i = nn
s_min = minval(s(1:ngens))
endif
if (maxval(d(1:ngens,1:ngens)) > d_max) then
d_max_e = cp_en
d_max_i = nn
d_max = maxval(d(1:ngens,1:ngens))
endif
if (minval(d(1:ngens,1:ngens)) < d_min) then
d_min_e = cp_en
d_min_i = nn
d_min = minval(d(1:ngens,1:ngens))
endif
endif
!$ call omp_set_num_threads(defaultNumThreadsInt) ! reset number of threads to stored default value