restarting now works with Abaqus (standard, cannot test explicit due to lack of license)

you have to specify the job you are restarting from in the job description (cae), if you prepare your input file by hand this is the first line after *Heading
example: if the first job was using Oldjob.inp the first entry in the job description needs to be Oldjob (without the .inp)
as for Marc restart works only from last converged increment, i.e. ther restart writing should be specified like this:
*retsart, write, frequency=1, overlay
Overlay is not essential but saves a lot of disk space and as stated before you can only restart from the last converged increment anyway
This commit is contained in:
Franz Roters 2011-07-18 09:15:20 +00:00
parent 8c65cb9ea6
commit e92e5cae53
2 changed files with 21 additions and 7 deletions

View File

@ -80,9 +80,14 @@
restartRead = iand(IO_intValue(line,positions,1),2_pInt) > 0_pInt restartRead = iand(IO_intValue(line,positions,1),2_pInt) > 0_pInt
case ('*restart') case ('*restart')
do i=2,positions(1) do i=2,positions(1)
restartWrite = IO_lc(IO_StringValue(line,positions,i)) == 'write' restartWrite = (IO_lc(IO_StringValue(line,positions,i)) == 'write') .or. restartWrite
! restartRead = IO_lc(IO_StringValue(line,positions,i)) == 'read' restartRead = (IO_lc(IO_StringValue(line,positions,i)) == 'read') .or. restartRead
enddo enddo
if(restartWrite) then
do i=2,positions(1)
restartWrite = (IO_lc(IO_StringValue(line,positions,i)) /= 'frequency=0') .and. restartWrite
enddo
endif
end select end select
enddo enddo
else else
@ -103,13 +108,16 @@
IO_lc(IO_stringValue(line,positions,4)) == 'id' ) & IO_lc(IO_stringValue(line,positions,4)) == 'id' ) &
FEmodelGeometry = IO_StringValue(line,positions,6) FEmodelGeometry = IO_StringValue(line,positions,6)
enddo enddo
elseif (FEsolver == 'Abaqus' .and. IO_open_jobFile(fileunit, 'com')) then elseif (FEsolver == 'Abaqus' .and. IO_open_inputFile(fileunit,FEmodelGeometry)) then
rewind(fileunit) rewind(fileunit)
do do
read (fileunit,'(a1024)',END=200) line read (fileunit,'(a1024)',END=200) line
positions = IO_stringPos(line,maxNchunks) positions = IO_stringPos(line,maxNchunks)
! if ( IO_lc(IO_stringValue(line,positions,?)) == 'oldjob?') & if ( IO_lc(IO_stringValue(line,positions,1))=='*heading') then
! FEmodelGeometry = IO_StringValue(line,positions,?) read (fileunit,'(a1024)',END=200) line
positions = IO_stringPos(line,maxNchunks)
FEmodelGeometry = IO_StringValue(line,positions,1)
endif
enddo enddo
else else
call IO_error(106) ! cannot open file for old job info call IO_error(106) ! cannot open file for old job info

View File

@ -76,12 +76,18 @@ recursive function IO_abaqus_assembleInputFile(unit1,unit2) result(createSuccess
character(len=300) line,fname character(len=300) line,fname
integer(pInt), intent(in) :: unit1, unit2 integer(pInt), intent(in) :: unit1, unit2
logical createSuccess,fexist logical createSuccess,fexist
integer(pInt), parameter :: maxNchunks = 6
integer(pInt), dimension(1+2*maxNchunks) :: positions
do do
read(unit2,'(A300)',END=220) line read(unit2,'(A300)',END=220) line
line = IO_lc(trim(line)) ! line = IO_lc(trim(line))
! do not change the whole line to lower case, file names in Linux are case sensitive!
positions = IO_stringPos(line,maxNchunks)
! call IO_lcInPlace(line) ! call IO_lcInPlace(line)
if (line(1:8)=='*include') then if (IO_lc(IO_StringValue(line,positions,1))=='*include') then
fname = trim(getSolverWorkingDirectoryName())//trim(line(9+scan(line(9:),'='):)) fname = trim(getSolverWorkingDirectoryName())//trim(line(9+scan(line(9:),'='):))
inquire(file=fname, exist=fexist) inquire(file=fname, exist=fexist)
if (.not.(fexist)) then if (.not.(fexist)) then