changed comments in prec and IO to be read by doxygen, fine tuned output of doxygen and added precompilation for documentation
This commit is contained in:
parent
8ed4710024
commit
fe4d4d9525
240
code/IO.f90
240
code/IO.f90
|
@ -16,11 +16,16 @@
|
||||||
! You should have received a copy of the GNU General Public License
|
! You should have received a copy of the GNU General Public License
|
||||||
! along with DAMASK. If not, see <http://www.gnu.org/licenses/>.
|
! along with DAMASK. If not, see <http://www.gnu.org/licenses/>.
|
||||||
!
|
!
|
||||||
!##############################################################
|
!--------------------------------------------------------------------------------------------------
|
||||||
!* $Id$
|
! $Id$
|
||||||
!##############################################################
|
!--------------------------------------------------------------------------------------------------
|
||||||
|
!> @author Franz Roters, Max-Planck-Institut für Eisenforschung GmbH
|
||||||
|
!> @author Philip Eisenlohr, Max-Planck-Institut für Eisenforschung GmbH
|
||||||
|
!> @author Christoph Kords, Max-Planck-Institut für Eisenforschung GmbH
|
||||||
|
!> @author Martin Diehl, Max-Planck-Institut für Eisenforschung GmbH
|
||||||
|
!> @brief input/output functions, partly depending on chosen solver
|
||||||
|
!--------------------------------------------------------------------------------------------------
|
||||||
module IO
|
module IO
|
||||||
!##############################################################
|
|
||||||
use prec, only: pInt, pReal
|
use prec, only: pInt, pReal
|
||||||
|
|
||||||
implicit none
|
implicit none
|
||||||
|
@ -60,6 +65,7 @@ module IO
|
||||||
public :: IO_open_inputFile, &
|
public :: IO_open_inputFile, &
|
||||||
IO_open_logFile
|
IO_open_logFile
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef Abaqus
|
#ifdef Abaqus
|
||||||
public :: IO_abaqus_hasNoPart
|
public :: IO_abaqus_hasNoPart
|
||||||
#endif
|
#endif
|
||||||
|
@ -67,6 +73,7 @@ module IO
|
||||||
private :: IO_fixedFloatValue, &
|
private :: IO_fixedFloatValue, &
|
||||||
IO_lcInplace ,&
|
IO_lcInplace ,&
|
||||||
hybridIA_reps
|
hybridIA_reps
|
||||||
|
|
||||||
#ifdef Abaqus
|
#ifdef Abaqus
|
||||||
private :: abaqus_assembleInputFile
|
private :: abaqus_assembleInputFile
|
||||||
#endif
|
#endif
|
||||||
|
@ -192,13 +199,11 @@ subroutine IO_open_jobFile(myUnit,newExt)
|
||||||
|
|
||||||
end subroutine IO_open_jobFile
|
end subroutine IO_open_jobFile
|
||||||
|
|
||||||
|
|
||||||
#ifndef Spectral
|
#ifndef Spectral
|
||||||
!********************************************************************
|
!--------------------------------------------------------------------------------------------------
|
||||||
! open FEM inputfile to given myUnit
|
!> @brief open FEM input file to given unit
|
||||||
! AP: 12.07.10
|
!--------------------------------------------------------------------------------------------------
|
||||||
! : changed the function to open *.inp_assembly, which is basically
|
|
||||||
! the input file without comment lines and possibly assembled includes
|
|
||||||
!********************************************************************
|
|
||||||
subroutine IO_open_inputFile(myUnit,model)
|
subroutine IO_open_inputFile(myUnit,model)
|
||||||
|
|
||||||
use DAMASK_interface, only: &
|
use DAMASK_interface, only: &
|
||||||
|
@ -233,9 +238,9 @@ subroutine IO_open_inputFile(myUnit,model)
|
||||||
end subroutine IO_open_inputFile
|
end subroutine IO_open_inputFile
|
||||||
|
|
||||||
|
|
||||||
!********************************************************************
|
!--------------------------------------------------------------------------------------------------
|
||||||
! open FEM logfile to given myUnit
|
!> @brief open FEM log file to given Unit
|
||||||
!********************************************************************
|
!--------------------------------------------------------------------------------------------------
|
||||||
subroutine IO_open_logFile(myUnit)
|
subroutine IO_open_logFile(myUnit)
|
||||||
|
|
||||||
use DAMASK_interface, only: &
|
use DAMASK_interface, only: &
|
||||||
|
@ -256,10 +261,10 @@ subroutine IO_open_logFile(myUnit)
|
||||||
end subroutine IO_open_logFile
|
end subroutine IO_open_logFile
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
!********************************************************************
|
|
||||||
! open (write) file related to current job
|
!--------------------------------------------------------------------------------------------------
|
||||||
! but with different extension to given myUnit
|
!> @brief open (write) file related to current job with given extension to given unit
|
||||||
!********************************************************************
|
!--------------------------------------------------------------------------------------------------
|
||||||
subroutine IO_write_jobFile(myUnit,newExt)
|
subroutine IO_write_jobFile(myUnit,newExt)
|
||||||
|
|
||||||
use DAMASK_interface, only: getSolverWorkingDirectoryName,&
|
use DAMASK_interface, only: getSolverWorkingDirectoryName,&
|
||||||
|
@ -279,10 +284,9 @@ subroutine IO_write_jobFile(myUnit,newExt)
|
||||||
end subroutine IO_write_jobFile
|
end subroutine IO_write_jobFile
|
||||||
|
|
||||||
|
|
||||||
!********************************************************************
|
!--------------------------------------------------------------------------------------------------
|
||||||
! open (write) binary file related to current job
|
!> @brief open (write) binary file related to current job with given extension to given unit
|
||||||
! but with different extension to given myUnit
|
!--------------------------------------------------------------------------------------------------
|
||||||
!********************************************************************
|
|
||||||
subroutine IO_write_jobBinaryFile(myUnit,newExt,recMultiplier)
|
subroutine IO_write_jobBinaryFile(myUnit,newExt,recMultiplier)
|
||||||
|
|
||||||
use DAMASK_interface, only: getSolverWorkingDirectoryName, &
|
use DAMASK_interface, only: getSolverWorkingDirectoryName, &
|
||||||
|
@ -310,10 +314,9 @@ subroutine IO_write_jobBinaryFile(myUnit,newExt,recMultiplier)
|
||||||
end subroutine IO_write_jobBinaryFile
|
end subroutine IO_write_jobBinaryFile
|
||||||
|
|
||||||
|
|
||||||
!********************************************************************
|
!--------------------------------------------------------------------------------------------------
|
||||||
! open (read) binary file related to restored job
|
!> @brief open (read) binary file related to restored job with given extension to given unit
|
||||||
! and with different extension to given myUnit
|
!--------------------------------------------------------------------------------------------------
|
||||||
!********************************************************************
|
|
||||||
subroutine IO_read_jobBinaryFile(myUnit,newExt,jobName,recMultiplier)
|
subroutine IO_read_jobBinaryFile(myUnit,newExt,jobName,recMultiplier)
|
||||||
|
|
||||||
use DAMASK_interface, only: getSolverWorkingDirectoryName
|
use DAMASK_interface, only: getSolverWorkingDirectoryName
|
||||||
|
@ -338,10 +341,11 @@ subroutine IO_read_jobBinaryFile(myUnit,newExt,jobName,recMultiplier)
|
||||||
|
|
||||||
end subroutine IO_read_jobBinaryFile
|
end subroutine IO_read_jobBinaryFile
|
||||||
|
|
||||||
|
|
||||||
#ifdef Abaqus
|
#ifdef Abaqus
|
||||||
!***********************************************************
|
!--------------------------------------------------------------------------------------------------
|
||||||
! check if the input file for Abaqus contains part info
|
!> @brief check if the input file for Abaqus contains part info
|
||||||
!***********************************************************
|
!--------------------------------------------------------------------------------------------------
|
||||||
logical function IO_abaqus_hasNoPart(myUnit)
|
logical function IO_abaqus_hasNoPart(myUnit)
|
||||||
|
|
||||||
implicit none
|
implicit none
|
||||||
|
@ -367,9 +371,9 @@ logical function IO_abaqus_hasNoPart(myUnit)
|
||||||
620 end function IO_abaqus_hasNoPart
|
620 end function IO_abaqus_hasNoPart
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
!********************************************************************
|
!--------------------------------------------------------------------------------------------------
|
||||||
! hybrid IA sampling of ODFfile
|
!> @brief hybrid IA sampling of ODFfile
|
||||||
!********************************************************************
|
!--------------------------------------------------------------------------------------------------
|
||||||
function IO_hybridIA(Nast,ODFfileName)
|
function IO_hybridIA(Nast,ODFfileName)
|
||||||
|
|
||||||
implicit none
|
implicit none
|
||||||
|
@ -510,9 +514,9 @@ function IO_hybridIA(Nast,ODFfileName)
|
||||||
end function IO_hybridIA
|
end function IO_hybridIA
|
||||||
|
|
||||||
|
|
||||||
!********************************************************************
|
!--------------------------------------------------------------------------------------------------
|
||||||
! identifies lines without content
|
!> @brief identifies lines without content
|
||||||
!********************************************************************
|
!--------------------------------------------------------------------------------------------------
|
||||||
logical pure function IO_isBlank(line)
|
logical pure function IO_isBlank(line)
|
||||||
|
|
||||||
implicit none
|
implicit none
|
||||||
|
@ -530,9 +534,9 @@ logical pure function IO_isBlank(line)
|
||||||
end function IO_isBlank
|
end function IO_isBlank
|
||||||
|
|
||||||
|
|
||||||
!********************************************************************
|
!--------------------------------------------------------------------------------------------------
|
||||||
! get tagged content of line
|
!> @brief get tagged content of line
|
||||||
!********************************************************************
|
!--------------------------------------------------------------------------------------------------
|
||||||
pure function IO_getTag(line,openChar,closeChar)
|
pure function IO_getTag(line,openChar,closeChar)
|
||||||
|
|
||||||
implicit none
|
implicit none
|
||||||
|
@ -555,9 +559,10 @@ pure function IO_getTag(line,openChar,closeChar)
|
||||||
|
|
||||||
end function IO_getTag
|
end function IO_getTag
|
||||||
|
|
||||||
!*********************************************************************
|
|
||||||
!
|
!--------------------------------------------------------------------------------------------------
|
||||||
!*********************************************************************
|
!> @brief count sections in given part
|
||||||
|
!--------------------------------------------------------------------------------------------------
|
||||||
integer(pInt) function IO_countSections(myFile,part)
|
integer(pInt) function IO_countSections(myFile,part)
|
||||||
|
|
||||||
implicit none
|
implicit none
|
||||||
|
@ -585,9 +590,9 @@ integer(pInt) function IO_countSections(myFile,part)
|
||||||
100 end function IO_countSections
|
100 end function IO_countSections
|
||||||
|
|
||||||
|
|
||||||
!*********************************************************************
|
!--------------------------------------------------------------------------------------------------
|
||||||
! return array of myTag counts within <part> for at most N[sections]
|
!> @brief return array of myTag counts within <part> for at most N[sections]
|
||||||
!*********************************************************************
|
!--------------------------------------------------------------------------------------------------
|
||||||
function IO_countTagInPart(myFile,part,myTag,Nsections)
|
function IO_countTagInPart(myFile,part,myTag,Nsections)
|
||||||
|
|
||||||
implicit none
|
implicit none
|
||||||
|
@ -633,9 +638,9 @@ function IO_countTagInPart(myFile,part,myTag,Nsections)
|
||||||
end function IO_countTagInPart
|
end function IO_countTagInPart
|
||||||
|
|
||||||
|
|
||||||
!*********************************************************************
|
!--------------------------------------------------------------------------------------------------
|
||||||
! return array of myTag presence within <part> for at most N[sections]
|
!> @brief return array of myTag presence within <part> for at most N[sections]
|
||||||
!*********************************************************************
|
!--------------------------------------------------------------------------------------------------
|
||||||
function IO_spotTagInPart(myFile,part,myTag,Nsections)
|
function IO_spotTagInPart(myFile,part,myTag,Nsections)
|
||||||
|
|
||||||
implicit none
|
implicit none
|
||||||
|
@ -678,10 +683,9 @@ function IO_spotTagInPart(myFile,part,myTag,Nsections)
|
||||||
|
|
||||||
100 end function IO_spotTagInPart
|
100 end function IO_spotTagInPart
|
||||||
|
|
||||||
|
!--------------------------------------------------------------------------------------------------
|
||||||
!*********************************************************************
|
!> @brief return logical whether myTag is present within <part> before any [sections]
|
||||||
! return logical whether myTag is present within <part> before any [sections]
|
!--------------------------------------------------------------------------------------------------
|
||||||
!*********************************************************************
|
|
||||||
logical function IO_globalTagInPart(myFile,part,myTag)
|
logical function IO_globalTagInPart(myFile,part,myTag)
|
||||||
|
|
||||||
implicit none
|
implicit none
|
||||||
|
@ -723,11 +727,10 @@ logical function IO_globalTagInPart(myFile,part,myTag)
|
||||||
100 end function IO_globalTagInPart
|
100 end function IO_globalTagInPart
|
||||||
|
|
||||||
|
|
||||||
!********************************************************************
|
!--------------------------------------------------------------------------------------------------
|
||||||
! locate at most N space-separated parts in line
|
!> @brief locate at most N space-separated parts in line return array containing number of parts
|
||||||
! return array containing number of parts in line and
|
!> in line and the left/right positions of at most N to be used by IO_xxxVal
|
||||||
! the left/right positions of at most N to be used by IO_xxxVal
|
!--------------------------------------------------------------------------------------------------
|
||||||
!********************************************************************
|
|
||||||
pure function IO_stringPos(line,N)
|
pure function IO_stringPos(line,N)
|
||||||
|
|
||||||
implicit none
|
implicit none
|
||||||
|
@ -761,9 +764,9 @@ pure function IO_stringPos(line,N)
|
||||||
end function IO_stringPos
|
end function IO_stringPos
|
||||||
|
|
||||||
|
|
||||||
!********************************************************************
|
!--------------------------------------------------------------------------------------------------
|
||||||
! read string value at myPos from line
|
!> @brief read string value at myPos from line
|
||||||
!********************************************************************
|
!--------------------------------------------------------------------------------------------------
|
||||||
pure function IO_stringValue(line,positions,myPos)
|
pure function IO_stringValue(line,positions,myPos)
|
||||||
|
|
||||||
implicit none
|
implicit none
|
||||||
|
@ -784,9 +787,9 @@ end function IO_stringPos
|
||||||
end function IO_stringValue
|
end function IO_stringValue
|
||||||
|
|
||||||
|
|
||||||
!********************************************************************
|
!--------------------------------------------------------------------------------------------------
|
||||||
! read string value at myPos from fixed format line
|
!> @brief read string value at myPos from fixed format line
|
||||||
!********************************************************************
|
!--------------------------------------------------------------------------------------------------
|
||||||
pure function IO_fixedStringValue (line,ends,myPos)
|
pure function IO_fixedStringValue (line,ends,myPos)
|
||||||
|
|
||||||
implicit none
|
implicit none
|
||||||
|
@ -803,9 +806,9 @@ pure function IO_fixedStringValue (line,ends,myPos)
|
||||||
end function IO_fixedStringValue
|
end function IO_fixedStringValue
|
||||||
|
|
||||||
|
|
||||||
!********************************************************************
|
!--------------------------------------------------------------------------------------------------
|
||||||
! read float value at myPos from line
|
!> @brief read float value at myPos from line
|
||||||
!********************************************************************
|
!--------------------------------------------------------------------------------------------------
|
||||||
real(pReal) pure function IO_floatValue (line,positions,myPos)
|
real(pReal) pure function IO_floatValue (line,positions,myPos)
|
||||||
|
|
||||||
implicit none
|
implicit none
|
||||||
|
@ -824,9 +827,9 @@ real(pReal) pure function IO_floatValue (line,positions,myPos)
|
||||||
end function IO_floatValue
|
end function IO_floatValue
|
||||||
|
|
||||||
|
|
||||||
!********************************************************************
|
!--------------------------------------------------------------------------------------------------
|
||||||
! read float value at myPos from fixed format line
|
!> @brief read float value at myPos from fixed format line
|
||||||
!********************************************************************
|
!--------------------------------------------------------------------------------------------------
|
||||||
real(pReal) pure function IO_fixedFloatValue (line,ends,myPos)
|
real(pReal) pure function IO_fixedFloatValue (line,ends,myPos)
|
||||||
|
|
||||||
implicit none
|
implicit none
|
||||||
|
@ -841,9 +844,9 @@ real(pReal) pure function IO_fixedFloatValue (line,ends,myPos)
|
||||||
end function IO_fixedFloatValue
|
end function IO_fixedFloatValue
|
||||||
|
|
||||||
|
|
||||||
!********************************************************************
|
!--------------------------------------------------------------------------------------------------
|
||||||
! read float x.y+z value at myPos from format line line
|
!> @brief read float x.y+z value at myPos from format line line
|
||||||
!********************************************************************
|
!--------------------------------------------------------------------------------------------------
|
||||||
real(pReal) pure function IO_fixedNoEFloatValue (line,ends,myPos)
|
real(pReal) pure function IO_fixedNoEFloatValue (line,ends,myPos)
|
||||||
|
|
||||||
implicit none
|
implicit none
|
||||||
|
@ -870,9 +873,9 @@ real(pReal) pure function IO_fixedNoEFloatValue (line,ends,myPos)
|
||||||
end function IO_fixedNoEFloatValue
|
end function IO_fixedNoEFloatValue
|
||||||
|
|
||||||
|
|
||||||
!********************************************************************
|
!--------------------------------------------------------------------------------------------------
|
||||||
! read int value at myPos from line
|
!> @brief read int value at myPos from line
|
||||||
!********************************************************************
|
!--------------------------------------------------------------------------------------------------
|
||||||
integer(pInt) pure function IO_intValue(line,positions,myPos)
|
integer(pInt) pure function IO_intValue(line,positions,myPos)
|
||||||
|
|
||||||
implicit none
|
implicit none
|
||||||
|
@ -891,9 +894,9 @@ integer(pInt) pure function IO_intValue(line,positions,myPos)
|
||||||
end function IO_intValue
|
end function IO_intValue
|
||||||
|
|
||||||
|
|
||||||
!********************************************************************
|
!--------------------------------------------------------------------------------------------------
|
||||||
! read int value at myPos from fixed format line
|
!> @brief read int value at myPos from fixed format line
|
||||||
!********************************************************************
|
!--------------------------------------------------------------------------------------------------
|
||||||
integer(pInt) pure function IO_fixedIntValue(line,ends,myPos)
|
integer(pInt) pure function IO_fixedIntValue(line,ends,myPos)
|
||||||
|
|
||||||
implicit none
|
implicit none
|
||||||
|
@ -908,9 +911,9 @@ integer(pInt) pure function IO_fixedIntValue(line,ends,myPos)
|
||||||
end function IO_fixedIntValue
|
end function IO_fixedIntValue
|
||||||
|
|
||||||
|
|
||||||
!********************************************************************
|
!--------------------------------------------------------------------------------------------------
|
||||||
! change character in line to lower case
|
!> @brief change character in line to lower case
|
||||||
!********************************************************************
|
!--------------------------------------------------------------------------------------------------
|
||||||
pure function IO_lc(line)
|
pure function IO_lc(line)
|
||||||
|
|
||||||
implicit none
|
implicit none
|
||||||
|
@ -930,9 +933,9 @@ pure function IO_lc(line)
|
||||||
end function IO_lc
|
end function IO_lc
|
||||||
|
|
||||||
|
|
||||||
!********************************************************************
|
!--------------------------------------------------------------------------------------------------
|
||||||
! in place change of character in line to lower case
|
!> @brief in place change of character in line to lower case
|
||||||
!********************************************************************
|
!--------------------------------------------------------------------------------------------------
|
||||||
subroutine IO_lcInplace(line)
|
subroutine IO_lcInplace(line)
|
||||||
|
|
||||||
implicit none
|
implicit none
|
||||||
|
@ -955,9 +958,9 @@ subroutine IO_lcInplace(line)
|
||||||
end subroutine IO_lcInplace
|
end subroutine IO_lcInplace
|
||||||
|
|
||||||
|
|
||||||
!********************************************************************
|
!--------------------------------------------------------------------------------------------------
|
||||||
! read on in file to skip (at least) N chunks (may be over multiple lines)
|
!> @brief read on in file to skip (at least) N chunks (may be over multiple lines)
|
||||||
!********************************************************************
|
!--------------------------------------------------------------------------------------------------
|
||||||
subroutine IO_skipChunks(myUnit,N)
|
subroutine IO_skipChunks(myUnit,N)
|
||||||
|
|
||||||
implicit none
|
implicit none
|
||||||
|
@ -979,9 +982,9 @@ subroutine IO_skipChunks(myUnit,N)
|
||||||
100 end subroutine IO_skipChunks
|
100 end subroutine IO_skipChunks
|
||||||
|
|
||||||
|
|
||||||
!********************************************************************
|
!--------------------------------------------------------------------------------------------------
|
||||||
! extract value from key=value pair and check whether key matches
|
!> @brief extract value from key=value pair and check whether key matches
|
||||||
!********************************************************************
|
!--------------------------------------------------------------------------------------------------
|
||||||
character(len=300) pure function IO_extractValue(line,key)
|
character(len=300) pure function IO_extractValue(line,key)
|
||||||
|
|
||||||
implicit none
|
implicit none
|
||||||
|
@ -1001,12 +1004,9 @@ character(len=300) pure function IO_extractValue(line,key)
|
||||||
end function IO_extractValue
|
end function IO_extractValue
|
||||||
|
|
||||||
|
|
||||||
!********************************************************************
|
!--------------------------------------------------------------------------------------------------
|
||||||
! count lines containig data up to next *keyword
|
!> @brief count lines containig data up to next *keyword
|
||||||
! AP: changed the function to neglect comment lines between keyword definitions.
|
!--------------------------------------------------------------------------------------------------
|
||||||
! : is not changed back to the original version since *.inp_assembly does not
|
|
||||||
! : contain any comment lines (12.07.2010)
|
|
||||||
!********************************************************************
|
|
||||||
integer(pInt) function IO_countDataLines(myUnit)
|
integer(pInt) function IO_countDataLines(myUnit)
|
||||||
|
|
||||||
implicit none
|
implicit none
|
||||||
|
@ -1035,12 +1035,12 @@ integer(pInt) function IO_countDataLines(myUnit)
|
||||||
end function IO_countDataLines
|
end function IO_countDataLines
|
||||||
|
|
||||||
|
|
||||||
!********************************************************************
|
!--------------------------------------------------------------------------------------------------
|
||||||
! count items in consecutive lines
|
!> @brief count items in consecutive lines depending on lines
|
||||||
! Marc: ints concatenated by "c" as last char or range of values a "to" b
|
!> @details Marc: ints concatenated by "c" as last char or range of values a "to" b
|
||||||
! Abaqus: triplet of start,stop,inc
|
!> Abaqus: triplet of start,stop,inc
|
||||||
! Spectral: ints concatenated range of a "to" b, multiple entries with a "copies of" b
|
!> Spectral: ints concatenated range of a "to" b, multiple entries with a "copies of" b
|
||||||
!********************************************************************
|
!--------------------------------------------------------------------------------------------------
|
||||||
integer(pInt) function IO_countContinuousIntValues(myUnit)
|
integer(pInt) function IO_countContinuousIntValues(myUnit)
|
||||||
|
|
||||||
implicit none
|
implicit none
|
||||||
|
@ -1092,13 +1092,13 @@ integer(pInt) function IO_countContinuousIntValues(myUnit)
|
||||||
100 end function IO_countContinuousIntValues
|
100 end function IO_countContinuousIntValues
|
||||||
|
|
||||||
|
|
||||||
!********************************************************************
|
!--------------------------------------------------------------------------------------------------
|
||||||
! return integer list corrsponding to items in consecutive lines.
|
!> @brief return integer list corrsponding to items in consecutive lines.
|
||||||
! First integer in array is counter
|
! First integer in array is counter
|
||||||
! Marc: ints concatenated by "c" as last char, range of a "to" b, or named set
|
!> @details Marc: ints concatenated by "c" as last char, range of a "to" b, or named set
|
||||||
! Abaqus: triplet of start,stop,inc or named set
|
! Abaqus: triplet of start,stop,inc or named set
|
||||||
! Spectral: ints concatenated range of a "to" b, multiple entries with a "copies of" b
|
! Spectral: ints concatenated range of a "to" b, multiple entries with a "copies of" b
|
||||||
!********************************************************************
|
!--------------------------------------------------------------------------------------------------
|
||||||
function IO_continuousIntValues(myUnit,maxN,lookupName,lookupMap,lookupMaxN)
|
function IO_continuousIntValues(myUnit,maxN,lookupName,lookupMap,lookupMaxN)
|
||||||
|
|
||||||
implicit none
|
implicit none
|
||||||
|
@ -1163,7 +1163,7 @@ function IO_continuousIntValues(myUnit,maxN,lookupName,lookupMap,lookupMaxN)
|
||||||
backspace(myUnit)
|
backspace(myUnit)
|
||||||
enddo
|
enddo
|
||||||
|
|
||||||
!heck if the element values in the elset are auto generated
|
!check if the element values in the elset are auto generated
|
||||||
backspace(myUnit)
|
backspace(myUnit)
|
||||||
read(myUnit,'(A65536)',end=100) line
|
read(myUnit,'(A65536)',end=100) line
|
||||||
myPos = IO_stringPos(line,maxNchunks)
|
myPos = IO_stringPos(line,maxNchunks)
|
||||||
|
@ -1203,11 +1203,10 @@ function IO_continuousIntValues(myUnit,maxN,lookupName,lookupMap,lookupMaxN)
|
||||||
100 end function IO_continuousIntValues
|
100 end function IO_continuousIntValues
|
||||||
|
|
||||||
|
|
||||||
!********************************************************************
|
!--------------------------------------------------------------------------------------------------
|
||||||
! write error statements to standard out
|
!> @brief write error statements to standard out and terminate the Marc/spectral run with exit #9xxx
|
||||||
! and terminate the Marc run with exit #9xxx
|
!> in ABAQUS either time step is reduced or execution terminated
|
||||||
! in ABAQUS either time step is reduced or execution terminated
|
!--------------------------------------------------------------------------------------------------
|
||||||
!********************************************************************
|
|
||||||
subroutine IO_error(error_ID,e,i,g,ext_msg)
|
subroutine IO_error(error_ID,e,i,g,ext_msg)
|
||||||
implicit none
|
implicit none
|
||||||
integer(pInt), intent(in) :: error_ID
|
integer(pInt), intent(in) :: error_ID
|
||||||
|
@ -1419,9 +1418,9 @@ subroutine IO_error(error_ID,e,i,g,ext_msg)
|
||||||
end subroutine IO_error
|
end subroutine IO_error
|
||||||
|
|
||||||
|
|
||||||
!********************************************************************
|
!--------------------------------------------------------------------------------------------------
|
||||||
! write warning statements to standard out
|
!> @brief write warning statements to standard out
|
||||||
!********************************************************************
|
!--------------------------------------------------------------------------------------------------
|
||||||
subroutine IO_warning(warning_ID,e,i,g,ext_msg)
|
subroutine IO_warning(warning_ID,e,i,g,ext_msg)
|
||||||
|
|
||||||
implicit none
|
implicit none
|
||||||
|
@ -1483,11 +1482,10 @@ end subroutine IO_warning
|
||||||
! INTERNAL (HELPER) FUNCTIONS:
|
! INTERNAL (HELPER) FUNCTIONS:
|
||||||
|
|
||||||
#ifdef Abaqus
|
#ifdef Abaqus
|
||||||
!********************************************************************
|
!--------------------------------------------------------------------------------------------------
|
||||||
! AP: 12.07.10
|
!> @brief create a new input file for abaqus simulations by removing all comment lines and
|
||||||
! create a new input file for abaqus simulations
|
!> including "include"s
|
||||||
! by removing all comment lines and including "include"s
|
!--------------------------------------------------------------------------------------------------
|
||||||
!********************************************************************
|
|
||||||
recursive function abaqus_assembleInputFile(unit1,unit2) result(createSuccess)
|
recursive function abaqus_assembleInputFile(unit1,unit2) result(createSuccess)
|
||||||
|
|
||||||
use DAMASK_interface, only: getSolverWorkingDirectoryName
|
use DAMASK_interface, only: getSolverWorkingDirectoryName
|
||||||
|
@ -1541,9 +1539,9 @@ recursive function abaqus_assembleInputFile(unit1,unit2) result(createSuccess)
|
||||||
end function abaqus_assembleInputFile
|
end function abaqus_assembleInputFile
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
!********************************************************************
|
!--------------------------------------------------------------------------------------------------
|
||||||
! hybrid IA repetition counter
|
!> @brief hybrid IA repetition counter
|
||||||
!********************************************************************
|
!--------------------------------------------------------------------------------------------------
|
||||||
integer(pInt) function hybridIA_reps(dV_V,steps,C)
|
integer(pInt) function hybridIA_reps(dV_V,steps,C)
|
||||||
|
|
||||||
implicit none
|
implicit none
|
||||||
|
|
|
@ -16,24 +16,31 @@
|
||||||
! You should have received a copy of the GNU General Public License
|
! You should have received a copy of the GNU General Public License
|
||||||
! along with DAMASK. If not, see <http://www.gnu.org/licenses/>.
|
! along with DAMASK. If not, see <http://www.gnu.org/licenses/>.
|
||||||
!
|
!
|
||||||
!##############################################################
|
!--------------------------------------------------------------------------------------------------
|
||||||
!* $Id$
|
! $Id$
|
||||||
!##############################################################
|
!--------------------------------------------------------------------------------------------------
|
||||||
|
!> @author Franz Roters, Max-Planck-Institut für Eisenforschung GmbH
|
||||||
|
!> @author Philip Eisenlohr, Max-Planck-Institut für Eisenforschung GmbH
|
||||||
|
!> @author Christoph Kords, Max-Planck-Institut für Eisenforschung GmbH
|
||||||
|
!> @author Martin Diehl, Max-Planck-Institut für Eisenforschung GmbH
|
||||||
|
!> @brief setting precision for real and int type, using double precision for real
|
||||||
|
!--------------------------------------------------------------------------------------------------
|
||||||
#ifdef __INTEL_COMPILER
|
#ifdef __INTEL_COMPILER
|
||||||
#if __INTEL_COMPILER<1200
|
#if __INTEL_COMPILER<1200
|
||||||
#define LEGACY_COMPILER
|
#define LEGACY_COMPILER
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
!--------------------------------------------------------------------------------------------------
|
||||||
module prec
|
module prec
|
||||||
!##############################################################
|
|
||||||
|
|
||||||
implicit none
|
implicit none
|
||||||
private
|
private
|
||||||
! *** Precision of real and integer variables ***
|
|
||||||
integer, parameter, public :: pReal = selected_real_kind(15,300) ! 15 significant digits, up to 1e+-300
|
integer, parameter, public :: pReal = selected_real_kind(15,300) !< floating point number with 15 significant digits, up to 1e+-300 (double precision)
|
||||||
integer, parameter, public :: pInt = selected_int_kind(9) ! up to +- 1e9
|
integer, parameter, public :: pInt = selected_int_kind(9) !< integer representation with at least up to +- 1e9 (32 bit)
|
||||||
integer, parameter, public :: pLongInt = selected_int_kind(12) ! should be 64bit
|
integer, parameter, public :: pLongInt = selected_int_kind(12) !< integer representation with at least up to +- 1e12 (64 bit)
|
||||||
real(pReal), parameter, public :: tol_math_check = 1.0e-8_pReal
|
real(pReal), parameter, public :: tol_math_check = 1.0e-8_pReal
|
||||||
real(pReal), parameter, public :: tol_gravityNodePos = 1.0e-100_pReal
|
real(pReal), parameter, public :: tol_gravityNodePos = 1.0e-100_pReal
|
||||||
|
|
||||||
|
@ -41,9 +48,9 @@ module prec
|
||||||
! from http://www.hpc.unimelb.edu.au/doc/f90lrm/dfum_035.html
|
! from http://www.hpc.unimelb.edu.au/doc/f90lrm/dfum_035.html
|
||||||
! copy can be found in documentation/Code/Fortran
|
! copy can be found in documentation/Code/Fortran
|
||||||
#ifdef LEGACY_COMPILER
|
#ifdef LEGACY_COMPILER
|
||||||
real(pReal), parameter, public :: DAMASK_NaN = Z'7FF8000000000000' ! quiet NaN
|
real(pReal), parameter, public :: DAMASK_NaN = Z'7FF8000000000000' !< when using old compiler without standard check
|
||||||
#else
|
#else
|
||||||
real(pReal), parameter, public :: DAMASK_NaN = real(Z'7FF8000000000000', pReal)
|
real(pReal), parameter, public :: DAMASK_NaN = real(Z'7FF8000000000000', pReal) !< quiet NaN for double precision
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
type, public :: p_vec
|
type, public :: p_vec
|
||||||
|
@ -53,7 +60,9 @@ module prec
|
||||||
public :: prec_init
|
public :: prec_init
|
||||||
|
|
||||||
contains
|
contains
|
||||||
|
!--------------------------------------------------------------------------------------------------
|
||||||
|
!> @brief reporting precision and checking if DAMASK_NaN is set correctly
|
||||||
|
!--------------------------------------------------------------------------------------------------
|
||||||
subroutine prec_init
|
subroutine prec_init
|
||||||
use, intrinsic :: iso_fortran_env ! to get compiler_version and compiler_options (at least for gfortran 4.6 at the moment)
|
use, intrinsic :: iso_fortran_env ! to get compiler_version and compiler_options (at least for gfortran 4.6 at the moment)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue