diff --git a/PRIVATE b/PRIVATE index eb3f941ff..8de4f792a 160000 --- a/PRIVATE +++ b/PRIVATE @@ -1 +1 @@ -Subproject commit eb3f941ff55b2a0fe83c8812d0cfb84448dd8aa5 +Subproject commit 8de4f792a46d98d98418dbf2d3e621b22c13b18a diff --git a/src/DAMASK_spectral.f90 b/src/DAMASK_spectral.f90 index 7ec2dde4c..068aebbc6 100755 --- a/src/DAMASK_spectral.f90 +++ b/src/DAMASK_spectral.f90 @@ -393,23 +393,23 @@ program DAMASK_spectral !-------------------------------------------------------------------------------------------------- ! write header of output file if (worldrank == 0) then - if (.not. appendToOutFile) then ! after restart, append to existing results file + if (.not. appendToOutFile) then ! after restart, append to existing results file open(newunit=resUnit,file=trim(getSolverWorkingDirectoryName())//trim(getSolverJobName())//& '.spectralOut',form='UNFORMATTED',status='REPLACE') - write(resUnit) 'load:', trim(loadCaseFile) ! ... and write header + write(resUnit) 'load:', trim(loadCaseFile) ! ... and write header write(resUnit) 'workingdir:', trim(getSolverWorkingDirectoryName()) write(resUnit) 'geometry:', trim(geometryFile) write(resUnit) 'grid:', grid write(resUnit) 'size:', geomSize write(resUnit) 'materialpoint_sizeResults:', materialpoint_sizeResults write(resUnit) 'loadcases:', size(loadCases) - write(resUnit) 'frequencies:', loadCases%outputfrequency ! one entry per LoadCase - write(resUnit) 'times:', loadCases%time ! one entry per LoadCase + write(resUnit) 'frequencies:', loadCases%outputfrequency ! one entry per LoadCase + write(resUnit) 'times:', loadCases%time ! one entry per LoadCase write(resUnit) 'logscales:', loadCases%logscale - write(resUnit) 'increments:', loadCases%incs ! one entry per LoadCase - write(resUnit) 'startingIncrement:', restartInc - 1_pInt ! start with writing out the previous inc + write(resUnit) 'increments:', loadCases%incs ! one entry per LoadCase + write(resUnit) 'startingIncrement:', restartInc ! start with writing out the previous inc write(resUnit) 'eoh' - close(resUnit) ! end of header + close(resUnit) ! end of header open(newunit=statUnit,file=trim(getSolverWorkingDirectoryName())//trim(getSolverJobName())//& '.sta',form='FORMATTED',status='REPLACE') write(statUnit,'(a)') 'Increment Time CutbackLevel Converged IterationsNeeded' ! statistics file @@ -480,15 +480,15 @@ program DAMASK_spectral endif else ! not-1st currentLoadCase of logarithmic scale timeinc = time0 * & - ( (1.0_pReal + loadCases(currentLoadCase)%time/time0 )**(real( inc,pReal)/& + ( (1.0_pReal + loadCases(currentLoadCase)%time/time0 )**(real( inc ,pReal)/& real(loadCases(currentLoadCase)%incs ,pReal))& - -(1.0_pReal + loadCases(currentLoadCase)%time/time0 )**(real( (inc-1_pInt),pReal)/& + -(1.0_pReal + loadCases(currentLoadCase)%time/time0 )**(real( inc-1_pInt ,pReal)/& real(loadCases(currentLoadCase)%incs ,pReal))) endif endif timeinc = timeinc * real(subStepFactor,pReal)**real(-cutBackLevel,pReal) ! depending on cut back level, decrease time step - skipping: if (totalIncsCounter < restartInc) then ! not yet at restart inc? + skipping: if (totalIncsCounter <= restartInc) then ! not yet at restart inc? time = time + timeinc ! just advance time, skip already performed calculation guess = .true. ! QUESTION:why forced guessing instead of inheriting loadcase preference else skipping @@ -509,8 +509,8 @@ program DAMASK_spectral ',a,'//IO_intOut(stepFraction) //',a,'//IO_intOut(subStepFactor**cutBackLevel)//& ',a,'//IO_intOut(currentLoadCase)//',a,'//IO_intOut(size(loadCases))//')') & 'Time', time, & - 's: Increment ', inc, '/', loadCases(currentLoadCase)%incs,& - '-', stepFraction, '/', subStepFactor**cutBackLevel,& + 's: Increment ', inc,'/',loadCases(currentLoadCase)%incs,& + '-', stepFraction,'/',subStepFactor**cutBackLevel,& ' of load case ', currentLoadCase,'/',size(loadCases) write(incInfo,& '(a,'//IO_intOut(totalIncsCounter)//& @@ -518,7 +518,7 @@ program DAMASK_spectral ',a,'//IO_intOut(stepFraction)//& ',a,'//IO_intOut(subStepFactor**cutBackLevel)//')') & 'Increment ',totalIncsCounter,'/',sum(loadCases%incs),& - '-',stepFraction, '/', subStepFactor**cutBackLevel + '-', stepFraction,'/',subStepFactor**cutBackLevel flush(6) !-------------------------------------------------------------------------------------------------- diff --git a/src/FEsolving.f90 b/src/FEsolving.f90 index 92feaa926..3853cb37f 100644 --- a/src/FEsolving.f90 +++ b/src/FEsolving.f90 @@ -79,20 +79,22 @@ subroutine FE_init #include "compilation_info.f90" modelName = getSolverJobName() + +#if defined(Spectral) || defined(FEM) + #ifdef Spectral restartInc = spectralRestartInc - if(restartInc <= 0_pInt) then - call IO_warning(warning_ID=34_pInt) - restartInc = 1_pInt - endif - restartRead = restartInc > 1_pInt ! only read in if "true" restart requested -#elif defined FEM +#endif +#ifdef FEM restartInc = FEMRestartInc - if(restartInc <= 0_pInt) then +#endif + + if(restartInc < 0_pInt) then call IO_warning(warning_ID=34_pInt) - restartInc = 1_pInt + restartInc = 0_pInt endif - restartRead = restartInc > 1_pInt + restartRead = restartInc > 0_pInt ! only read in if "true" restart requested + #else call IO_open_inputFile(FILEUNIT,modelName) rewind(FILEUNIT) @@ -131,19 +133,19 @@ subroutine FE_init do read (FILEUNIT,'(a1024)',END=200) line chunkPos = IO_stringPos(line) - if ( IO_lc(IO_stringValue(line,chunkPos,1_pInt)) == 'restart' .and. & - IO_lc(IO_stringValue(line,chunkPos,2_pInt)) == 'file' .and. & - IO_lc(IO_stringValue(line,chunkPos,3_pInt)) == 'job' .and. & - IO_lc(IO_stringValue(line,chunkPos,4_pInt)) == 'id' ) & + if ( IO_lc(IO_stringValue(line,chunkPos,1_pInt)) == 'restart' & + .and. IO_lc(IO_stringValue(line,chunkPos,2_pInt)) == 'file' & + .and. IO_lc(IO_stringValue(line,chunkPos,3_pInt)) == 'job' & + .and. IO_lc(IO_stringValue(line,chunkPos,4_pInt)) == 'id' ) & modelName = IO_StringValue(line,chunkPos,6_pInt) enddo -#else +#else ! QUESTION: is this meaningful for the spectral/FEM case? call IO_open_inputFile(FILEUNIT,modelName) rewind(FILEUNIT) do read (FILEUNIT,'(a1024)',END=200) line chunkPos = IO_stringPos(line) - if ( IO_lc(IO_stringValue(line,chunkPos,1_pInt))=='*heading') then + if (IO_lc(IO_stringValue(line,chunkPos,1_pInt))=='*heading') then read (FILEUNIT,'(a1024)',END=200) line chunkPos = IO_stringPos(line) modelName = IO_StringValue(line,chunkPos,1_pInt) diff --git a/src/constitutive.f90 b/src/constitutive.f90 index be9899d73..8efd387e0 100644 --- a/src/constitutive.f90 +++ b/src/constitutive.f90 @@ -885,7 +885,8 @@ subroutine constitutive_collectDotState(Tstar_v, FeArray, FpArray, subdt, subfra real(pReal), intent(in), dimension(6) :: & Tstar_v !< 2nd Piola Kirchhoff stress tensor (Mandel) integer(pLongInt) :: & - tick, tock, & + tick = 0_pLongInt, & + tock = 0_pLongInt, & tickrate, & maxticks integer(pInt) :: & diff --git a/src/mesh.f90 b/src/mesh.f90 index 2c7ecc8ed..74bb55a3b 100644 --- a/src/mesh.f90 +++ b/src/mesh.f90 @@ -379,30 +379,30 @@ module mesh ],pInt) - integer(pInt), dimension(FE_Nelemtypes), parameter, private :: MESH_VTKELEMTYPE = & - int([ & - 5, & ! element 6 (2D 3node 1ip) - 22, & ! element 125 (2D 6node 3ip) - 9, & ! element 11 (2D 4node 4ip) - 23, & ! element 27 (2D 8node 9ip) - 23, & ! element 54 (2D 8node 4ip) - 10, & ! element 134 (3D 4node 1ip) - 10, & ! element 157 (3D 5node 4ip) - 24, & ! element 127 (3D 10node 4ip) - 13, & ! element 136 (3D 6node 6ip) - 12, & ! element 117 (3D 8node 1ip) - 12, & ! element 7 (3D 8node 8ip) - 25, & ! element 57 (3D 20node 8ip) - 25 & ! element 21 (3D 20node 27ip) - ],pInt) - - integer(pInt), dimension(FE_Ncelltypes), parameter, private :: MESH_VTKCELLTYPE = & - int([ & - 5, & ! (2D 3node) - 9, & ! (2D 4node) - 10, & ! (3D 4node) - 12 & ! (3D 8node) - ],pInt) +! integer(pInt), dimension(FE_Nelemtypes), parameter, private :: MESH_VTKELEMTYPE = & +! int([ & +! 5, & ! element 6 (2D 3node 1ip) +! 22, & ! element 125 (2D 6node 3ip) +! 9, & ! element 11 (2D 4node 4ip) +! 23, & ! element 27 (2D 8node 9ip) +! 23, & ! element 54 (2D 8node 4ip) +! 10, & ! element 134 (3D 4node 1ip) +! 10, & ! element 157 (3D 5node 4ip) +! 24, & ! element 127 (3D 10node 4ip) +! 13, & ! element 136 (3D 6node 6ip) +! 12, & ! element 117 (3D 8node 1ip) +! 12, & ! element 7 (3D 8node 8ip) +! 25, & ! element 57 (3D 20node 8ip) +! 25 & ! element 21 (3D 20node 27ip) +! ],pInt) +! +! integer(pInt), dimension(FE_Ncelltypes), parameter, private :: MESH_VTKCELLTYPE = & +! int([ & +! 5, & ! (2D 3node) +! 9, & ! (2D 4node) +! 10, & ! (3D 4node) +! 12 & ! (3D 8node) +! ],pInt) public :: & @@ -2848,16 +2848,18 @@ use IO, only: & implicit none integer(pInt), intent(in) :: fileUnit -#ifndef Spectral +#ifdef Spectral + mesh_periodicSurface = .true. + + end subroutine mesh_get_damaskOptions + +#else + integer(pInt), allocatable, dimension(:) :: chunkPos integer(pInt) chunk, Nchunks character(len=300) :: line, damaskOption, v character(len=300) :: keyword -#endif -#ifdef Spectral - mesh_periodicSurface = .true. -#else mesh_periodicSurface = .false. #ifdef Marc4DAMASK keyword = '$damask' @@ -2886,9 +2888,9 @@ use IO, only: & enddo 610 FORMAT(A300) -#endif 620 end subroutine mesh_get_damaskOptions +#endif !-------------------------------------------------------------------------------------------------- diff --git a/src/spectral_interface.f90 b/src/spectral_interface.f90 index 9aa4d1069..b45e8316c 100644 --- a/src/spectral_interface.f90 +++ b/src/spectral_interface.f90 @@ -15,7 +15,7 @@ module DAMASK_interface private #include logical, public, protected :: appendToOutFile = .false. !< Append to existing spectralOut file (in case of restart, not in case of regridding) - integer(pInt), public, protected :: spectralRestartInc = 1_pInt !< Increment at which calculation starts + integer(pInt), public, protected :: spectralRestartInc = 0_pInt !< Increment at which calculation starts character(len=1024), public, protected :: & geometryFile = '', & !< parameter given for geometry file loadCaseFile = '' !< parameter given for load case file @@ -167,12 +167,12 @@ subroutine DAMASK_interface_init() write(6,'(a)') ' For further configuration place "numerics.config"' write(6,'(a)')' and "debug.config" in that directory.' write(6,'(/,a)')' --restart XX' - write(6,'(a)') ' Reads in total increment No. XX-1 and continues to' - write(6,'(a)') ' calculate total increment No. XX.' - write(6,'(a)') ' Appends to existing results file ' + write(6,'(a)') ' Reads in increment XX and continues with calculating' + write(6,'(a)') ' increment XX+1 based on this.' + write(6,'(a)') ' Appends to existing results file' write(6,'(a)') ' "NameOfGeom_NameOfLoadFile.spectralOut".' - write(6,'(a)') ' Works only if the restart information for total increment' - write(6,'(a)') ' No. XX-1 is available in the working directory.' + write(6,'(a)') ' Works only if the restart information for increment XX' + write(6,'(a)') ' is available in the working directory.' write(6,'(/,a)')' -----------------------------------------------------------------------' write(6,'(a)') ' Help:' write(6,'(/,a)')' --help' @@ -201,20 +201,20 @@ subroutine DAMASK_interface_init() call get_environment_variable('USER',userName) error = getHostName(hostName) - write(6,'(a,a)') ' Host name: ', trim(hostName) - write(6,'(a,a)') ' User name: ', trim(userName) - write(6,'(a,a)') ' Command line call: ', trim(commandLine) - if (len(trim(workingDirArg))>0) & - write(6,'(a,a)') ' Working dir argument: ', trim(workingDirArg) - write(6,'(a,a)') ' Geometry argument: ', trim(geometryArg) - write(6,'(a,a)') ' Loadcase argument: ', trim(loadcaseArg) - write(6,'(a,a)') ' Working directory: ', trim(getSolverWorkingDirectoryName()) - write(6,'(a,a)') ' Geometry file: ', trim(geometryFile) - write(6,'(a,a)') ' Loadcase file: ', trim(loadCaseFile) - write(6,'(a,a)') ' Solver job name: ', trim(getSolverJobName()) - if (SpectralRestartInc > 1_pInt) & - write(6,'(a,i6.6)') ' Restart at increment: ', spectralRestartInc - write(6,'(a,l1,/)') ' Append to result file: ', appendToOutFile + write(6,'(a,a)') ' Host name: ', trim(hostName) + write(6,'(a,a)') ' User name: ', trim(userName) + write(6,'(a,a)') ' Command line call: ', trim(commandLine) + if (len(trim(workingDirArg)) > 0) & + write(6,'(a,a)') ' Working dir argument: ', trim(workingDirArg) + write(6,'(a,a)') ' Geometry argument: ', trim(geometryArg) + write(6,'(a,a)') ' Loadcase argument: ', trim(loadcaseArg) + write(6,'(a,a)') ' Working directory: ', trim(getSolverWorkingDirectoryName()) + write(6,'(a,a)') ' Geometry file: ', trim(geometryFile) + write(6,'(a,a)') ' Loadcase file: ', trim(loadCaseFile) + write(6,'(a,a)') ' Solver job name: ', trim(getSolverJobName()) + if (SpectralRestartInc > 0_pInt) & + write(6,'(a,i6.6)') ' Restart from increment: ', spectralRestartInc + write(6,'(a,l1,/)') ' Append to result file: ', appendToOutFile end subroutine DAMASK_interface_init diff --git a/src/spectral_mech_AL.f90 b/src/spectral_mech_AL.f90 index 176ac7194..27a1def0c 100644 --- a/src/spectral_mech_AL.f90 +++ b/src/spectral_mech_AL.f90 @@ -188,10 +188,10 @@ subroutine AL_init F => FandF_lambda( 0: 8,:,:,:) F_lambda => FandF_lambda( 9:17,:,:,:) - restart: if (restartInc > 1_pInt) then + restart: if (restartInc > 0_pInt) then if (iand(debug_level(debug_spectral),debug_spectralRestart) /= 0) then - write(6,'(/,a,'//IO_intOut(restartInc-1_pInt)//',a)') & - 'reading values of increment ', restartInc-1_pInt, ' from file' + write(6,'(/,a,'//IO_intOut(restartInc)//',a)') & + 'reading values of increment ', restartInc, ' from file' flush(6) endif write(rankStr,'(a1,i0)')'_',worldrank @@ -207,7 +207,7 @@ subroutine AL_init read (777,rec=1) F_aimDot; close (777) F_aim = reshape(sum(sum(sum(F,dim=4),dim=3),dim=2) * wgt, [3,3]) ! average of F F_aim_lastInc = sum(sum(sum(F_lastInc,dim=5),dim=4),dim=3) * wgt ! average of F_lastInc - elseif (restartInc == 1_pInt) then restart + elseif (restartInc == 0_pInt) then restart F_lastInc = spread(spread(spread(math_I3,3,grid(1)),4,grid(2)),5,grid3) ! initialize to identity F = reshape(F_lastInc,[9,grid(1),grid(2),grid3]) F_lambda = F @@ -224,10 +224,10 @@ subroutine AL_init nullify(F_lambda) call DMDAVecRestoreArrayF90(da,solution_vec,FandF_lambda,ierr); CHKERRQ(ierr) ! write data back to PETSc - restartRead: if (restartInc > 1_pInt) then + restartRead: if (restartInc > 0_pInt) then if (iand(debug_level(debug_spectral),debug_spectralRestart)/= 0 .and. worldrank == 0_pInt) & - write(6,'(/,a,'//IO_intOut(restartInc-1_pInt)//',a)') & - 'reading more values of increment ', restartInc-1_pInt, ' from file' + write(6,'(/,a,'//IO_intOut(restartInc)//',a)') & + 'reading more values of increment ', restartInc, ' from file' flush(6) call IO_read_realFile(777,'C_volAvg',trim(getSolverJobName()),size(C_volAvg)) read (777,rec=1) C_volAvg; close (777) diff --git a/src/spectral_mech_Basic.f90 b/src/spectral_mech_Basic.f90 index 44e043575..2a5e1838d 100644 --- a/src/spectral_mech_Basic.f90 +++ b/src/spectral_mech_Basic.f90 @@ -172,10 +172,10 @@ subroutine basicPETSc_init ! init fields call DMDAVecGetArrayF90(da,solution_vec,F,ierr); CHKERRQ(ierr) ! get the data out of PETSc to work with - restart: if (restartInc > 1_pInt) then + restart: if (restartInc > 0_pInt) then if (iand(debug_level(debug_spectral),debug_spectralRestart) /= 0) then - write(6,'(/,a,'//IO_intOut(restartInc-1_pInt)//',a)') & - 'reading values of increment ', restartInc-1_pInt, ' from file' + write(6,'(/,a,'//IO_intOut(restartInc)//',a)') & + 'reading values of increment ', restartInc, ' from file' flush(6) endif write(rankStr,'(a1,i0)')'_',worldrank @@ -187,7 +187,7 @@ subroutine basicPETSc_init read (777,rec=1) F_aimDot; close (777) F_aim = reshape(sum(sum(sum(F,dim=4),dim=3),dim=2) * wgt, [3,3]) ! average of F F_aim_lastInc = sum(sum(sum(F_lastInc,dim=5),dim=4),dim=3) * wgt ! average of F_lastInc - elseif (restartInc == 1_pInt) then restart + elseif (restartInc == 0_pInt) then restart F_lastInc = spread(spread(spread(math_I3,3,grid(1)),4,grid(2)),5,grid3) ! initialize to identity F = reshape(F_lastInc,[9,grid(1),grid(2),grid3]) endif restart @@ -201,10 +201,10 @@ subroutine basicPETSc_init call DMDAVecRestoreArrayF90(da,solution_vec,F,ierr); CHKERRQ(ierr) ! write data back to PETSc ! QUESTION: why not writing back right after reading (l.189)? - restartRead: if (restartInc > 1_pInt) then ! QUESTION: are those values not calc'ed by constitutiveResponse? why reading from file? - if (iand(debug_level(debug_spectral),debug_spectralRestart)/= 0 .and. worldrank == 0_pInt) & - write(6,'(/,a,'//IO_intOut(restartInc-1_pInt)//',a)') & - 'reading more values of increment ', restartInc-1_pInt, ' from file' + restartRead: if (restartInc > 0_pInt) then ! QUESTION: are those values not calc'ed by constitutiveResponse? why reading from file? + if (iand(debug_level(debug_spectral),debug_spectralRestart) /= 0 .and. worldrank == 0_pInt) & + write(6,'(/,a,'//IO_intOut(restartInc)//',a)') & + 'reading more values of increment ', restartInc, ' from file' flush(6) call IO_read_realFile(777,'C_volAvg',trim(getSolverJobName()),size(C_volAvg)) read (777,rec=1) C_volAvg; close (777) diff --git a/src/spectral_mech_Polarisation.f90 b/src/spectral_mech_Polarisation.f90 index 1a89718da..300b50142 100644 --- a/src/spectral_mech_Polarisation.f90 +++ b/src/spectral_mech_Polarisation.f90 @@ -185,10 +185,10 @@ subroutine Polarisation_init call DMDAVecGetArrayF90(da,solution_vec,FandF_tau,ierr); CHKERRQ(ierr) ! places pointer on PETSc data F => FandF_tau( 0: 8,:,:,:) F_tau => FandF_tau( 9:17,:,:,:) - restart: if (restartInc > 1_pInt) then + restart: if (restartInc > 0_pInt) then if (iand(debug_level(debug_spectral),debug_spectralRestart) /= 0) then - write(6,'(/,a,'//IO_intOut(restartInc-1_pInt)//',a)') & - 'reading values of increment ', restartInc - 1_pInt, ' from file' + write(6,'(/,a,'//IO_intOut(restartInc)//',a)') & + 'reading values of increment ', restartInc, ' from file' flush(6) endif write(rankStr,'(a1,i0)')'_',worldrank @@ -204,7 +204,7 @@ subroutine Polarisation_init read (777,rec=1) F_aimDot; close (777) F_aim = reshape(sum(sum(sum(F,dim=4),dim=3),dim=2) * wgt, [3,3]) ! average of F F_aim_lastInc = sum(sum(sum(F_lastInc,dim=5),dim=4),dim=3) * wgt ! average of F_lastInc - elseif (restartInc == 1_pInt) then restart + elseif (restartInc == 0_pInt) then restart F_lastInc = spread(spread(spread(math_I3,3,grid(1)),4,grid(2)),5,grid3) ! initialize to identity F = reshape(F_lastInc,[9,grid(1),grid(2),grid3]) F_tau = 2.0_pReal*F @@ -221,10 +221,10 @@ subroutine Polarisation_init nullify(F_tau) call DMDAVecRestoreArrayF90(da,solution_vec,FandF_tau,ierr); CHKERRQ(ierr) ! write data back to PETSc - restartRead: if (restartInc > 1_pInt) then + restartRead: if (restartInc > 0_pInt) then if (iand(debug_level(debug_spectral),debug_spectralRestart)/= 0 .and. worldrank == 0_pInt) & - write(6,'(/,a,'//IO_intOut(restartInc-1_pInt)//',a)') & - 'reading more values of increment ', restartInc-1_pInt, ' from file' + write(6,'(/,a,'//IO_intOut(restartInc)//',a)') & + 'reading more values of increment ', restartInc, ' from file' flush(6) call IO_read_realFile(777,'C_volAvg',trim(getSolverJobName()),size(C_volAvg)) read (777,rec=1) C_volAvg; close (777) diff --git a/src/spectral_utilities.f90 b/src/spectral_utilities.f90 index 7b6f08a7d..874558c57 100755 --- a/src/spectral_utilities.f90 +++ b/src/spectral_utilities.f90 @@ -153,9 +153,9 @@ contains !-------------------------------------------------------------------------------------------------- !> @brief allocates all neccessary fields, sets debug flags, create plans for FFTW -!> @details Sets the debug levels for general, divergence, restart and FFTW from the biwise coding +!> @details Sets the debug levels for general, divergence, restart, and FFTW from the bitwise coding !> provided by the debug module to logicals. -!> Allocates all fields used by FFTW and create the corresponding plans depending on the debug +!> Allocate all fields used by FFTW and create the corresponding plans depending on the debug !> level chosen. !> Initializes FFTW. !-------------------------------------------------------------------------------------------------- @@ -377,10 +377,10 @@ end subroutine utilities_init !-------------------------------------------------------------------------------------------------- -!> @brief updates references stiffness and potentially precalculated gamma operator +!> @brief updates reference stiffness and potentially precalculated gamma operator !> @details Sets the current reference stiffness to the stiffness given as an argument. !> If the gamma operator is precalculated, it is calculated with this stiffness. -!> In case of a on-the-fly calculation, only the reference stiffness is updated. +!> In case of an on-the-fly calculation, only the reference stiffness is updated. !> Also writes out the current reference stiffness for restart. !-------------------------------------------------------------------------------------------------- subroutine utilities_updateGamma(C,saveReference)