diff --git a/src/CPFEM.f90 b/src/CPFEM.f90 index d2eaa7979..a1e562c24 100644 --- a/src/CPFEM.f90 +++ b/src/CPFEM.f90 @@ -47,7 +47,8 @@ module CPFEM public :: & CPFEM_general, & - CPFEM_initAll + CPFEM_initAll, & + CPFEM_results contains @@ -633,4 +634,35 @@ subroutine CPFEM_general(mode, parallelExecution, ffn, ffn1, temperature_inp, dt end subroutine CPFEM_general + +!-------------------------------------------------------------------------------------------------- +!> @brief triggers writing of the results +!-------------------------------------------------------------------------------------------------- +subroutine CPFEM_results(inc,time) + use prec, only: & + pInt +#ifdef DAMASK_HDF5 + use results + use HDF5_utilities +#endif + use constitutive, only: & + constitutive_results + use crystallite, only: & + crystallite_results + + implicit none + integer(pInt), intent(in) :: inc + real(pReal), intent(in) :: time + +#ifdef DAMASK_HDF5 + call results_openJobFile + call results_addIncrement(inc,time) + call constitutive_results + call crystallite_results + call results_removeLink('current') ! ToDo: put this into closeJobFile + call results_closeJobFile +#endif + +end subroutine CPFEM_results + end module CPFEM diff --git a/src/CPFEM2.f90 b/src/CPFEM2.f90 index 0ecea2b44..bf8deeb78 100644 --- a/src/CPFEM2.f90 +++ b/src/CPFEM2.f90 @@ -290,6 +290,7 @@ subroutine CPFEM_age() end subroutine CPFEM_age + !-------------------------------------------------------------------------------------------------- !> @brief triggers writing of the results !-------------------------------------------------------------------------------------------------- diff --git a/src/DAMASK_marc.f90 b/src/DAMASK_marc.f90 index edf00a203..0ff94f3d7 100644 --- a/src/DAMASK_marc.f90 +++ b/src/DAMASK_marc.f90 @@ -16,6 +16,7 @@ !> @details Marc subroutines used: !> @details - hypela2 !> @details - plotv +!> @details - uedinc !> @details - flux !> @details - quit !> @details Marc common blocks included: @@ -273,26 +274,20 @@ subroutine hypela2(d,g,e,de,s,t,dt,ngens,m,nn,kcus,matus,ndi,nshear,disp, & outdatedByNewInc = .false. ! no aging of state calcMode = .false. ! pretend last step was collection lastLovl = lovl ! pretend that this is NOT the first after a lovl change - !$OMP CRITICAL (write2out) - write(6,'(a,i6,1x,i2)') '<< HYPELA2 >> start of analysis..! ',m(1),nn - flush(6) - !$OMP END CRITICAL (write2out) + write(6,'(a,i6,1x,i2)') '<< HYPELA2 >> start of analysis..! ',m(1),nn + flush(6) else if (inc - theInc > 1) then ! >> restart of broken analysis << lastIncConverged = .false. ! no Jacobian backup outdatedByNewInc = .false. ! no aging of state calcMode = .true. ! pretend last step was calculation - !$OMP CRITICAL (write2out) - write(6,'(a,i6,1x,i2)') '<< HYPELA2 >> restart of analysis..! ',m(1),nn - flush(6) - !$OMP END CRITICAL (write2out) + write(6,'(a,i6,1x,i2)') '<< HYPELA2 >> restart of analysis..! ',m(1),nn + flush(6) else ! >> just the next inc << lastIncConverged = .true. ! request Jacobian backup outdatedByNewInc = .true. ! request aging of state calcMode = .true. ! assure last step was calculation - !$OMP CRITICAL (write2out) - write(6,'(a,i6,1x,i2)') '<< HYPELA2 >> new increment..! ',m(1),nn - flush(6) - !$OMP END CRITICAL (write2out) + write(6,'(a,i6,1x,i2)') '<< HYPELA2 >> new increment..! ',m(1),nn + flush(6) endif else if ( timinc < theDelta ) then ! >> cutBack << lastIncConverged = .false. ! no Jacobian backup @@ -300,10 +295,8 @@ subroutine hypela2(d,g,e,de,s,t,dt,ngens,m,nn,kcus,matus,ndi,nshear,disp, & terminallyIll = .false. cycleCounter = -1 ! first calc step increments this to cycle = 0 calcMode = .true. ! pretend last step was calculation - !$OMP CRITICAL (write2out) - write(6,'(a,i6,1x,i2)') '<< HYPELA2 >> cutback detected..! ',m(1),nn - flush(6) - !$OMP END CRITICAL (write2out) + write(6,'(a,i6,1x,i2)') '<< HYPELA2 >> cutback detected..! ',m(1),nn + flush(6) endif ! convergence treatment end @@ -365,7 +358,6 @@ subroutine hypela2(d,g,e,de,s,t,dt,ngens,m,nn,kcus,matus,ndi,nshear,disp, & lastLovl = lovl ! record lovl call CPFEM_general(computationMode,usePingPong,ffn,ffn1,t(1),timinc,m(1),nn,stress,ddsdde) - ! Mandel: 11, 22, 33, SQRT(2)*12, SQRT(2)*23, SQRT(2)*13 ! Marc: 11, 22, 33, 12, 23, 13 ! Marc: 11, 22, 33, 12 @@ -407,6 +399,26 @@ subroutine flux(f,ts,n,time) end subroutine flux +!-------------------------------------------------------------------------------------------------- +!> @brief sets user defined output variables for Marc +!> @details select a variable contour plotting (user subroutine). +!-------------------------------------------------------------------------------------------------- +subroutine uedinc(inc,incsub) + use prec, only: & + pReal, & + pInt + use CPFEM, only: & + CPFEM_results + + implicit none + integer, intent(in) :: inc, incsub +#include QUOTE(PASTE(./MarcInclude/creeps,Marc4DAMASK)) ! creeps is needed for timinc (time increment) + + call CPFEM_results(inc,cptim) + +end subroutine uedinc + + !-------------------------------------------------------------------------------------------------- !> @brief sets user defined output variables for Marc !> @details select a variable contour plotting (user subroutine).