added flag verboseDebugger to debug in order to have more control about debugging statements
set this to true if you want extended debugging info in the output file
This commit is contained in:
parent
418bb9ecbe
commit
f4e5d32cde
|
@ -76,7 +76,9 @@ subroutine CPFEM_general(mode, ffn, ffn1, Temperature, dt, element, IP, cauchySt
|
||||||
use debug, only: debug_init, &
|
use debug, only: debug_init, &
|
||||||
debug_g, &
|
debug_g, &
|
||||||
debug_i, &
|
debug_i, &
|
||||||
debug_e
|
debug_e, &
|
||||||
|
debugger, &
|
||||||
|
verboseDebugger
|
||||||
use FEsolving, only: FE_init, &
|
use FEsolving, only: FE_init, &
|
||||||
parallelExecution, &
|
parallelExecution, &
|
||||||
outdatedFFN1, &
|
outdatedFFN1, &
|
||||||
|
@ -205,14 +207,16 @@ subroutine CPFEM_general(mode, ffn, ffn1, Temperature, dt, element, IP, cauchySt
|
||||||
cp_en = mesh_FEasCP('elem',element)
|
cp_en = mesh_FEasCP('elem',element)
|
||||||
|
|
||||||
if (cp_en == 1 .and. IP == 1) then
|
if (cp_en == 1 .and. IP == 1) then
|
||||||
!$OMP CRITICAL (write2out)
|
if (debugger) then
|
||||||
write(6,*)
|
!$OMP CRITICAL (write2out)
|
||||||
write(6,*) '#####################################'
|
write(6,*)
|
||||||
write(6,'(a10,x,f8.4,x,a10,x,f8.4,x,a10,x,i6,x,a10,x,i3,x,a16,x,i2,x,a16,x,i2)') &
|
write(6,*) '#####################################'
|
||||||
'theTime',theTime,'theDelta',theDelta,'theInc',theInc,'cycleCounter',cycleCounter,'computationMode',mode
|
write(6,'(a10,x,f8.4,x,a10,x,f8.4,x,a10,x,i6,x,a10,x,i3,x,a16,x,i2,x,a16,x,i2)') &
|
||||||
write(6,*) '#####################################'
|
'theTime',theTime,'theDelta',theDelta,'theInc',theInc,'cycleCounter',cycleCounter,'computationMode',mode
|
||||||
call flush (6)
|
write(6,*) '#####################################'
|
||||||
!$OMP END CRITICAL (write2out)
|
call flush (6)
|
||||||
|
!$OMP END CRITICAL (write2out)
|
||||||
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
! according to our "mode" we decide what to do
|
! according to our "mode" we decide what to do
|
||||||
|
@ -230,10 +234,12 @@ subroutine CPFEM_general(mode, ffn, ffn1, Temperature, dt, element, IP, cauchySt
|
||||||
j = 1:mesh_maxNips, &
|
j = 1:mesh_maxNips, &
|
||||||
k = 1:mesh_NcpElems ) &
|
k = 1:mesh_NcpElems ) &
|
||||||
constitutive_state0(i,j,k)%p = constitutive_state(i,j,k)%p ! microstructure of crystallites
|
constitutive_state0(i,j,k)%p = constitutive_state(i,j,k)%p ! microstructure of crystallites
|
||||||
!$OMP CRITICAL (write2out)
|
if (debugger) then
|
||||||
write(6,'(a,3(x,i4),/,4(3(e20.8,x),/))') 'aged state at', debug_g, debug_i, debug_e, &
|
!$OMP CRITICAL (write2out)
|
||||||
|
write(6,'(a,3(x,i4),/,4(3(e20.8,x),/))') 'aged state at', debug_g, debug_i, debug_e, &
|
||||||
constitutive_state(debug_g,debug_i,debug_e)%p
|
constitutive_state(debug_g,debug_i,debug_e)%p
|
||||||
!$OMP END CRITICAL (write2out)
|
!$OMP END CRITICAL (write2out)
|
||||||
|
endif
|
||||||
do k = 1,mesh_NcpElems
|
do k = 1,mesh_NcpElems
|
||||||
do j = 1,mesh_maxNips
|
do j = 1,mesh_maxNips
|
||||||
if (homogenization_sizeState(j,k) > 0_pInt) &
|
if (homogenization_sizeState(j,k) > 0_pInt) &
|
||||||
|
@ -251,9 +257,11 @@ subroutine CPFEM_general(mode, ffn, ffn1, Temperature, dt, element, IP, cauchySt
|
||||||
! deformation gradient outdated or any actual deformation gradient differs more than relevantStrain from the stored one
|
! deformation gradient outdated or any actual deformation gradient differs more than relevantStrain from the stored one
|
||||||
if (terminallyIll .or. outdatedFFN1 .or. any(abs(ffn1 - materialpoint_F(:,:,IP,cp_en)) > relevantStrain)) then
|
if (terminallyIll .or. outdatedFFN1 .or. any(abs(ffn1 - materialpoint_F(:,:,IP,cp_en)) > relevantStrain)) then
|
||||||
if (.not. terminallyIll .and. .not. outdatedFFN1) then
|
if (.not. terminallyIll .and. .not. outdatedFFN1) then
|
||||||
!$OMP CRITICAL (write2out)
|
if (debugger) then
|
||||||
write(6,'(a11,x,i5,x,i2,x,a10,/,3(3(f10.6,x),/))') 'outdated at',cp_en,IP,'FFN1 now:',ffn1(:,1),ffn1(:,2),ffn1(:,3)
|
!$OMP CRITICAL (write2out)
|
||||||
!$OMP END CRITICAL (write2out)
|
write(6,'(a11,x,i5,x,i2,x,a10,/,3(3(f10.6,x),/))') 'outdated at',cp_en,IP,'FFN1 now:',ffn1(:,1),ffn1(:,2),ffn1(:,3)
|
||||||
|
!$OMP END CRITICAL (write2out)
|
||||||
|
endif
|
||||||
outdatedFFN1 = .true.
|
outdatedFFN1 = .true.
|
||||||
endif
|
endif
|
||||||
CPFEM_cs(:,IP,cp_en) = CPFEM_odd_stress
|
CPFEM_cs(:,IP,cp_en) = CPFEM_odd_stress
|
||||||
|
@ -334,10 +342,12 @@ subroutine CPFEM_general(mode, ffn, ffn1, Temperature, dt, element, IP, cauchySt
|
||||||
cauchyStress(:) = CPFEM_cs(:,IP,cp_en)
|
cauchyStress(:) = CPFEM_cs(:,IP,cp_en)
|
||||||
jacobian(:,:) = CPFEM_dcsdE(:,:,IP,cp_en)
|
jacobian(:,:) = CPFEM_dcsdE(:,:,IP,cp_en)
|
||||||
if (IP == 1 .and. cp_en == 1) then
|
if (IP == 1 .and. cp_en == 1) then
|
||||||
!$OMP CRITICAL (write2out)
|
if (debugger) then
|
||||||
write(6,'(a,/,6(6(f10.3,x)/))') 'jacobian/GPa at ip 1 el 1',jacobian/1e9
|
!$OMP CRITICAL (write2out)
|
||||||
call flush(6)
|
write(6,'(a,/,6(6(f10.3,x)/))') 'jacobian/GPa at ip 1 el 1',jacobian/1e9
|
||||||
!$OMP END CRITICAL (write2out)
|
call flush(6)
|
||||||
|
!$OMP END CRITICAL (write2out)
|
||||||
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
! return temperature
|
! return temperature
|
||||||
|
|
|
@ -961,7 +961,8 @@ use prec, only: pReal, &
|
||||||
use math, only: math_mul6x6, &
|
use math, only: math_mul6x6, &
|
||||||
math_Mandel6to33
|
math_Mandel6to33
|
||||||
use debug, only: debugger, &
|
use debug, only: debugger, &
|
||||||
selectiveDebugger
|
selectiveDebugger, &
|
||||||
|
verboseDebugger
|
||||||
use mesh, only: mesh_NcpElems, &
|
use mesh, only: mesh_NcpElems, &
|
||||||
mesh_maxNips
|
mesh_maxNips
|
||||||
use material, only: homogenization_maxNgrains, &
|
use material, only: homogenization_maxNgrains, &
|
||||||
|
@ -1018,7 +1019,7 @@ do s = 1,ns
|
||||||
endif
|
endif
|
||||||
enddo
|
enddo
|
||||||
|
|
||||||
if (selectiveDebugger) then
|
if (verboseDebugger .and. selectiveDebugger) then
|
||||||
!$OMP CRITICAL (write2out)
|
!$OMP CRITICAL (write2out)
|
||||||
write(6,*) '::: kinetics',g,ip,el
|
write(6,*) '::: kinetics',g,ip,el
|
||||||
write(6,*)
|
write(6,*)
|
||||||
|
@ -1046,7 +1047,8 @@ use math, only: math_Plain3333to99, &
|
||||||
math_mul6x6, &
|
math_mul6x6, &
|
||||||
math_Mandel6to33
|
math_Mandel6to33
|
||||||
use debug, only: debugger, &
|
use debug, only: debugger, &
|
||||||
selectiveDebugger
|
selectiveDebugger, &
|
||||||
|
verboseDebugger
|
||||||
use mesh, only: mesh_NcpElems, &
|
use mesh, only: mesh_NcpElems, &
|
||||||
mesh_maxNips
|
mesh_maxNips
|
||||||
use material, only: homogenization_maxNgrains, &
|
use material, only: homogenization_maxNgrains, &
|
||||||
|
@ -1135,7 +1137,7 @@ enddo
|
||||||
|
|
||||||
dLp_dTstar99 = math_Plain3333to99(dLp_dTstar3333)
|
dLp_dTstar99 = math_Plain3333to99(dLp_dTstar3333)
|
||||||
|
|
||||||
if (selectiveDebugger) then
|
if (verboseDebugger .and. selectiveDebugger) then
|
||||||
!$OMP CRITICAL (write2out)
|
!$OMP CRITICAL (write2out)
|
||||||
write(6,*) '::: LpandItsTangent',g,ip,el
|
write(6,*) '::: LpandItsTangent',g,ip,el
|
||||||
write(6,*)
|
write(6,*)
|
||||||
|
@ -1162,7 +1164,8 @@ use prec, only: pReal, &
|
||||||
p_vec
|
p_vec
|
||||||
use IO, only: IO_error
|
use IO, only: IO_error
|
||||||
use debug, only: debugger, &
|
use debug, only: debugger, &
|
||||||
selectiveDebugger
|
selectiveDebugger, &
|
||||||
|
verboseDebugger
|
||||||
use math, only: math_norm3, &
|
use math, only: math_norm3, &
|
||||||
math_mul6x6, &
|
math_mul6x6, &
|
||||||
math_mul3x3, &
|
math_mul3x3, &
|
||||||
|
@ -1277,7 +1280,7 @@ real(pReal) area, & ! area of
|
||||||
D ! self diffusion
|
D ! self diffusion
|
||||||
logical highOrderScheme ! flag indicating whether we use a high order interpolation scheme or not
|
logical highOrderScheme ! flag indicating whether we use a high order interpolation scheme or not
|
||||||
|
|
||||||
if (selectiveDebugger) then
|
if (verboseDebugger .and. selectiveDebugger) then
|
||||||
!$OMP CRITICAL (write2out)
|
!$OMP CRITICAL (write2out)
|
||||||
write(6,*) '::: constitutive_nonlocal_dotState at ',g,ip,el
|
write(6,*) '::: constitutive_nonlocal_dotState at ',g,ip,el
|
||||||
write(6,*)
|
write(6,*)
|
||||||
|
@ -1360,13 +1363,6 @@ previousDUpper(:,1) = previousDUpper(:,2) / ( 1.0_pReal - constitutive_nonlocal_
|
||||||
|
|
||||||
if (dt_previous > 0.0_pReal) dUpperDot = (dUpper - previousDUpper) / dt_previous
|
if (dt_previous > 0.0_pReal) dUpperDot = (dUpper - previousDUpper) / dt_previous
|
||||||
|
|
||||||
if (debugger) then
|
|
||||||
!$OMP CRITICAL (write2out)
|
|
||||||
! write(6,'(a,/,2(12(f12.5,x),/))') 'dUpper / micron', dUpper*1e6_pReal
|
|
||||||
! write(6,'(a,/,2(12(f12.5,x),/))') 'dUpperDot / micron/s', dUpperDot * 1e6_pReal
|
|
||||||
!$OMPEND CRITICAL (write2out)
|
|
||||||
endif
|
|
||||||
|
|
||||||
|
|
||||||
!****************************************************************************
|
!****************************************************************************
|
||||||
!*** dislocation remobilization (bauschinger effect)
|
!*** dislocation remobilization (bauschinger effect)
|
||||||
|
@ -1387,7 +1383,7 @@ endif
|
||||||
|
|
||||||
totalRhoDotSgl = totalRhoDotSgl + thisRhoDotSgl
|
totalRhoDotSgl = totalRhoDotSgl + thisRhoDotSgl
|
||||||
|
|
||||||
if (selectiveDebugger) then
|
if (verboseDebugger .and. selectiveDebugger) then
|
||||||
!$OMP CRITICAL (write2out)
|
!$OMP CRITICAL (write2out)
|
||||||
write(6,'(a,/,8(12(e12.5,x),/))') 'dislocation remobilization', thisRhoDotSgl * timestep
|
write(6,'(a,/,8(12(e12.5,x),/))') 'dislocation remobilization', thisRhoDotSgl * timestep
|
||||||
!$OMPEND CRITICAL (write2out)
|
!$OMPEND CRITICAL (write2out)
|
||||||
|
@ -1408,7 +1404,7 @@ thisRhoDotDip = 0.0_pReal ! dipoles don't multiplicate
|
||||||
|
|
||||||
totalRhoDotSgl = totalRhoDotSgl + thisRhoDotSgl
|
totalRhoDotSgl = totalRhoDotSgl + thisRhoDotSgl
|
||||||
|
|
||||||
if (selectiveDebugger) then
|
if (verboseDebugger .and. selectiveDebugger) then
|
||||||
!$OMP CRITICAL (write2out)
|
!$OMP CRITICAL (write2out)
|
||||||
write(6,'(a,/,4(12(e12.5,x),/))') 'dislocation multiplication', thisRhoDotSgl(:,1:4) * timestep
|
write(6,'(a,/,4(12(e12.5,x),/))') 'dislocation multiplication', thisRhoDotSgl(:,1:4) * timestep
|
||||||
!$OMPEND CRITICAL (write2out)
|
!$OMPEND CRITICAL (write2out)
|
||||||
|
@ -1512,7 +1508,7 @@ constitutive_nonlocal_rhoDotFlux(:,:,g,ip,el) = thisRhoDotSgl
|
||||||
|
|
||||||
totalRhoDotSgl = totalRhoDotSgl + thisRhoDotSgl
|
totalRhoDotSgl = totalRhoDotSgl + thisRhoDotSgl
|
||||||
|
|
||||||
if (selectiveDebugger) then
|
if (verboseDebugger .and. selectiveDebugger) then
|
||||||
!$OMP CRITICAL (write2out)
|
!$OMP CRITICAL (write2out)
|
||||||
write(6,'(a,/,8(12(e12.5,x),/))') 'dislocation flux', thisRhoDotSgl * timestep
|
write(6,'(a,/,8(12(e12.5,x),/))') 'dislocation flux', thisRhoDotSgl * timestep
|
||||||
!$OMPEND CRITICAL (write2out)
|
!$OMPEND CRITICAL (write2out)
|
||||||
|
@ -1549,7 +1545,7 @@ enddo
|
||||||
totalRhoDotSgl = totalRhoDotSgl + thisRhoDotSgl
|
totalRhoDotSgl = totalRhoDotSgl + thisRhoDotSgl
|
||||||
totalRhoDotDip = totalRhoDotDip + thisRhoDotDip
|
totalRhoDotDip = totalRhoDotDip + thisRhoDotDip
|
||||||
|
|
||||||
if (selectiveDebugger) then
|
if (verboseDebugger .and. selectiveDebugger) then
|
||||||
!$OMP CRITICAL (write2out)
|
!$OMP CRITICAL (write2out)
|
||||||
write(6,'(a,/,10(12(e12.5,x),/))') 'dipole formation by glide', thisRhoDotSgl * timestep, thisRhoDotDip * timestep
|
write(6,'(a,/,10(12(e12.5,x),/))') 'dipole formation by glide', thisRhoDotSgl * timestep, thisRhoDotDip * timestep
|
||||||
!$OMPEND CRITICAL (write2out)
|
!$OMPEND CRITICAL (write2out)
|
||||||
|
@ -1566,7 +1562,7 @@ forall (c=1:2) &
|
||||||
|
|
||||||
totalRhoDotDip = totalRhoDotDip + thisRhoDotDip
|
totalRhoDotDip = totalRhoDotDip + thisRhoDotDip
|
||||||
|
|
||||||
if (selectiveDebugger) then
|
if (verboseDebugger .and. selectiveDebugger) then
|
||||||
!$OMP CRITICAL (write2out)
|
!$OMP CRITICAL (write2out)
|
||||||
write(6,'(a,/,2(12(e12.5,x),/))') 'athermal dipole annihilation', thisRhoDotDip * timestep
|
write(6,'(a,/,2(12(e12.5,x),/))') 'athermal dipole annihilation', thisRhoDotDip * timestep
|
||||||
!$OMPEND CRITICAL (write2out)
|
!$OMPEND CRITICAL (write2out)
|
||||||
|
@ -1586,7 +1582,7 @@ thisRhoDotDip(:,2) = 0.0_pReal
|
||||||
|
|
||||||
totalRhoDotDip = totalRhoDotDip + thisRhoDotDip
|
totalRhoDotDip = totalRhoDotDip + thisRhoDotDip
|
||||||
|
|
||||||
if (selectiveDebugger) then
|
if (verboseDebugger .and. selectiveDebugger) then
|
||||||
!$OMP CRITICAL (write2out)
|
!$OMP CRITICAL (write2out)
|
||||||
write(6,'(a,/,2(12(e12.5,x),/))') 'thermally activated dipole annihilation', thisRhoDotDip * timestep
|
write(6,'(a,/,2(12(e12.5,x),/))') 'thermally activated dipole annihilation', thisRhoDotDip * timestep
|
||||||
!$OMPEND CRITICAL (write2out)
|
!$OMPEND CRITICAL (write2out)
|
||||||
|
@ -1610,7 +1606,7 @@ forall (t=1:4) &
|
||||||
totalRhoDotSgl = totalRhoDotSgl + thisRhoDotSgl
|
totalRhoDotSgl = totalRhoDotSgl + thisRhoDotSgl
|
||||||
totalRhoDotDip = totalRhoDotDip + thisRhoDotDip
|
totalRhoDotDip = totalRhoDotDip + thisRhoDotDip
|
||||||
|
|
||||||
if (selectiveDebugger) then
|
if (verboseDebugger .and. selectiveDebugger) then
|
||||||
!$OMP CRITICAL (write2out)
|
!$OMP CRITICAL (write2out)
|
||||||
write(6,'(a,/,10(12(e12.5,x),/))') 'dipole stability by stress change', thisRhoDotSgl * timestep, thisRhoDotDip * timestep
|
write(6,'(a,/,10(12(e12.5,x),/))') 'dipole stability by stress change', thisRhoDotSgl * timestep, thisRhoDotDip * timestep
|
||||||
!$OMPEND CRITICAL (write2out)
|
!$OMPEND CRITICAL (write2out)
|
||||||
|
@ -1623,7 +1619,7 @@ endif
|
||||||
dotState(1,ip,el)%p(1:8*ns) = dotState(1,ip,el)%p(1:8*ns) + reshape(totalRhoDotSgl,(/8*ns/))
|
dotState(1,ip,el)%p(1:8*ns) = dotState(1,ip,el)%p(1:8*ns) + reshape(totalRhoDotSgl,(/8*ns/))
|
||||||
dotState(1,ip,el)%p(8*ns+1:10*ns) = dotState(1,ip,el)%p(8*ns+1:10*ns) + reshape(totalRhoDotDip,(/2*ns/))
|
dotState(1,ip,el)%p(8*ns+1:10*ns) = dotState(1,ip,el)%p(8*ns+1:10*ns) + reshape(totalRhoDotDip,(/2*ns/))
|
||||||
|
|
||||||
if (selectiveDebugger) then
|
if (verboseDebugger .and. selectiveDebugger) then
|
||||||
!$OMP CRITICAL (write2out)
|
!$OMP CRITICAL (write2out)
|
||||||
write(6,'(a,/,8(12(e12.5,x),/))') 'deltaRho:', totalRhoDotSgl * timestep
|
write(6,'(a,/,8(12(e12.5,x),/))') 'deltaRho:', totalRhoDotSgl * timestep
|
||||||
write(6,'(a,/,2(12(e12.5,x),/))') 'deltaRhoDip:', totalRhoDotDip * timestep
|
write(6,'(a,/,2(12(e12.5,x),/))') 'deltaRhoDip:', totalRhoDotDip * timestep
|
||||||
|
|
|
@ -337,6 +337,7 @@ subroutine crystallite_stressAndItsTangent(updateJaco)
|
||||||
iJacoStiffness
|
iJacoStiffness
|
||||||
use debug, only: debugger, &
|
use debug, only: debugger, &
|
||||||
selectiveDebugger, &
|
selectiveDebugger, &
|
||||||
|
verboseDebugger, &
|
||||||
debug_e, &
|
debug_e, &
|
||||||
debug_i, &
|
debug_i, &
|
||||||
debug_g, &
|
debug_g, &
|
||||||
|
@ -486,7 +487,7 @@ subroutine crystallite_stressAndItsTangent(updateJaco)
|
||||||
do g = 1,myNgrains
|
do g = 1,myNgrains
|
||||||
selectiveDebugger = (e == debug_e .and. i == debug_i .and. g == debug_g)
|
selectiveDebugger = (e == debug_e .and. i == debug_i .and. g == debug_g)
|
||||||
if (crystallite_converged(g,i,e)) then
|
if (crystallite_converged(g,i,e)) then
|
||||||
if (selectiveDebugger) then
|
if (verboseDebugger .and. selectiveDebugger) then
|
||||||
!$OMP CRITICAL (write2out)
|
!$OMP CRITICAL (write2out)
|
||||||
write(6,'(a21,f10.8,a32,f10.8,a35)') 'winding forward from ', &
|
write(6,'(a21,f10.8,a32,f10.8,a35)') 'winding forward from ', &
|
||||||
crystallite_subFrac(g,i,e),' to current crystallite_subfrac ', &
|
crystallite_subFrac(g,i,e),' to current crystallite_subfrac ', &
|
||||||
|
@ -518,7 +519,7 @@ subroutine crystallite_stressAndItsTangent(updateJaco)
|
||||||
crystallite_Lp(:,:,g,i,e) = crystallite_subLp0(:,:,g,i,e) ! ...plastic velocity grad
|
crystallite_Lp(:,:,g,i,e) = crystallite_subLp0(:,:,g,i,e) ! ...plastic velocity grad
|
||||||
constitutive_state(g,i,e)%p = constitutive_subState0(g,i,e)%p ! ...microstructure
|
constitutive_state(g,i,e)%p = constitutive_subState0(g,i,e)%p ! ...microstructure
|
||||||
crystallite_Tstar_v(:,g,i,e) = crystallite_subTstar0_v(:,g,i,e) ! ...2nd PK stress
|
crystallite_Tstar_v(:,g,i,e) = crystallite_subTstar0_v(:,g,i,e) ! ...2nd PK stress
|
||||||
if (selectiveDebugger) then
|
if (verboseDebugger .and. selectiveDebugger) then
|
||||||
!$OMP CRITICAL (write2out)
|
!$OMP CRITICAL (write2out)
|
||||||
write(6,'(a78,f10.8)') 'cutback step in crystallite_stressAndItsTangent with new crystallite_subStep: ',&
|
write(6,'(a78,f10.8)') 'cutback step in crystallite_stressAndItsTangent with new crystallite_subStep: ',&
|
||||||
crystallite_subStep(g,i,e)
|
crystallite_subStep(g,i,e)
|
||||||
|
@ -568,7 +569,7 @@ subroutine crystallite_stressAndItsTangent(updateJaco)
|
||||||
myNgrains = homogenization_Ngrains(mesh_element(3,e))
|
myNgrains = homogenization_Ngrains(mesh_element(3,e))
|
||||||
do i = FEsolving_execIP(1,e),FEsolving_execIP(2,e) ! iterate over IPs of this element to be processed
|
do i = FEsolving_execIP(1,e),FEsolving_execIP(2,e) ! iterate over IPs of this element to be processed
|
||||||
do g = 1,myNgrains
|
do g = 1,myNgrains
|
||||||
! selectiveDebugger = (e == debug_e .and. i == debug_i .and. g == debug_g)
|
selectiveDebugger = (e == debug_e .and. i == debug_i .and. g == debug_g)
|
||||||
if (crystallite_todo(g,i,e)) then ! all undone crystallites
|
if (crystallite_todo(g,i,e)) then ! all undone crystallites
|
||||||
call constitutive_collectDotState(crystallite_Tstar_v(:,g,i,e), crystallite_subTstar0_v(:,g,i,e), &
|
call constitutive_collectDotState(crystallite_Tstar_v(:,g,i,e), crystallite_subTstar0_v(:,g,i,e), &
|
||||||
crystallite_Fe, crystallite_Fp, crystallite_Temperature(g,i,e), &
|
crystallite_Fe, crystallite_Fp, crystallite_Temperature(g,i,e), &
|
||||||
|
@ -584,7 +585,7 @@ subroutine crystallite_stressAndItsTangent(updateJaco)
|
||||||
myNgrains = homogenization_Ngrains(mesh_element(3,e))
|
myNgrains = homogenization_Ngrains(mesh_element(3,e))
|
||||||
do i = FEsolving_execIP(1,e),FEsolving_execIP(2,e) ! iterate over IPs of this element to be processed
|
do i = FEsolving_execIP(1,e),FEsolving_execIP(2,e) ! iterate over IPs of this element to be processed
|
||||||
do g = 1,myNgrains
|
do g = 1,myNgrains
|
||||||
! selectiveDebugger = (e == debug_e .and. i == debug_i .and. g == debug_g)
|
selectiveDebugger = (e == debug_e .and. i == debug_i .and. g == debug_g)
|
||||||
if (crystallite_todo(g,i,e)) then ! all undone crystallites
|
if (crystallite_todo(g,i,e)) then ! all undone crystallites
|
||||||
crystallite_stateConverged(g,i,e) = crystallite_updateState(g,i,e) ! update state
|
crystallite_stateConverged(g,i,e) = crystallite_updateState(g,i,e) ! update state
|
||||||
crystallite_temperatureConverged(g,i,e) = crystallite_updateTemperature(g,i,e) ! update temperature
|
crystallite_temperatureConverged(g,i,e) = crystallite_updateTemperature(g,i,e) ! update temperature
|
||||||
|
@ -615,7 +616,7 @@ subroutine crystallite_stressAndItsTangent(updateJaco)
|
||||||
myNgrains = homogenization_Ngrains(mesh_element(3,e))
|
myNgrains = homogenization_Ngrains(mesh_element(3,e))
|
||||||
do i = FEsolving_execIP(1,e),FEsolving_execIP(2,e) ! iterate over IPs of this element to be processed
|
do i = FEsolving_execIP(1,e),FEsolving_execIP(2,e) ! iterate over IPs of this element to be processed
|
||||||
do g = 1,myNgrains
|
do g = 1,myNgrains
|
||||||
! selectiveDebugger = (e == debug_e .and. i == debug_i .and. g == debug_g)
|
selectiveDebugger = (e == debug_e .and. i == debug_i .and. g == debug_g)
|
||||||
if (crystallite_todo(g,i,e)) then ! all undone crystallites
|
if (crystallite_todo(g,i,e)) then ! all undone crystallites
|
||||||
crystallite_todo(g,i,e) = crystallite_integrateStress(g,i,e)
|
crystallite_todo(g,i,e) = crystallite_integrateStress(g,i,e)
|
||||||
if ( .not. crystallite_localConstitution(g,i,e) &
|
if ( .not. crystallite_localConstitution(g,i,e) &
|
||||||
|
@ -625,7 +626,7 @@ subroutine crystallite_stressAndItsTangent(updateJaco)
|
||||||
enddo; enddo; enddo
|
enddo; enddo; enddo
|
||||||
!$OMPEND PARALLEL DO
|
!$OMPEND PARALLEL DO
|
||||||
|
|
||||||
if (debugger) then
|
if (verboseDebugger) then
|
||||||
!$OMP CRITICAL (write2out)
|
!$OMP CRITICAL (write2out)
|
||||||
write(6,*) count(crystallite_todo(:,:,:)),'grains todo after stress integration'
|
write(6,*) count(crystallite_todo(:,:,:)),'grains todo after stress integration'
|
||||||
!$OMPEND CRITICAL (write2out)
|
!$OMPEND CRITICAL (write2out)
|
||||||
|
@ -659,7 +660,7 @@ subroutine crystallite_stressAndItsTangent(updateJaco)
|
||||||
myNgrains = homogenization_Ngrains(mesh_element(3,e))
|
myNgrains = homogenization_Ngrains(mesh_element(3,e))
|
||||||
do i = FEsolving_execIP(1,e),FEsolving_execIP(2,e) ! iterate over IPs of this element to be processed
|
do i = FEsolving_execIP(1,e),FEsolving_execIP(2,e) ! iterate over IPs of this element to be processed
|
||||||
do g = 1,myNgrains
|
do g = 1,myNgrains
|
||||||
! selectiveDebugger = (e == debug_e .and. i == debug_i .and. g == debug_g)
|
selectiveDebugger = (e == debug_e .and. i == debug_i .and. g == debug_g)
|
||||||
if (crystallite_todo(g,i,e)) then ! all undone crystallites
|
if (crystallite_todo(g,i,e)) then ! all undone crystallites
|
||||||
call constitutive_collectDotState(crystallite_Tstar_v(:,g,i,e), crystallite_subTstar0_v(:,g,i,e), &
|
call constitutive_collectDotState(crystallite_Tstar_v(:,g,i,e), crystallite_subTstar0_v(:,g,i,e), &
|
||||||
crystallite_Fe, crystallite_Fp, crystallite_Temperature(g,i,e), &
|
crystallite_Fe, crystallite_Fp, crystallite_Temperature(g,i,e), &
|
||||||
|
@ -682,7 +683,7 @@ subroutine crystallite_stressAndItsTangent(updateJaco)
|
||||||
myNgrains = homogenization_Ngrains(mesh_element(3,e))
|
myNgrains = homogenization_Ngrains(mesh_element(3,e))
|
||||||
do i = FEsolving_execIP(1,e),FEsolving_execIP(2,e) ! iterate over IPs of this element to be processed
|
do i = FEsolving_execIP(1,e),FEsolving_execIP(2,e) ! iterate over IPs of this element to be processed
|
||||||
do g = 1,myNgrains
|
do g = 1,myNgrains
|
||||||
! selectiveDebugger = (e == debug_e .and. i == debug_i .and. g == debug_g)
|
selectiveDebugger = (e == debug_e .and. i == debug_i .and. g == debug_g)
|
||||||
if (crystallite_todo(g,i,e)) then ! all undone crystallites
|
if (crystallite_todo(g,i,e)) then ! all undone crystallites
|
||||||
crystallite_stateConverged(g,i,e) = crystallite_updateState(g,i,e) ! update state
|
crystallite_stateConverged(g,i,e) = crystallite_updateState(g,i,e) ! update state
|
||||||
crystallite_temperatureConverged(g,i,e) = crystallite_updateTemperature(g,i,e) ! update temperature
|
crystallite_temperatureConverged(g,i,e) = crystallite_updateTemperature(g,i,e) ! update temperature
|
||||||
|
@ -702,7 +703,7 @@ subroutine crystallite_stressAndItsTangent(updateJaco)
|
||||||
enddo
|
enddo
|
||||||
!$OMPEND PARALLEL DO
|
!$OMPEND PARALLEL DO
|
||||||
|
|
||||||
if (debugger) then
|
if (verboseDebugger) then
|
||||||
!$OMP CRITICAL (write2out)
|
!$OMP CRITICAL (write2out)
|
||||||
write(6,*) count(crystallite_converged(:,:,:)),'grains converged after state integration no.', NiterationState
|
write(6,*) count(crystallite_converged(:,:,:)),'grains converged after state integration no.', NiterationState
|
||||||
write(6,*)
|
write(6,*)
|
||||||
|
@ -719,7 +720,7 @@ subroutine crystallite_stressAndItsTangent(updateJaco)
|
||||||
|
|
||||||
crystallite_todo = crystallite_todo .and. .not. crystallite_converged ! skip all converged
|
crystallite_todo = crystallite_todo .and. .not. crystallite_converged ! skip all converged
|
||||||
|
|
||||||
if (debugger) then
|
if (verboseDebugger) then
|
||||||
!$OMP CRITICAL (write2out)
|
!$OMP CRITICAL (write2out)
|
||||||
write(6,*) count(crystallite_converged(:,:,:)),'grains converged after non-local check'
|
write(6,*) count(crystallite_converged(:,:,:)),'grains converged after non-local check'
|
||||||
write(6,*) count(crystallite_todo(:,:,:)),'grains todo after state integration no.', NiterationState
|
write(6,*) count(crystallite_todo(:,:,:)),'grains todo after state integration no.', NiterationState
|
||||||
|
@ -784,10 +785,10 @@ subroutine crystallite_stressAndItsTangent(updateJaco)
|
||||||
myNgrains = homogenization_Ngrains(mesh_element(3,e))
|
myNgrains = homogenization_Ngrains(mesh_element(3,e))
|
||||||
do i = FEsolving_execIP(1,e),FEsolving_execIP(2,e) ! iterate over IPs of this element to be processed
|
do i = FEsolving_execIP(1,e),FEsolving_execIP(2,e) ! iterate over IPs of this element to be processed
|
||||||
do g = 1,myNgrains
|
do g = 1,myNgrains
|
||||||
! selectiveDebugger = (e == debug_e .and. i == debug_i .and. g == debug_g)
|
selectiveDebugger = (e == debug_e .and. i == debug_i .and. g == debug_g)
|
||||||
if (crystallite_requested(g,i,e)) then ! first check whether is requested at all!
|
if (crystallite_requested(g,i,e)) then ! first check whether is requested at all!
|
||||||
if (crystallite_converged(g,i,e)) then ! grain converged in above iteration
|
if (crystallite_converged(g,i,e)) then ! grain converged in above iteration
|
||||||
if (selectiveDebugger) then
|
if (verboseDebugger .and. selectiveDebugger) then
|
||||||
!$OMP CRITICAL (write2out)
|
!$OMP CRITICAL (write2out)
|
||||||
write (6,*) '#############'
|
write (6,*) '#############'
|
||||||
write (6,*) 'central solution of cryst_StressAndTangent'
|
write (6,*) 'central solution of cryst_StressAndTangent'
|
||||||
|
@ -804,7 +805,7 @@ subroutine crystallite_stressAndItsTangent(updateJaco)
|
||||||
do k = 1,3 ! perturbation...
|
do k = 1,3 ! perturbation...
|
||||||
do l = 1,3 ! ...components to the positive direction
|
do l = 1,3 ! ...components to the positive direction
|
||||||
crystallite_subF(k,l,g,i,e) = crystallite_subF(k,l,g,i,e) + myPert ! perturb single component (either forward or backward)
|
crystallite_subF(k,l,g,i,e) = crystallite_subF(k,l,g,i,e) + myPert ! perturb single component (either forward or backward)
|
||||||
if (selectiveDebugger) then
|
if (verboseDebugger .and. selectiveDebugger) then
|
||||||
!$OMP CRITICAL (write2out)
|
!$OMP CRITICAL (write2out)
|
||||||
write (6,'(i1,x,i1)') k,l
|
write (6,'(i1,x,i1)') k,l
|
||||||
write (6,'(a8,3(x,i4),/,3(3(f12.6,x)/))') 'pertF of', g, i, e, crystallite_subF(1:3,:,g,i,e)
|
write (6,'(a8,3(x,i4),/,3(3(f12.6,x)/))') 'pertF of', g, i, e, crystallite_subF(1:3,:,g,i,e)
|
||||||
|
@ -826,7 +827,7 @@ subroutine crystallite_stressAndItsTangent(updateJaco)
|
||||||
temperatureConverged = crystallite_updateTemperature(g,i,e) ! update temperature
|
temperatureConverged = crystallite_updateTemperature(g,i,e) ! update temperature
|
||||||
converged = stateConverged .and. temperatureConverged
|
converged = stateConverged .and. temperatureConverged
|
||||||
endif
|
endif
|
||||||
if (selectiveDebugger) then
|
if (verboseDebugger .and. selectiveDebugger) then
|
||||||
!$OMP CRITICAL (write2out)
|
!$OMP CRITICAL (write2out)
|
||||||
write (6,*) '-------------'
|
write (6,*) '-------------'
|
||||||
write (6,'(a,x,l,x,l)') 'ontrack + converged:',onTrack,converged
|
write (6,'(a,x,l,x,l)') 'ontrack + converged:',onTrack,converged
|
||||||
|
@ -881,6 +882,7 @@ subroutine crystallite_stressAndItsTangent(updateJaco)
|
||||||
myNgrains = homogenization_Ngrains(mesh_element(3,e))
|
myNgrains = homogenization_Ngrains(mesh_element(3,e))
|
||||||
do i = FEsolving_execIP(1,e),FEsolving_execIP(2,e)
|
do i = FEsolving_execIP(1,e),FEsolving_execIP(2,e)
|
||||||
do g = 1,myNgrains
|
do g = 1,myNgrains
|
||||||
|
selectiveDebugger = (e == debug_e .and. i == debug_i .and. g == debug_g)
|
||||||
mask = .true.
|
mask = .true.
|
||||||
do comp = 1,9
|
do comp = 1,9
|
||||||
kl(:,comp,g,i,e) = maxloc(abs(crystallite_subF(:,:,g,i,e)-crystallite_F0(:,:,g,i,e)), mask) ! map from component to array indices for F (sorted in descending order of abs(deltaF))
|
kl(:,comp,g,i,e) = maxloc(abs(crystallite_subF(:,:,g,i,e)-crystallite_F0(:,:,g,i,e)), mask) ! map from component to array indices for F (sorted in descending order of abs(deltaF))
|
||||||
|
@ -888,7 +890,7 @@ subroutine crystallite_stressAndItsTangent(updateJaco)
|
||||||
enddo
|
enddo
|
||||||
k = kl(1,mod(cycleCounter/iJacoStiffness,9)+1,g,i,e) ! perturb components in the descending order of change in F (-> component with biggest change in F is perturbed in first cycle, component with second biggest change in next cycle, ...)
|
k = kl(1,mod(cycleCounter/iJacoStiffness,9)+1,g,i,e) ! perturb components in the descending order of change in F (-> component with biggest change in F is perturbed in first cycle, component with second biggest change in next cycle, ...)
|
||||||
l = kl(2,mod(cycleCounter/iJacoStiffness,9)+1,g,i,e)
|
l = kl(2,mod(cycleCounter/iJacoStiffness,9)+1,g,i,e)
|
||||||
if (e==debug_e .and. i==debug_i) then
|
if (verboseDebugger .and. selectiveDebugger) then
|
||||||
!$OMP CRITICAL (write2out)
|
!$OMP CRITICAL (write2out)
|
||||||
write (6,*) 'perturb component ',k,l
|
write (6,*) 'perturb component ',k,l
|
||||||
!$OMPEND CRITICAL (write2out)
|
!$OMPEND CRITICAL (write2out)
|
||||||
|
@ -1055,7 +1057,8 @@ endsubroutine
|
||||||
constitutive_relevantState, &
|
constitutive_relevantState, &
|
||||||
constitutive_microstructure
|
constitutive_microstructure
|
||||||
use debug, only: debugger, &
|
use debug, only: debugger, &
|
||||||
selectiveDebugger
|
selectiveDebugger, &
|
||||||
|
verboseDebugger
|
||||||
use FEsolving, only: cycleCounter, theInc
|
use FEsolving, only: cycleCounter, theInc
|
||||||
|
|
||||||
!*** input variables ***!
|
!*** input variables ***!
|
||||||
|
@ -1083,7 +1086,7 @@ endsubroutine
|
||||||
if (any(residuum/=residuum)) then ! if NaN occured then return without changing the state...
|
if (any(residuum/=residuum)) then ! if NaN occured then return without changing the state...
|
||||||
crystallite_updateState = .false. ! ...indicate state update failed
|
crystallite_updateState = .false. ! ...indicate state update failed
|
||||||
crystallite_todo(g,i,e) = .false. ! ...no need to calculate any further
|
crystallite_todo(g,i,e) = .false. ! ...no need to calculate any further
|
||||||
if (debugger) then
|
if (verboseDebugger) then
|
||||||
!$OMP CRITICAL (write2out)
|
!$OMP CRITICAL (write2out)
|
||||||
write(6,*) '::: updateState encountered NaN',g,i,e
|
write(6,*) '::: updateState encountered NaN',g,i,e
|
||||||
!$OMPEND CRITICAL (write2out)
|
!$OMPEND CRITICAL (write2out)
|
||||||
|
@ -1100,7 +1103,7 @@ endsubroutine
|
||||||
! setting flag to true if state is below relative tolerance, otherwise set it to false
|
! setting flag to true if state is below relative tolerance, otherwise set it to false
|
||||||
crystallite_updateState = all( constitutive_state(g,i,e)%p(1:mySize) < constitutive_relevantState(g,i,e)%p(1:mySize) &
|
crystallite_updateState = all( constitutive_state(g,i,e)%p(1:mySize) < constitutive_relevantState(g,i,e)%p(1:mySize) &
|
||||||
.or. abs(residuum) < rTol_crystalliteState*abs(constitutive_state(g,i,e)%p(1:mySize)) )
|
.or. abs(residuum) < rTol_crystalliteState*abs(constitutive_state(g,i,e)%p(1:mySize)) )
|
||||||
if (selectiveDebugger) then
|
if (verboseDebugger .and. selectiveDebugger) then
|
||||||
!$OMP CRITICAL (write2out)
|
!$OMP CRITICAL (write2out)
|
||||||
if (crystallite_updateState) then
|
if (crystallite_updateState) then
|
||||||
write(6,*) '::: updateState converged',g,i,e
|
write(6,*) '::: updateState converged',g,i,e
|
||||||
|
@ -1211,6 +1214,7 @@ endsubroutine
|
||||||
relevantStrain
|
relevantStrain
|
||||||
use debug, only: debugger, &
|
use debug, only: debugger, &
|
||||||
selectiveDebugger, &
|
selectiveDebugger, &
|
||||||
|
verboseDebugger, &
|
||||||
debug_cumLpCalls, &
|
debug_cumLpCalls, &
|
||||||
debug_cumLpTicks, &
|
debug_cumLpTicks, &
|
||||||
debug_StressLoopDistribution
|
debug_StressLoopDistribution
|
||||||
|
@ -1296,7 +1300,7 @@ endsubroutine
|
||||||
! inversion of Fp_current...
|
! inversion of Fp_current...
|
||||||
invFp_current = math_inv3x3(Fp_current)
|
invFp_current = math_inv3x3(Fp_current)
|
||||||
if (all(invFp_current == 0.0_pReal)) then ! ... failed?
|
if (all(invFp_current == 0.0_pReal)) then ! ... failed?
|
||||||
if (debugger) then
|
if (verboseDebugger) then
|
||||||
!$OMP CRITICAL (write2out)
|
!$OMP CRITICAL (write2out)
|
||||||
write(6,*) '::: integrateStress failed on invFp_current inversion',g,i,e
|
write(6,*) '::: integrateStress failed on invFp_current inversion',g,i,e
|
||||||
write(6,*)
|
write(6,*)
|
||||||
|
@ -1326,7 +1330,7 @@ LpLoop: do
|
||||||
|
|
||||||
! too many loops required ?
|
! too many loops required ?
|
||||||
if (NiterationStress > nStress) then
|
if (NiterationStress > nStress) then
|
||||||
if (debugger) then
|
if (verboseDebugger) then
|
||||||
!$OMP CRITICAL (write2out)
|
!$OMP CRITICAL (write2out)
|
||||||
write(6,*) '::: integrateStress reached loop limit at ',g,i,e
|
write(6,*) '::: integrateStress reached loop limit at ',g,i,e
|
||||||
write(6,*)
|
write(6,*)
|
||||||
|
@ -1352,7 +1356,7 @@ LpLoop: do
|
||||||
debug_cumLpCalls = debug_cumLpCalls + 1_pInt
|
debug_cumLpCalls = debug_cumLpCalls + 1_pInt
|
||||||
debug_cumLpTicks = debug_cumLpTicks + tock-tick
|
debug_cumLpTicks = debug_cumLpTicks + tock-tick
|
||||||
if (tock < tick) debug_cumLpTicks = debug_cumLpTicks + maxticks
|
if (tock < tick) debug_cumLpTicks = debug_cumLpTicks + maxticks
|
||||||
if (selectiveDebugger) then
|
if (verboseDebugger .and. selectiveDebugger) then
|
||||||
!$OMP CRITICAL (write2out)
|
!$OMP CRITICAL (write2out)
|
||||||
write(6,*) '::: integrateStress at ' ,g,i,e, ' ; iteration ', NiterationStress
|
write(6,*) '::: integrateStress at ' ,g,i,e, ' ; iteration ', NiterationStress
|
||||||
write(6,*)
|
write(6,*)
|
||||||
|
@ -1376,7 +1380,7 @@ LpLoop: do
|
||||||
|
|
||||||
! NaN occured at regular speed?
|
! NaN occured at regular speed?
|
||||||
if (any(residuum/=residuum) .and. leapfrog == 1.0) then
|
if (any(residuum/=residuum) .and. leapfrog == 1.0) then
|
||||||
if (debugger) then
|
if (verboseDebugger) then
|
||||||
!$OMP CRITICAL (write2out)
|
!$OMP CRITICAL (write2out)
|
||||||
write(6,*) '::: integrateStress encountered NaN at ',g,i,e,' ; iteration ', NiterationStress
|
write(6,*) '::: integrateStress encountered NaN at ',g,i,e,' ; iteration ', NiterationStress
|
||||||
!$OMPEND CRITICAL (write2out)
|
!$OMPEND CRITICAL (write2out)
|
||||||
|
@ -1410,7 +1414,7 @@ LpLoop: do
|
||||||
invdRdLp = 0.0_pReal
|
invdRdLp = 0.0_pReal
|
||||||
call math_invert(9,dRdLp,invdRdLp,dummy,error) ! invert dR/dLp --> dLp/dR
|
call math_invert(9,dRdLp,invdRdLp,dummy,error) ! invert dR/dLp --> dLp/dR
|
||||||
if (error) then
|
if (error) then
|
||||||
if (debugger) then
|
if (verboseDebugger) then
|
||||||
!$OMP CRITICAL (write2out)
|
!$OMP CRITICAL (write2out)
|
||||||
write(6,*) '::: integrateStress failed on dR/dLp inversion at ',g,i,e,' ; iteration ', NiterationStress
|
write(6,*) '::: integrateStress failed on dR/dLp inversion at ',g,i,e,' ; iteration ', NiterationStress
|
||||||
write(6,*)
|
write(6,*)
|
||||||
|
@ -1443,7 +1447,7 @@ LpLoop: do
|
||||||
invFp_new = invFp_new/math_det3x3(invFp_new)**(1.0_pReal/3.0_pReal) ! regularize by det
|
invFp_new = invFp_new/math_det3x3(invFp_new)**(1.0_pReal/3.0_pReal) ! regularize by det
|
||||||
call math_invert3x3(invFp_new,Fp_new,det,error)
|
call math_invert3x3(invFp_new,Fp_new,det,error)
|
||||||
if (error) then
|
if (error) then
|
||||||
if (debugger) then
|
if (verboseDebugger) then
|
||||||
!$OMP CRITICAL (write2out)
|
!$OMP CRITICAL (write2out)
|
||||||
write(6,*) '::: integrateStress failed on invFp_new inversion at ',g,i,e,' ; iteration ', NiterationStress
|
write(6,*) '::: integrateStress failed on invFp_new inversion at ',g,i,e,' ; iteration ', NiterationStress
|
||||||
write(6,*)
|
write(6,*)
|
||||||
|
@ -1469,7 +1473,7 @@ LpLoop: do
|
||||||
|
|
||||||
! set return flag to true
|
! set return flag to true
|
||||||
crystallite_integrateStress = .true.
|
crystallite_integrateStress = .true.
|
||||||
if (selectiveDebugger) then
|
if (verboseDebugger .and. selectiveDebugger) then
|
||||||
!$OMP CRITICAL (write2out)
|
!$OMP CRITICAL (write2out)
|
||||||
write(6,*) '::: integrateStress converged at ',g,i,e,' ; iteration ', NiterationStress
|
write(6,*) '::: integrateStress converged at ',g,i,e,' ; iteration ', NiterationStress
|
||||||
write(6,*)
|
write(6,*)
|
||||||
|
|
|
@ -21,7 +21,8 @@
|
||||||
integer(pInt) :: debug_i = 1_pInt
|
integer(pInt) :: debug_i = 1_pInt
|
||||||
integer(pInt) :: debug_g = 1_pInt
|
integer(pInt) :: debug_g = 1_pInt
|
||||||
logical :: selectiveDebugger = .false.
|
logical :: selectiveDebugger = .false.
|
||||||
logical :: debugger = .false.
|
logical :: verboseDebugger = .false.
|
||||||
|
logical :: debugger = .true.
|
||||||
logical :: distribution_init = .false.
|
logical :: distribution_init = .false.
|
||||||
|
|
||||||
CONTAINS
|
CONTAINS
|
||||||
|
@ -40,6 +41,8 @@ subroutine debug_init()
|
||||||
nHomog
|
nHomog
|
||||||
implicit none
|
implicit none
|
||||||
|
|
||||||
|
if (.not. debugger) verboseDebugger = .false.
|
||||||
|
|
||||||
write(6,*)
|
write(6,*)
|
||||||
write(6,*) '<<<+- debug init -+>>>'
|
write(6,*) '<<<+- debug init -+>>>'
|
||||||
write(6,*) '$Id$'
|
write(6,*) '$Id$'
|
||||||
|
|
|
@ -258,6 +258,7 @@ subroutine materialpoint_stressAndItsTangent(&
|
||||||
crystallite_orientations
|
crystallite_orientations
|
||||||
use debug, only: debugger, &
|
use debug, only: debugger, &
|
||||||
selectiveDebugger, &
|
selectiveDebugger, &
|
||||||
|
verboseDebugger, &
|
||||||
debug_e, &
|
debug_e, &
|
||||||
debug_i, &
|
debug_i, &
|
||||||
debug_MaterialpointLoopDistribution, &
|
debug_MaterialpointLoopDistribution, &
|
||||||
|
@ -272,13 +273,15 @@ subroutine materialpoint_stressAndItsTangent(&
|
||||||
|
|
||||||
! ------ initialize to starting condition ------
|
! ------ initialize to starting condition ------
|
||||||
|
|
||||||
write (6,*)
|
if (debugger) then
|
||||||
write (6,*) 'Material Point start'
|
write (6,*)
|
||||||
write (6,'(a,/,(f12.7,x))') 'Temp0 of 1 1' ,materialpoint_Temperature(1,1)
|
write (6,*) 'Material Point start'
|
||||||
write (6,'(a,/,3(3(f12.7,x)/))') 'F0 of 1 1',materialpoint_F0(1:3,:,1,1)
|
write (6,'(a,/,(f12.7,x))') 'Temp0 of 1 1' ,materialpoint_Temperature(1,1)
|
||||||
write (6,'(a,/,3(3(f12.7,x)/))') 'F of 1 1',materialpoint_F(1:3,:,1,1)
|
write (6,'(a,/,3(3(f12.7,x)/))') 'F0 of 1 1',materialpoint_F0(1:3,:,1,1)
|
||||||
write (6,'(a,/,3(3(f12.7,x)/))') 'Fp0 of 1 1 1',crystallite_Fp0(1:3,:,1,1,1)
|
write (6,'(a,/,3(3(f12.7,x)/))') 'F of 1 1',materialpoint_F(1:3,:,1,1)
|
||||||
write (6,'(a,/,3(3(f12.7,x)/))') 'Lp0 of 1 1 1',crystallite_Lp0(1:3,:,1,1,1)
|
write (6,'(a,/,3(3(f12.7,x)/))') 'Fp0 of 1 1 1',crystallite_Fp0(1:3,:,1,1,1)
|
||||||
|
write (6,'(a,/,3(3(f12.7,x)/))') 'Lp0 of 1 1 1',crystallite_Lp0(1:3,:,1,1,1)
|
||||||
|
endif
|
||||||
|
|
||||||
!$OMP PARALLEL DO
|
!$OMP PARALLEL DO
|
||||||
do e = FEsolving_execElem(1),FEsolving_execElem(2) ! iterate over elements to be processed
|
do e = FEsolving_execElem(1),FEsolving_execElem(2) ! iterate over elements to be processed
|
||||||
|
@ -322,7 +325,7 @@ subroutine materialpoint_stressAndItsTangent(&
|
||||||
|
|
||||||
! if our materialpoint converged or consists of only one single grain then we are either finished or have to wind forward
|
! if our materialpoint converged or consists of only one single grain then we are either finished or have to wind forward
|
||||||
if ( materialpoint_converged(i,e) .or. (myNgrains == 1_pInt .and. materialpoint_subStep(i,e) <= 1.0_pReal) ) then
|
if ( materialpoint_converged(i,e) .or. (myNgrains == 1_pInt .and. materialpoint_subStep(i,e) <= 1.0_pReal) ) then
|
||||||
if (selectiveDebugger) then
|
if (verboseDebugger .and. selectiveDebugger) then
|
||||||
!$OMP CRITICAL (write2out)
|
!$OMP CRITICAL (write2out)
|
||||||
write(6,'(a21,f10.8,a34,f10.8,a37,/)') 'winding forward from ', &
|
write(6,'(a21,f10.8,a34,f10.8,a37,/)') 'winding forward from ', &
|
||||||
materialpoint_subFrac(i,e), ' to current materialpoint_subFrac ', &
|
materialpoint_subFrac(i,e), ' to current materialpoint_subFrac ', &
|
||||||
|
@ -361,7 +364,7 @@ subroutine materialpoint_stressAndItsTangent(&
|
||||||
materialpoint_subStep(i,e) = subStepSizeHomog * materialpoint_subStep(i,e) ! crystallite had severe trouble, so do a significant cutback
|
materialpoint_subStep(i,e) = subStepSizeHomog * materialpoint_subStep(i,e) ! crystallite had severe trouble, so do a significant cutback
|
||||||
! <<modified to add more flexibility in cutback>>
|
! <<modified to add more flexibility in cutback>>
|
||||||
|
|
||||||
if (selectiveDebugger) then
|
if (verboseDebugger .and. selectiveDebugger) then
|
||||||
!$OMP CRITICAL (write2out)
|
!$OMP CRITICAL (write2out)
|
||||||
write(6,'(a82,f10.8,/)') 'cutback step in materialpoint_stressAndItsTangent with new materialpoint_subStep: ',&
|
write(6,'(a82,f10.8,/)') 'cutback step in materialpoint_stressAndItsTangent with new materialpoint_subStep: ',&
|
||||||
materialpoint_subStep(i,e)
|
materialpoint_subStep(i,e)
|
||||||
|
@ -491,9 +494,12 @@ elementLoop: do e = FEsolving_execElem(1),FEsolving_execElem(2) ! iterate
|
||||||
enddo elementLoop
|
enddo elementLoop
|
||||||
!$OMP END PARALLEL DO
|
!$OMP END PARALLEL DO
|
||||||
|
|
||||||
write (6,*)
|
|
||||||
write (6,*) 'Material Point end'
|
if (debugger) then
|
||||||
write (6,*)
|
write (6,*)
|
||||||
|
write (6,*) 'Material Point end'
|
||||||
|
write (6,*)
|
||||||
|
endif
|
||||||
return
|
return
|
||||||
|
|
||||||
endsubroutine
|
endsubroutine
|
||||||
|
|
Loading…
Reference in New Issue