Merge branch '11-restart-from-instead-of-restart-at' into 'development'
Resolve "Restart FROM instead of restart AT" Closes #11 See merge request damask/DAMASK!18
This commit is contained in:
commit
8d81e12c96
2
PRIVATE
2
PRIVATE
|
@ -1 +1 @@
|
||||||
Subproject commit eb3f941ff55b2a0fe83c8812d0cfb84448dd8aa5
|
Subproject commit 8de4f792a46d98d98418dbf2d3e621b22c13b18a
|
|
@ -407,7 +407,7 @@ program DAMASK_spectral
|
||||||
write(resUnit) 'times:', loadCases%time ! one entry per LoadCase
|
write(resUnit) 'times:', loadCases%time ! one entry per LoadCase
|
||||||
write(resUnit) 'logscales:', loadCases%logscale
|
write(resUnit) 'logscales:', loadCases%logscale
|
||||||
write(resUnit) 'increments:', loadCases%incs ! one entry per LoadCase
|
write(resUnit) 'increments:', loadCases%incs ! one entry per LoadCase
|
||||||
write(resUnit) 'startingIncrement:', restartInc - 1_pInt ! start with writing out the previous inc
|
write(resUnit) 'startingIncrement:', restartInc ! start with writing out the previous inc
|
||||||
write(resUnit) 'eoh'
|
write(resUnit) 'eoh'
|
||||||
close(resUnit) ! end of header
|
close(resUnit) ! end of header
|
||||||
open(newunit=statUnit,file=trim(getSolverWorkingDirectoryName())//trim(getSolverJobName())//&
|
open(newunit=statUnit,file=trim(getSolverWorkingDirectoryName())//trim(getSolverJobName())//&
|
||||||
|
@ -480,15 +480,15 @@ program DAMASK_spectral
|
||||||
endif
|
endif
|
||||||
else ! not-1st currentLoadCase of logarithmic scale
|
else ! not-1st currentLoadCase of logarithmic scale
|
||||||
timeinc = time0 * &
|
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))&
|
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)))
|
real(loadCases(currentLoadCase)%incs ,pReal)))
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
timeinc = timeinc * real(subStepFactor,pReal)**real(-cutBackLevel,pReal) ! depending on cut back level, decrease time step
|
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
|
time = time + timeinc ! just advance time, skip already performed calculation
|
||||||
guess = .true. ! QUESTION:why forced guessing instead of inheriting loadcase preference
|
guess = .true. ! QUESTION:why forced guessing instead of inheriting loadcase preference
|
||||||
else skipping
|
else skipping
|
||||||
|
@ -509,8 +509,8 @@ program DAMASK_spectral
|
||||||
',a,'//IO_intOut(stepFraction) //',a,'//IO_intOut(subStepFactor**cutBackLevel)//&
|
',a,'//IO_intOut(stepFraction) //',a,'//IO_intOut(subStepFactor**cutBackLevel)//&
|
||||||
',a,'//IO_intOut(currentLoadCase)//',a,'//IO_intOut(size(loadCases))//')') &
|
',a,'//IO_intOut(currentLoadCase)//',a,'//IO_intOut(size(loadCases))//')') &
|
||||||
'Time', time, &
|
'Time', time, &
|
||||||
's: Increment ', inc, '/', loadCases(currentLoadCase)%incs,&
|
's: Increment ', inc,'/',loadCases(currentLoadCase)%incs,&
|
||||||
'-', stepFraction, '/', subStepFactor**cutBackLevel,&
|
'-', stepFraction,'/',subStepFactor**cutBackLevel,&
|
||||||
' of load case ', currentLoadCase,'/',size(loadCases)
|
' of load case ', currentLoadCase,'/',size(loadCases)
|
||||||
write(incInfo,&
|
write(incInfo,&
|
||||||
'(a,'//IO_intOut(totalIncsCounter)//&
|
'(a,'//IO_intOut(totalIncsCounter)//&
|
||||||
|
@ -518,7 +518,7 @@ program DAMASK_spectral
|
||||||
',a,'//IO_intOut(stepFraction)//&
|
',a,'//IO_intOut(stepFraction)//&
|
||||||
',a,'//IO_intOut(subStepFactor**cutBackLevel)//')') &
|
',a,'//IO_intOut(subStepFactor**cutBackLevel)//')') &
|
||||||
'Increment ',totalIncsCounter,'/',sum(loadCases%incs),&
|
'Increment ',totalIncsCounter,'/',sum(loadCases%incs),&
|
||||||
'-',stepFraction, '/', subStepFactor**cutBackLevel
|
'-', stepFraction,'/',subStepFactor**cutBackLevel
|
||||||
flush(6)
|
flush(6)
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
|
|
|
@ -79,20 +79,22 @@ subroutine FE_init
|
||||||
#include "compilation_info.f90"
|
#include "compilation_info.f90"
|
||||||
|
|
||||||
modelName = getSolverJobName()
|
modelName = getSolverJobName()
|
||||||
|
|
||||||
|
#if defined(Spectral) || defined(FEM)
|
||||||
|
|
||||||
#ifdef Spectral
|
#ifdef Spectral
|
||||||
restartInc = spectralRestartInc
|
restartInc = spectralRestartInc
|
||||||
if(restartInc <= 0_pInt) then
|
#endif
|
||||||
call IO_warning(warning_ID=34_pInt)
|
#ifdef FEM
|
||||||
restartInc = 1_pInt
|
|
||||||
endif
|
|
||||||
restartRead = restartInc > 1_pInt ! only read in if "true" restart requested
|
|
||||||
#elif defined FEM
|
|
||||||
restartInc = FEMRestartInc
|
restartInc = FEMRestartInc
|
||||||
if(restartInc <= 0_pInt) then
|
#endif
|
||||||
|
|
||||||
|
if(restartInc < 0_pInt) then
|
||||||
call IO_warning(warning_ID=34_pInt)
|
call IO_warning(warning_ID=34_pInt)
|
||||||
restartInc = 1_pInt
|
restartInc = 0_pInt
|
||||||
endif
|
endif
|
||||||
restartRead = restartInc > 1_pInt
|
restartRead = restartInc > 0_pInt ! only read in if "true" restart requested
|
||||||
|
|
||||||
#else
|
#else
|
||||||
call IO_open_inputFile(FILEUNIT,modelName)
|
call IO_open_inputFile(FILEUNIT,modelName)
|
||||||
rewind(FILEUNIT)
|
rewind(FILEUNIT)
|
||||||
|
@ -131,19 +133,19 @@ subroutine FE_init
|
||||||
do
|
do
|
||||||
read (FILEUNIT,'(a1024)',END=200) line
|
read (FILEUNIT,'(a1024)',END=200) line
|
||||||
chunkPos = IO_stringPos(line)
|
chunkPos = IO_stringPos(line)
|
||||||
if ( IO_lc(IO_stringValue(line,chunkPos,1_pInt)) == 'restart' .and. &
|
if ( IO_lc(IO_stringValue(line,chunkPos,1_pInt)) == 'restart' &
|
||||||
IO_lc(IO_stringValue(line,chunkPos,2_pInt)) == 'file' .and. &
|
.and. IO_lc(IO_stringValue(line,chunkPos,2_pInt)) == 'file' &
|
||||||
IO_lc(IO_stringValue(line,chunkPos,3_pInt)) == 'job' .and. &
|
.and. IO_lc(IO_stringValue(line,chunkPos,3_pInt)) == 'job' &
|
||||||
IO_lc(IO_stringValue(line,chunkPos,4_pInt)) == 'id' ) &
|
.and. IO_lc(IO_stringValue(line,chunkPos,4_pInt)) == 'id' ) &
|
||||||
modelName = IO_StringValue(line,chunkPos,6_pInt)
|
modelName = IO_StringValue(line,chunkPos,6_pInt)
|
||||||
enddo
|
enddo
|
||||||
#else
|
#else ! QUESTION: is this meaningful for the spectral/FEM case?
|
||||||
call IO_open_inputFile(FILEUNIT,modelName)
|
call IO_open_inputFile(FILEUNIT,modelName)
|
||||||
rewind(FILEUNIT)
|
rewind(FILEUNIT)
|
||||||
do
|
do
|
||||||
read (FILEUNIT,'(a1024)',END=200) line
|
read (FILEUNIT,'(a1024)',END=200) line
|
||||||
chunkPos = IO_stringPos(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
|
read (FILEUNIT,'(a1024)',END=200) line
|
||||||
chunkPos = IO_stringPos(line)
|
chunkPos = IO_stringPos(line)
|
||||||
modelName = IO_StringValue(line,chunkPos,1_pInt)
|
modelName = IO_StringValue(line,chunkPos,1_pInt)
|
||||||
|
|
|
@ -885,7 +885,8 @@ subroutine constitutive_collectDotState(Tstar_v, FeArray, FpArray, subdt, subfra
|
||||||
real(pReal), intent(in), dimension(6) :: &
|
real(pReal), intent(in), dimension(6) :: &
|
||||||
Tstar_v !< 2nd Piola Kirchhoff stress tensor (Mandel)
|
Tstar_v !< 2nd Piola Kirchhoff stress tensor (Mandel)
|
||||||
integer(pLongInt) :: &
|
integer(pLongInt) :: &
|
||||||
tick, tock, &
|
tick = 0_pLongInt, &
|
||||||
|
tock = 0_pLongInt, &
|
||||||
tickrate, &
|
tickrate, &
|
||||||
maxticks
|
maxticks
|
||||||
integer(pInt) :: &
|
integer(pInt) :: &
|
||||||
|
|
62
src/mesh.f90
62
src/mesh.f90
|
@ -379,30 +379,30 @@ module mesh
|
||||||
],pInt)
|
],pInt)
|
||||||
|
|
||||||
|
|
||||||
integer(pInt), dimension(FE_Nelemtypes), parameter, private :: MESH_VTKELEMTYPE = &
|
! integer(pInt), dimension(FE_Nelemtypes), parameter, private :: MESH_VTKELEMTYPE = &
|
||||||
int([ &
|
! int([ &
|
||||||
5, & ! element 6 (2D 3node 1ip)
|
! 5, & ! element 6 (2D 3node 1ip)
|
||||||
22, & ! element 125 (2D 6node 3ip)
|
! 22, & ! element 125 (2D 6node 3ip)
|
||||||
9, & ! element 11 (2D 4node 4ip)
|
! 9, & ! element 11 (2D 4node 4ip)
|
||||||
23, & ! element 27 (2D 8node 9ip)
|
! 23, & ! element 27 (2D 8node 9ip)
|
||||||
23, & ! element 54 (2D 8node 4ip)
|
! 23, & ! element 54 (2D 8node 4ip)
|
||||||
10, & ! element 134 (3D 4node 1ip)
|
! 10, & ! element 134 (3D 4node 1ip)
|
||||||
10, & ! element 157 (3D 5node 4ip)
|
! 10, & ! element 157 (3D 5node 4ip)
|
||||||
24, & ! element 127 (3D 10node 4ip)
|
! 24, & ! element 127 (3D 10node 4ip)
|
||||||
13, & ! element 136 (3D 6node 6ip)
|
! 13, & ! element 136 (3D 6node 6ip)
|
||||||
12, & ! element 117 (3D 8node 1ip)
|
! 12, & ! element 117 (3D 8node 1ip)
|
||||||
12, & ! element 7 (3D 8node 8ip)
|
! 12, & ! element 7 (3D 8node 8ip)
|
||||||
25, & ! element 57 (3D 20node 8ip)
|
! 25, & ! element 57 (3D 20node 8ip)
|
||||||
25 & ! element 21 (3D 20node 27ip)
|
! 25 & ! element 21 (3D 20node 27ip)
|
||||||
],pInt)
|
! ],pInt)
|
||||||
|
!
|
||||||
integer(pInt), dimension(FE_Ncelltypes), parameter, private :: MESH_VTKCELLTYPE = &
|
! integer(pInt), dimension(FE_Ncelltypes), parameter, private :: MESH_VTKCELLTYPE = &
|
||||||
int([ &
|
! int([ &
|
||||||
5, & ! (2D 3node)
|
! 5, & ! (2D 3node)
|
||||||
9, & ! (2D 4node)
|
! 9, & ! (2D 4node)
|
||||||
10, & ! (3D 4node)
|
! 10, & ! (3D 4node)
|
||||||
12 & ! (3D 8node)
|
! 12 & ! (3D 8node)
|
||||||
],pInt)
|
! ],pInt)
|
||||||
|
|
||||||
|
|
||||||
public :: &
|
public :: &
|
||||||
|
@ -2848,16 +2848,18 @@ use IO, only: &
|
||||||
implicit none
|
implicit none
|
||||||
integer(pInt), intent(in) :: fileUnit
|
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), allocatable, dimension(:) :: chunkPos
|
||||||
integer(pInt) chunk, Nchunks
|
integer(pInt) chunk, Nchunks
|
||||||
character(len=300) :: line, damaskOption, v
|
character(len=300) :: line, damaskOption, v
|
||||||
character(len=300) :: keyword
|
character(len=300) :: keyword
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef Spectral
|
|
||||||
mesh_periodicSurface = .true.
|
|
||||||
#else
|
|
||||||
mesh_periodicSurface = .false.
|
mesh_periodicSurface = .false.
|
||||||
#ifdef Marc4DAMASK
|
#ifdef Marc4DAMASK
|
||||||
keyword = '$damask'
|
keyword = '$damask'
|
||||||
|
@ -2886,9 +2888,9 @@ use IO, only: &
|
||||||
enddo
|
enddo
|
||||||
|
|
||||||
610 FORMAT(A300)
|
610 FORMAT(A300)
|
||||||
#endif
|
|
||||||
|
|
||||||
620 end subroutine mesh_get_damaskOptions
|
620 end subroutine mesh_get_damaskOptions
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
|
|
|
@ -15,7 +15,7 @@ module DAMASK_interface
|
||||||
private
|
private
|
||||||
#include <petsc/finclude/petscsys.h>
|
#include <petsc/finclude/petscsys.h>
|
||||||
logical, public, protected :: appendToOutFile = .false. !< Append to existing spectralOut file (in case of restart, not in case of regridding)
|
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 :: &
|
character(len=1024), public, protected :: &
|
||||||
geometryFile = '', & !< parameter given for geometry file
|
geometryFile = '', & !< parameter given for geometry file
|
||||||
loadCaseFile = '' !< parameter given for load case 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)') ' For further configuration place "numerics.config"'
|
||||||
write(6,'(a)')' and "debug.config" in that directory.'
|
write(6,'(a)')' and "debug.config" in that directory.'
|
||||||
write(6,'(/,a)')' --restart XX'
|
write(6,'(/,a)')' --restart XX'
|
||||||
write(6,'(a)') ' Reads in total increment No. XX-1 and continues to'
|
write(6,'(a)') ' Reads in increment XX and continues with calculating'
|
||||||
write(6,'(a)') ' calculate total increment No. XX.'
|
write(6,'(a)') ' increment XX+1 based on this.'
|
||||||
write(6,'(a)') ' Appends to existing results file '
|
write(6,'(a)') ' Appends to existing results file'
|
||||||
write(6,'(a)') ' "NameOfGeom_NameOfLoadFile.spectralOut".'
|
write(6,'(a)') ' "NameOfGeom_NameOfLoadFile.spectralOut".'
|
||||||
write(6,'(a)') ' Works only if the restart information for total increment'
|
write(6,'(a)') ' Works only if the restart information for increment XX'
|
||||||
write(6,'(a)') ' No. XX-1 is available in the working directory.'
|
write(6,'(a)') ' is available in the working directory.'
|
||||||
write(6,'(/,a)')' -----------------------------------------------------------------------'
|
write(6,'(/,a)')' -----------------------------------------------------------------------'
|
||||||
write(6,'(a)') ' Help:'
|
write(6,'(a)') ' Help:'
|
||||||
write(6,'(/,a)')' --help'
|
write(6,'(/,a)')' --help'
|
||||||
|
@ -204,7 +204,7 @@ subroutine DAMASK_interface_init()
|
||||||
write(6,'(a,a)') ' Host name: ', trim(hostName)
|
write(6,'(a,a)') ' Host name: ', trim(hostName)
|
||||||
write(6,'(a,a)') ' User name: ', trim(userName)
|
write(6,'(a,a)') ' User name: ', trim(userName)
|
||||||
write(6,'(a,a)') ' Command line call: ', trim(commandLine)
|
write(6,'(a,a)') ' Command line call: ', trim(commandLine)
|
||||||
if (len(trim(workingDirArg))>0) &
|
if (len(trim(workingDirArg)) > 0) &
|
||||||
write(6,'(a,a)') ' Working dir argument: ', trim(workingDirArg)
|
write(6,'(a,a)') ' Working dir argument: ', trim(workingDirArg)
|
||||||
write(6,'(a,a)') ' Geometry argument: ', trim(geometryArg)
|
write(6,'(a,a)') ' Geometry argument: ', trim(geometryArg)
|
||||||
write(6,'(a,a)') ' Loadcase argument: ', trim(loadcaseArg)
|
write(6,'(a,a)') ' Loadcase argument: ', trim(loadcaseArg)
|
||||||
|
@ -212,8 +212,8 @@ subroutine DAMASK_interface_init()
|
||||||
write(6,'(a,a)') ' Geometry file: ', trim(geometryFile)
|
write(6,'(a,a)') ' Geometry file: ', trim(geometryFile)
|
||||||
write(6,'(a,a)') ' Loadcase file: ', trim(loadCaseFile)
|
write(6,'(a,a)') ' Loadcase file: ', trim(loadCaseFile)
|
||||||
write(6,'(a,a)') ' Solver job name: ', trim(getSolverJobName())
|
write(6,'(a,a)') ' Solver job name: ', trim(getSolverJobName())
|
||||||
if (SpectralRestartInc > 1_pInt) &
|
if (SpectralRestartInc > 0_pInt) &
|
||||||
write(6,'(a,i6.6)') ' Restart at increment: ', spectralRestartInc
|
write(6,'(a,i6.6)') ' Restart from increment: ', spectralRestartInc
|
||||||
write(6,'(a,l1,/)') ' Append to result file: ', appendToOutFile
|
write(6,'(a,l1,/)') ' Append to result file: ', appendToOutFile
|
||||||
|
|
||||||
end subroutine DAMASK_interface_init
|
end subroutine DAMASK_interface_init
|
||||||
|
|
|
@ -188,10 +188,10 @@ subroutine AL_init
|
||||||
F => FandF_lambda( 0: 8,:,:,:)
|
F => FandF_lambda( 0: 8,:,:,:)
|
||||||
F_lambda => FandF_lambda( 9:17,:,:,:)
|
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
|
if (iand(debug_level(debug_spectral),debug_spectralRestart) /= 0) then
|
||||||
write(6,'(/,a,'//IO_intOut(restartInc-1_pInt)//',a)') &
|
write(6,'(/,a,'//IO_intOut(restartInc)//',a)') &
|
||||||
'reading values of increment ', restartInc-1_pInt, ' from file'
|
'reading values of increment ', restartInc, ' from file'
|
||||||
flush(6)
|
flush(6)
|
||||||
endif
|
endif
|
||||||
write(rankStr,'(a1,i0)')'_',worldrank
|
write(rankStr,'(a1,i0)')'_',worldrank
|
||||||
|
@ -207,7 +207,7 @@ subroutine AL_init
|
||||||
read (777,rec=1) F_aimDot; close (777)
|
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 = 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
|
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_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 = reshape(F_lastInc,[9,grid(1),grid(2),grid3])
|
||||||
F_lambda = F
|
F_lambda = F
|
||||||
|
@ -224,10 +224,10 @@ subroutine AL_init
|
||||||
nullify(F_lambda)
|
nullify(F_lambda)
|
||||||
call DMDAVecRestoreArrayF90(da,solution_vec,FandF_lambda,ierr); CHKERRQ(ierr) ! write data back to PETSc
|
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) &
|
if (iand(debug_level(debug_spectral),debug_spectralRestart)/= 0 .and. worldrank == 0_pInt) &
|
||||||
write(6,'(/,a,'//IO_intOut(restartInc-1_pInt)//',a)') &
|
write(6,'(/,a,'//IO_intOut(restartInc)//',a)') &
|
||||||
'reading more values of increment ', restartInc-1_pInt, ' from file'
|
'reading more values of increment ', restartInc, ' from file'
|
||||||
flush(6)
|
flush(6)
|
||||||
call IO_read_realFile(777,'C_volAvg',trim(getSolverJobName()),size(C_volAvg))
|
call IO_read_realFile(777,'C_volAvg',trim(getSolverJobName()),size(C_volAvg))
|
||||||
read (777,rec=1) C_volAvg; close (777)
|
read (777,rec=1) C_volAvg; close (777)
|
||||||
|
|
|
@ -172,10 +172,10 @@ subroutine basicPETSc_init
|
||||||
! init fields
|
! init fields
|
||||||
call DMDAVecGetArrayF90(da,solution_vec,F,ierr); CHKERRQ(ierr) ! get the data out of PETSc to work with
|
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
|
if (iand(debug_level(debug_spectral),debug_spectralRestart) /= 0) then
|
||||||
write(6,'(/,a,'//IO_intOut(restartInc-1_pInt)//',a)') &
|
write(6,'(/,a,'//IO_intOut(restartInc)//',a)') &
|
||||||
'reading values of increment ', restartInc-1_pInt, ' from file'
|
'reading values of increment ', restartInc, ' from file'
|
||||||
flush(6)
|
flush(6)
|
||||||
endif
|
endif
|
||||||
write(rankStr,'(a1,i0)')'_',worldrank
|
write(rankStr,'(a1,i0)')'_',worldrank
|
||||||
|
@ -187,7 +187,7 @@ subroutine basicPETSc_init
|
||||||
read (777,rec=1) F_aimDot; close (777)
|
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 = 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
|
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_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 = reshape(F_lastInc,[9,grid(1),grid(2),grid3])
|
||||||
endif restart
|
endif restart
|
||||||
|
@ -201,10 +201,10 @@ subroutine basicPETSc_init
|
||||||
call DMDAVecRestoreArrayF90(da,solution_vec,F,ierr); CHKERRQ(ierr) ! write data back to PETSc
|
call DMDAVecRestoreArrayF90(da,solution_vec,F,ierr); CHKERRQ(ierr) ! write data back to PETSc
|
||||||
! QUESTION: why not writing back right after reading (l.189)?
|
! 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?
|
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) &
|
if (iand(debug_level(debug_spectral),debug_spectralRestart) /= 0 .and. worldrank == 0_pInt) &
|
||||||
write(6,'(/,a,'//IO_intOut(restartInc-1_pInt)//',a)') &
|
write(6,'(/,a,'//IO_intOut(restartInc)//',a)') &
|
||||||
'reading more values of increment ', restartInc-1_pInt, ' from file'
|
'reading more values of increment ', restartInc, ' from file'
|
||||||
flush(6)
|
flush(6)
|
||||||
call IO_read_realFile(777,'C_volAvg',trim(getSolverJobName()),size(C_volAvg))
|
call IO_read_realFile(777,'C_volAvg',trim(getSolverJobName()),size(C_volAvg))
|
||||||
read (777,rec=1) C_volAvg; close (777)
|
read (777,rec=1) C_volAvg; close (777)
|
||||||
|
|
|
@ -185,10 +185,10 @@ subroutine Polarisation_init
|
||||||
call DMDAVecGetArrayF90(da,solution_vec,FandF_tau,ierr); CHKERRQ(ierr) ! places pointer on PETSc data
|
call DMDAVecGetArrayF90(da,solution_vec,FandF_tau,ierr); CHKERRQ(ierr) ! places pointer on PETSc data
|
||||||
F => FandF_tau( 0: 8,:,:,:)
|
F => FandF_tau( 0: 8,:,:,:)
|
||||||
F_tau => FandF_tau( 9:17,:,:,:)
|
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
|
if (iand(debug_level(debug_spectral),debug_spectralRestart) /= 0) then
|
||||||
write(6,'(/,a,'//IO_intOut(restartInc-1_pInt)//',a)') &
|
write(6,'(/,a,'//IO_intOut(restartInc)//',a)') &
|
||||||
'reading values of increment ', restartInc - 1_pInt, ' from file'
|
'reading values of increment ', restartInc, ' from file'
|
||||||
flush(6)
|
flush(6)
|
||||||
endif
|
endif
|
||||||
write(rankStr,'(a1,i0)')'_',worldrank
|
write(rankStr,'(a1,i0)')'_',worldrank
|
||||||
|
@ -204,7 +204,7 @@ subroutine Polarisation_init
|
||||||
read (777,rec=1) F_aimDot; close (777)
|
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 = 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
|
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_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 = reshape(F_lastInc,[9,grid(1),grid(2),grid3])
|
||||||
F_tau = 2.0_pReal*F
|
F_tau = 2.0_pReal*F
|
||||||
|
@ -221,10 +221,10 @@ subroutine Polarisation_init
|
||||||
nullify(F_tau)
|
nullify(F_tau)
|
||||||
call DMDAVecRestoreArrayF90(da,solution_vec,FandF_tau,ierr); CHKERRQ(ierr) ! write data back to PETSc
|
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) &
|
if (iand(debug_level(debug_spectral),debug_spectralRestart)/= 0 .and. worldrank == 0_pInt) &
|
||||||
write(6,'(/,a,'//IO_intOut(restartInc-1_pInt)//',a)') &
|
write(6,'(/,a,'//IO_intOut(restartInc)//',a)') &
|
||||||
'reading more values of increment ', restartInc-1_pInt, ' from file'
|
'reading more values of increment ', restartInc, ' from file'
|
||||||
flush(6)
|
flush(6)
|
||||||
call IO_read_realFile(777,'C_volAvg',trim(getSolverJobName()),size(C_volAvg))
|
call IO_read_realFile(777,'C_volAvg',trim(getSolverJobName()),size(C_volAvg))
|
||||||
read (777,rec=1) C_volAvg; close (777)
|
read (777,rec=1) C_volAvg; close (777)
|
||||||
|
|
|
@ -153,9 +153,9 @@ contains
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
!> @brief allocates all neccessary fields, sets debug flags, create plans for FFTW
|
!> @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.
|
!> 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.
|
!> level chosen.
|
||||||
!> Initializes FFTW.
|
!> 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.
|
!> @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.
|
!> 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.
|
!> Also writes out the current reference stiffness for restart.
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
subroutine utilities_updateGamma(C,saveReference)
|
subroutine utilities_updateGamma(C,saveReference)
|
||||||
|
|
Loading…
Reference in New Issue