one implicit none is enough
This commit is contained in:
parent
51e19048f7
commit
346c7c4a7f
|
@ -4,9 +4,7 @@
|
|||
!> @brief CPFEM engine
|
||||
!--------------------------------------------------------------------------------------------------
|
||||
module CPFEM
|
||||
use prec, only: &
|
||||
pReal, &
|
||||
pInt
|
||||
use prec
|
||||
|
||||
implicit none
|
||||
private
|
||||
|
@ -57,8 +55,6 @@ contains
|
|||
!> @brief call (thread safe) all module initializations
|
||||
!--------------------------------------------------------------------------------------------------
|
||||
subroutine CPFEM_initAll(el,ip)
|
||||
use prec, only: &
|
||||
prec_init
|
||||
use numerics, only: &
|
||||
numerics_init
|
||||
use debug, only: &
|
||||
|
@ -91,7 +87,6 @@ subroutine CPFEM_initAll(el,ip)
|
|||
IO_init
|
||||
use DAMASK_interface
|
||||
|
||||
implicit none
|
||||
integer(pInt), intent(in) :: el, & !< FE el number
|
||||
ip !< FE integration point number
|
||||
|
||||
|
@ -155,7 +150,6 @@ subroutine CPFEM_init
|
|||
crystallite_Li0, &
|
||||
crystallite_S0
|
||||
|
||||
implicit none
|
||||
integer :: k,l,m,ph,homog
|
||||
|
||||
write(6,'(/,a)') ' <<<+- CPFEM init -+>>>'
|
||||
|
@ -325,7 +319,6 @@ subroutine CPFEM_general(mode, parallelExecution, ffn, ffn1, temperature_inp, dt
|
|||
IO_warning
|
||||
use DAMASK_interface
|
||||
|
||||
implicit none
|
||||
integer(pInt), intent(in) :: elFE, & !< FE element number
|
||||
ip !< integration point number
|
||||
real(pReal), intent(in) :: dt !< time increment
|
||||
|
@ -639,8 +632,6 @@ 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
|
||||
|
@ -650,7 +641,6 @@ subroutine CPFEM_results(inc,time)
|
|||
use crystallite, only: &
|
||||
crystallite_results
|
||||
|
||||
implicit none
|
||||
integer(pInt), intent(in) :: inc
|
||||
real(pReal), intent(in) :: time
|
||||
|
||||
|
|
|
@ -12,6 +12,7 @@ module CPFEM2
|
|||
CPFEM_age, &
|
||||
CPFEM_initAll, &
|
||||
CPFEM_results
|
||||
|
||||
contains
|
||||
|
||||
|
||||
|
@ -20,7 +21,6 @@ contains
|
|||
!--------------------------------------------------------------------------------------------------
|
||||
subroutine CPFEM_initAll()
|
||||
use prec, only: &
|
||||
pInt, &
|
||||
prec_init
|
||||
use numerics, only: &
|
||||
numerics_init
|
||||
|
@ -57,8 +57,6 @@ subroutine CPFEM_initAll()
|
|||
FEM_Zoo_init
|
||||
#endif
|
||||
|
||||
implicit none
|
||||
|
||||
call DAMASK_interface_init ! Spectral and FEM interface to commandline
|
||||
call prec_init
|
||||
call IO_init
|
||||
|
@ -87,8 +85,6 @@ end subroutine CPFEM_initAll
|
|||
!> @brief allocate the arrays defined in module CPFEM and initialize them
|
||||
!--------------------------------------------------------------------------------------------------
|
||||
subroutine CPFEM_init
|
||||
use prec, only: &
|
||||
pInt, pReal
|
||||
use IO, only: &
|
||||
IO_error
|
||||
use numerics, only: &
|
||||
|
@ -124,8 +120,8 @@ subroutine CPFEM_init
|
|||
use DAMASK_interface, only: &
|
||||
getSolverJobName
|
||||
|
||||
implicit none
|
||||
integer(pInt) :: ph,homog
|
||||
|
||||
integer :: ph,homog
|
||||
character(len=1024) :: rankStr, PlasticItem, HomogItem
|
||||
integer(HID_T) :: fileHandle, groupPlasticID, groupHomogID
|
||||
|
||||
|
@ -134,7 +130,7 @@ subroutine CPFEM_init
|
|||
|
||||
! *** restore the last converged values of each essential variable from the binary file
|
||||
if (restartRead) then
|
||||
if (iand(debug_level(debug_CPFEM), debug_levelExtensive) /= 0_pInt) then
|
||||
if (iand(debug_level(debug_CPFEM), debug_levelExtensive) /= 0) then
|
||||
write(6,'(a)') '<< CPFEM >> restored state variables of last converged step from hdf5 file'
|
||||
flush(6)
|
||||
endif
|
||||
|
@ -152,14 +148,14 @@ subroutine CPFEM_init
|
|||
call HDF5_read(fileHandle,crystallite_S0, 'convergedS')
|
||||
|
||||
groupPlasticID = HDF5_openGroup(fileHandle,'PlasticPhases')
|
||||
do ph = 1_pInt,size(phase_plasticity)
|
||||
do ph = 1,size(phase_plasticity)
|
||||
write(PlasticItem,*) ph,'_'
|
||||
call HDF5_read(groupPlasticID,plasticState(ph)%state0,trim(PlasticItem)//'convergedStateConst')
|
||||
enddo
|
||||
call HDF5_closeGroup(groupPlasticID)
|
||||
|
||||
groupHomogID = HDF5_openGroup(fileHandle,'HomogStates')
|
||||
do homog = 1_pInt, material_Nhomogenization
|
||||
do homog = 1, material_Nhomogenization
|
||||
write(HomogItem,*) homog,'_'
|
||||
call HDF5_read(groupHomogID,homogState(homog)%state0, trim(HomogItem)//'convergedStateHomog')
|
||||
enddo
|
||||
|
@ -178,8 +174,7 @@ end subroutine CPFEM_init
|
|||
!--------------------------------------------------------------------------------------------------
|
||||
subroutine CPFEM_age()
|
||||
use prec, only: &
|
||||
pReal, &
|
||||
pInt
|
||||
pReal
|
||||
use numerics, only: &
|
||||
worldrank
|
||||
use debug, only: &
|
||||
|
@ -224,12 +219,11 @@ subroutine CPFEM_age()
|
|||
use DAMASK_interface, only: &
|
||||
getSolverJobName
|
||||
|
||||
implicit none
|
||||
integer(pInt) :: i, ph, homog, mySource
|
||||
integer :: i, ph, homog, mySource
|
||||
character(len=32) :: rankStr, PlasticItem, HomogItem
|
||||
integer(HID_T) :: fileHandle, groupPlastic, groupHomog
|
||||
|
||||
if (iand(debug_level(debug_CPFEM), debug_levelBasic) /= 0_pInt) &
|
||||
if (iand(debug_level(debug_CPFEM), debug_levelBasic) /= 0) &
|
||||
write(6,'(a)') '<< CPFEM >> aging states'
|
||||
|
||||
crystallite_F0 = crystallite_partionedF
|
||||
|
@ -246,14 +240,14 @@ subroutine CPFEM_age()
|
|||
do mySource = 1,phase_Nsources(i)
|
||||
sourceState(i)%p(mySource)%state0 = sourceState(i)%p(mySource)%state
|
||||
enddo; enddo
|
||||
do homog = 1_pInt, material_Nhomogenization
|
||||
do homog = 1, material_Nhomogenization
|
||||
homogState (homog)%state0 = homogState (homog)%state
|
||||
thermalState (homog)%state0 = thermalState (homog)%state
|
||||
damageState (homog)%state0 = damageState (homog)%state
|
||||
enddo
|
||||
|
||||
if (restartWrite) then
|
||||
if (iand(debug_level(debug_CPFEM), debug_levelBasic) /= 0_pInt) &
|
||||
if (iand(debug_level(debug_CPFEM), debug_levelBasic) /= 0) &
|
||||
write(6,'(a)') '<< CPFEM >> writing restart variables of last converged step to hdf5 file'
|
||||
|
||||
write(rankStr,'(a1,i0)')'_',worldrank
|
||||
|
@ -268,14 +262,14 @@ subroutine CPFEM_age()
|
|||
call HDF5_write(fileHandle,crystallite_S0, 'convergedS')
|
||||
|
||||
groupPlastic = HDF5_addGroup(fileHandle,'PlasticPhases')
|
||||
do ph = 1_pInt,size(phase_plasticity)
|
||||
do ph = 1,size(phase_plasticity)
|
||||
write(PlasticItem,*) ph,'_'
|
||||
call HDF5_write(groupPlastic,plasticState(ph)%state0,trim(PlasticItem)//'convergedStateConst')
|
||||
enddo
|
||||
call HDF5_closeGroup(groupPlastic)
|
||||
|
||||
groupHomog = HDF5_addGroup(fileHandle,'HomogStates')
|
||||
do homog = 1_pInt, material_Nhomogenization
|
||||
do homog = 1, material_Nhomogenization
|
||||
write(HomogItem,*) homog,'_'
|
||||
call HDF5_write(groupHomog,homogState(homog)%state0,trim(HomogItem)//'convergedStateHomog')
|
||||
enddo
|
||||
|
@ -285,7 +279,7 @@ subroutine CPFEM_age()
|
|||
restartWrite = .false.
|
||||
endif
|
||||
|
||||
if (iand(debug_level(debug_CPFEM), debug_levelBasic) /= 0_pInt) &
|
||||
if (iand(debug_level(debug_CPFEM), debug_levelBasic) /= 0) &
|
||||
write(6,'(a)') '<< CPFEM >> done aging states'
|
||||
|
||||
end subroutine CPFEM_age
|
||||
|
@ -295,8 +289,6 @@ end subroutine CPFEM_age
|
|||
!> @brief triggers writing of the results
|
||||
!--------------------------------------------------------------------------------------------------
|
||||
subroutine CPFEM_results(inc,time)
|
||||
use prec, only: &
|
||||
pInt
|
||||
use results
|
||||
use HDF5_utilities
|
||||
use homogenization, only: &
|
||||
|
@ -306,8 +298,7 @@ subroutine CPFEM_results(inc,time)
|
|||
use crystallite, only: &
|
||||
crystallite_results
|
||||
|
||||
implicit none
|
||||
integer(pInt), intent(in) :: inc
|
||||
integer, intent(in) :: inc
|
||||
real(pReal), intent(in) :: time
|
||||
|
||||
call results_openJobFile
|
||||
|
|
|
@ -5,9 +5,7 @@
|
|||
!> @todo Descriptions for public variables needed
|
||||
!--------------------------------------------------------------------------------------------------
|
||||
module FEsolving
|
||||
use prec, only: &
|
||||
pInt, &
|
||||
pReal
|
||||
use prec
|
||||
|
||||
implicit none
|
||||
private
|
||||
|
@ -59,7 +57,6 @@ subroutine FE_init
|
|||
IO_warning
|
||||
use DAMASK_interface
|
||||
|
||||
implicit none
|
||||
#if defined(Marc4DAMASK) || defined(Abaqus)
|
||||
integer, parameter :: &
|
||||
FILEUNIT = 222
|
||||
|
|
31
src/IO.f90
31
src/IO.f90
|
@ -63,8 +63,6 @@ contains
|
|||
!--------------------------------------------------------------------------------------------------
|
||||
subroutine IO_init
|
||||
|
||||
implicit none
|
||||
|
||||
write(6,'(/,a)') ' <<<+- IO init -+>>>'
|
||||
|
||||
end subroutine IO_init
|
||||
|
@ -75,7 +73,6 @@ end subroutine IO_init
|
|||
!--------------------------------------------------------------------------------------------------
|
||||
function IO_read(fileUnit) result(line)
|
||||
|
||||
implicit none
|
||||
integer, intent(in) :: fileUnit !< file unit
|
||||
|
||||
character(len=pStringLen) :: line
|
||||
|
@ -91,7 +88,6 @@ function IO_read(fileUnit) result(line)
|
|||
!--------------------------------------------------------------------------------------------------
|
||||
function IO_read_ASCII(fileName) result(fileContent)
|
||||
|
||||
implicit none
|
||||
character(len=*), intent(in) :: fileName
|
||||
|
||||
character(len=pStringLen), dimension(:), allocatable :: fileContent !< file content, separated per lines
|
||||
|
@ -160,7 +156,6 @@ end function IO_read_ASCII
|
|||
!--------------------------------------------------------------------------------------------------
|
||||
subroutine IO_open_file(fileUnit,path)
|
||||
|
||||
implicit none
|
||||
integer, intent(in) :: fileUnit !< file unit
|
||||
character(len=*), intent(in) :: path !< relative path from working directory
|
||||
|
||||
|
@ -178,7 +173,6 @@ end subroutine IO_open_file
|
|||
!--------------------------------------------------------------------------------------------------
|
||||
integer function IO_open_jobFile_binary(extension,mode)
|
||||
|
||||
implicit none
|
||||
character(len=*), intent(in) :: extension
|
||||
character, intent(in), optional :: mode
|
||||
|
||||
|
@ -197,7 +191,6 @@ end function IO_open_jobFile_binary
|
|||
!--------------------------------------------------------------------------------------------------
|
||||
integer function IO_open_binary(fileName,mode)
|
||||
|
||||
implicit none
|
||||
character(len=*), intent(in) :: fileName
|
||||
character, intent(in), optional :: mode
|
||||
|
||||
|
@ -231,7 +224,6 @@ end function IO_open_binary
|
|||
!--------------------------------------------------------------------------------------------------
|
||||
subroutine IO_open_inputFile(fileUnit,modelName)
|
||||
|
||||
implicit none
|
||||
integer, intent(in) :: fileUnit !< file unit
|
||||
character(len=*), intent(in) :: modelName !< model name, in case of restart not solver job name
|
||||
|
||||
|
@ -264,7 +256,6 @@ subroutine IO_open_inputFile(fileUnit,modelName)
|
|||
!--------------------------------------------------------------------------------------------------
|
||||
recursive function abaqus_assembleInputFile(unit1,unit2) result(createSuccess)
|
||||
|
||||
implicit none
|
||||
integer, intent(in) :: unit1, &
|
||||
unit2
|
||||
|
||||
|
@ -323,7 +314,6 @@ end subroutine IO_open_inputFile
|
|||
!--------------------------------------------------------------------------------------------------
|
||||
subroutine IO_open_logFile(fileUnit)
|
||||
|
||||
implicit none
|
||||
integer, intent(in) :: fileUnit !< file unit
|
||||
|
||||
integer :: myStat
|
||||
|
@ -343,7 +333,6 @@ end subroutine IO_open_logFile
|
|||
!--------------------------------------------------------------------------------------------------
|
||||
subroutine IO_write_jobFile(fileUnit,ext)
|
||||
|
||||
implicit none
|
||||
integer, intent(in) :: fileUnit !< file unit
|
||||
character(len=*), intent(in) :: ext !< extension of file
|
||||
|
||||
|
@ -362,7 +351,6 @@ end subroutine IO_write_jobFile
|
|||
!--------------------------------------------------------------------------------------------------
|
||||
logical pure function IO_isBlank(string)
|
||||
|
||||
implicit none
|
||||
character(len=*), intent(in) :: string !< string to check for content
|
||||
|
||||
character(len=*), parameter :: blankChar = achar(32)//achar(9)//achar(10)//achar(13) ! whitespaces
|
||||
|
@ -382,7 +370,6 @@ end function IO_isBlank
|
|||
!--------------------------------------------------------------------------------------------------
|
||||
pure function IO_getTag(string,openChar,closeChar)
|
||||
|
||||
implicit none
|
||||
character(len=*), intent(in) :: string !< string to check for tag
|
||||
character(len=len_trim(string)) :: IO_getTag
|
||||
|
||||
|
@ -417,7 +404,6 @@ end function IO_getTag
|
|||
!--------------------------------------------------------------------------------------------------
|
||||
pure function IO_stringPos(string)
|
||||
|
||||
implicit none
|
||||
integer, dimension(:), allocatable :: IO_stringPos
|
||||
character(len=*), intent(in) :: string !< string in which chunk positions are searched for
|
||||
|
||||
|
@ -447,7 +433,6 @@ end function IO_stringPos
|
|||
!--------------------------------------------------------------------------------------------------
|
||||
function IO_stringValue(string,chunkPos,myChunk,silent)
|
||||
|
||||
implicit none
|
||||
integer, dimension(:), intent(in) :: chunkPos !< positions of start and end of each tag/chunk in given string
|
||||
integer, intent(in) :: myChunk !< position number of desired chunk
|
||||
character(len=*), intent(in) :: string !< raw input with known start and end of each chunk
|
||||
|
@ -479,7 +464,6 @@ end function IO_stringValue
|
|||
!--------------------------------------------------------------------------------------------------
|
||||
real(pReal) function IO_floatValue (string,chunkPos,myChunk)
|
||||
|
||||
implicit none
|
||||
integer, dimension(:), intent(in) :: chunkPos !< positions of start and end of each tag/chunk in given string
|
||||
integer, intent(in) :: myChunk !< position number of desired chunk
|
||||
character(len=*), intent(in) :: string !< raw input with known start and end of each chunk
|
||||
|
@ -504,7 +488,6 @@ end function IO_floatValue
|
|||
!--------------------------------------------------------------------------------------------------
|
||||
integer function IO_intValue(string,chunkPos,myChunk)
|
||||
|
||||
implicit none
|
||||
character(len=*), intent(in) :: string !< raw input with known start and end of each chunk
|
||||
integer, intent(in) :: myChunk !< position number of desired chunk
|
||||
integer, dimension(:), intent(in) :: chunkPos !< positions of start and end of each tag/chunk in given string
|
||||
|
@ -529,7 +512,6 @@ end function IO_intValue
|
|||
!--------------------------------------------------------------------------------------------------
|
||||
real(pReal) function IO_fixedNoEFloatValue (string,ends,myChunk)
|
||||
|
||||
implicit none
|
||||
character(len=*), intent(in) :: string !< raw input with known ends of each chunk
|
||||
integer, intent(in) :: myChunk !< position number of desired chunk
|
||||
integer, dimension(:), intent(in) :: ends !< positions of end of each tag/chunk in given string
|
||||
|
@ -562,7 +544,6 @@ end function IO_fixedNoEFloatValue
|
|||
!--------------------------------------------------------------------------------------------------
|
||||
integer function IO_fixedIntValue(string,ends,myChunk)
|
||||
|
||||
implicit none
|
||||
character(len=*), intent(in) :: string !< raw input with known ends of each chunk
|
||||
integer, intent(in) :: myChunk !< position number of desired chunk
|
||||
integer, dimension(:), intent(in) :: ends !< positions of end of each tag/chunk in given string
|
||||
|
@ -581,7 +562,6 @@ end function IO_fixedIntValue
|
|||
!--------------------------------------------------------------------------------------------------
|
||||
pure function IO_lc(string)
|
||||
|
||||
implicit none
|
||||
character(len=*), intent(in) :: string !< string to convert
|
||||
character(len=len(string)) :: IO_lc
|
||||
|
||||
|
@ -604,7 +584,6 @@ end function IO_lc
|
|||
!--------------------------------------------------------------------------------------------------
|
||||
pure function IO_intOut(intToPrint)
|
||||
|
||||
implicit none
|
||||
integer, intent(in) :: intToPrint
|
||||
character(len=41) :: IO_intOut
|
||||
integer :: N_digits
|
||||
|
@ -625,7 +604,6 @@ end function IO_intOut
|
|||
!--------------------------------------------------------------------------------------------------
|
||||
subroutine IO_error(error_ID,el,ip,g,instance,ext_msg)
|
||||
|
||||
implicit none
|
||||
integer, intent(in) :: error_ID
|
||||
integer, optional, intent(in) :: el,ip,g,instance
|
||||
character(len=*), optional, intent(in) :: ext_msg
|
||||
|
@ -891,7 +869,6 @@ end subroutine IO_error
|
|||
!--------------------------------------------------------------------------------------------------
|
||||
subroutine IO_warning(warning_ID,el,ip,g,ext_msg)
|
||||
|
||||
implicit none
|
||||
integer, intent(in) :: warning_ID
|
||||
integer, optional, intent(in) :: el,ip,g
|
||||
character(len=*), optional, intent(in) :: ext_msg
|
||||
|
@ -981,7 +958,6 @@ end subroutine IO_warning
|
|||
!--------------------------------------------------------------------------------------------------
|
||||
character(len=300) pure function IO_extractValue(pair,key)
|
||||
|
||||
implicit none
|
||||
character(len=*), intent(in) :: pair, & !< key=value pair
|
||||
key !< key to be expected
|
||||
|
||||
|
@ -1002,7 +978,6 @@ end function IO_extractValue
|
|||
!--------------------------------------------------------------------------------------------------
|
||||
integer function IO_countDataLines(fileUnit)
|
||||
|
||||
implicit none
|
||||
integer, intent(in) :: fileUnit !< file handle
|
||||
|
||||
|
||||
|
@ -1035,7 +1010,6 @@ end function IO_countDataLines
|
|||
!--------------------------------------------------------------------------------------------------
|
||||
integer function IO_countNumericalDataLines(fileUnit)
|
||||
|
||||
implicit none
|
||||
integer, intent(in) :: fileUnit !< file handle
|
||||
|
||||
|
||||
|
@ -1066,7 +1040,6 @@ end function IO_countNumericalDataLines
|
|||
!--------------------------------------------------------------------------------------------------
|
||||
subroutine IO_skipChunks(fileUnit,N)
|
||||
|
||||
implicit none
|
||||
integer, intent(in) :: fileUnit, & !< file handle
|
||||
N !< minimum number of chunks to skip
|
||||
|
||||
|
@ -1091,7 +1064,6 @@ end subroutine IO_skipChunks
|
|||
!--------------------------------------------------------------------------------------------------
|
||||
integer function IO_countContinuousIntValues(fileUnit)
|
||||
|
||||
implicit none
|
||||
integer, intent(in) :: fileUnit
|
||||
|
||||
#ifdef Abaqus
|
||||
|
@ -1149,7 +1121,6 @@ end function IO_countContinuousIntValues
|
|||
!--------------------------------------------------------------------------------------------------
|
||||
function IO_continuousIntValues(fileUnit,maxN,lookupName,lookupMap,lookupMaxN)
|
||||
|
||||
implicit none
|
||||
integer, intent(in) :: maxN
|
||||
integer, dimension(1+maxN) :: IO_continuousIntValues
|
||||
|
||||
|
@ -1258,7 +1229,6 @@ function IO_continuousIntValues(fileUnit,maxN,lookupName,lookupMap,lookupMaxN)
|
|||
!--------------------------------------------------------------------------------------------------
|
||||
integer function IO_verifyIntValue (string,validChars,myName)
|
||||
|
||||
implicit none
|
||||
character(len=*), intent(in) :: string, & !< string for conversion to int value. Must not contain spaces!
|
||||
validChars, & !< valid characters in string
|
||||
myName !< name of caller function (for debugging)
|
||||
|
@ -1286,7 +1256,6 @@ end function IO_verifyIntValue
|
|||
!--------------------------------------------------------------------------------------------------
|
||||
real(pReal) function IO_verifyFloatValue (string,validChars,myName)
|
||||
|
||||
implicit none
|
||||
character(len=*), intent(in) :: string, & !< string for conversion to int value. Must not contain spaces!
|
||||
validChars, & !< valid characters in string
|
||||
myName !< name of caller function (for debugging)
|
||||
|
|
|
@ -6,13 +6,11 @@
|
|||
!! parts 'homogenization', 'crystallite', 'phase', 'texture', and 'microstucture'
|
||||
!--------------------------------------------------------------------------------------------------
|
||||
module config
|
||||
use prec, only: &
|
||||
pReal
|
||||
use list, only: &
|
||||
tPartitionedStringList
|
||||
use prec
|
||||
use list
|
||||
|
||||
implicit none
|
||||
|
||||
private
|
||||
type(tPartitionedStringList), public, protected, allocatable, dimension(:) :: &
|
||||
config_phase, &
|
||||
config_microstructure, &
|
||||
|
@ -47,8 +45,6 @@ contains
|
|||
!> @brief reads material.config and stores its content per part
|
||||
!--------------------------------------------------------------------------------------------------
|
||||
subroutine config_init
|
||||
use prec, only: &
|
||||
pStringLen
|
||||
use DAMASK_interface, only: &
|
||||
getSolverJobName
|
||||
use IO, only: &
|
||||
|
@ -61,7 +57,6 @@ subroutine config_init
|
|||
debug_material, &
|
||||
debug_levelBasic
|
||||
|
||||
implicit none
|
||||
integer :: myDebug,i
|
||||
|
||||
character(len=pStringLen) :: &
|
||||
|
@ -149,7 +144,6 @@ recursive function read_materialConfig(fileName,cnt) result(fileContent)
|
|||
use IO, only: &
|
||||
IO_warning
|
||||
|
||||
implicit none
|
||||
character(len=*), intent(in) :: fileName
|
||||
integer, intent(in), optional :: cnt !< recursion counter
|
||||
character(len=pStringLen), dimension(:), allocatable :: fileContent !< file content, separated per lines
|
||||
|
@ -231,12 +225,10 @@ end function read_materialConfig
|
|||
!--------------------------------------------------------------------------------------------------
|
||||
subroutine parse_materialConfig(sectionNames,part,line, &
|
||||
fileContent)
|
||||
use prec, only: &
|
||||
pStringLen
|
||||
|
||||
use IO, only: &
|
||||
IO_intOut
|
||||
|
||||
implicit none
|
||||
character(len=64), allocatable, dimension(:), intent(out) :: sectionNames
|
||||
type(tPartitionedStringList), allocatable, dimension(:), intent(inout) :: part
|
||||
character(len=pStringLen), intent(inout) :: line
|
||||
|
@ -288,7 +280,7 @@ end subroutine parse_materialConfig
|
|||
!--------------------------------------------------------------------------------------------------
|
||||
subroutine parse_debugAndNumericsConfig(config_list, &
|
||||
fileContent)
|
||||
implicit none
|
||||
|
||||
type(tPartitionedStringList), intent(out) :: config_list
|
||||
character(len=pStringLen), dimension(:), intent(in) :: fileContent
|
||||
integer :: i
|
||||
|
@ -309,7 +301,6 @@ subroutine config_deallocate(what)
|
|||
use IO, only: &
|
||||
IO_error
|
||||
|
||||
implicit none
|
||||
character(len=*), intent(in) :: what
|
||||
|
||||
select case(trim(what))
|
||||
|
|
|
@ -3,9 +3,7 @@
|
|||
!> @brief material subroutine for locally evolving damage field
|
||||
!--------------------------------------------------------------------------------------------------
|
||||
module damage_local
|
||||
use prec, only: &
|
||||
pReal, &
|
||||
pInt
|
||||
use prec
|
||||
|
||||
implicit none
|
||||
private
|
||||
|
@ -62,7 +60,6 @@ subroutine damage_local_init
|
|||
use config, only: &
|
||||
config_homogenization
|
||||
|
||||
implicit none
|
||||
|
||||
integer :: maxNinstance,homog,instance,o,i
|
||||
integer :: sizeState
|
||||
|
@ -147,7 +144,6 @@ function damage_local_updateState(subdt, ip, el)
|
|||
mappingHomogenization, &
|
||||
damageState
|
||||
|
||||
implicit none
|
||||
integer, intent(in) :: &
|
||||
ip, & !< integration point number
|
||||
el !< element number
|
||||
|
@ -201,7 +197,6 @@ subroutine damage_local_getSourceAndItsTangent(phiDot, dPhiDot_dPhi, phi, ip, el
|
|||
use source_damage_anisoDuctile, only: &
|
||||
source_damage_anisoductile_getRateAndItsTangent
|
||||
|
||||
implicit none
|
||||
integer, intent(in) :: &
|
||||
ip, & !< integration point number
|
||||
el !< element number
|
||||
|
@ -259,7 +254,6 @@ function damage_local_postResults(ip,el)
|
|||
damageMapping, &
|
||||
damage
|
||||
|
||||
implicit none
|
||||
integer, intent(in) :: &
|
||||
ip, & !< integration point
|
||||
el !< element
|
||||
|
|
|
@ -27,7 +27,6 @@ subroutine damage_none_init()
|
|||
DAMAGE_NONE_LABEL, &
|
||||
DAMAGE_NONE_ID
|
||||
|
||||
implicit none
|
||||
integer :: &
|
||||
homog, &
|
||||
NofMyHomog
|
||||
|
|
|
@ -60,7 +60,6 @@ subroutine damage_nonlocal_init
|
|||
use config, only: &
|
||||
config_homogenization
|
||||
|
||||
implicit none
|
||||
|
||||
integer :: maxNinstance,homog,instance,o,i
|
||||
integer :: sizeState
|
||||
|
@ -152,7 +151,6 @@ subroutine damage_nonlocal_getSourceAndItsTangent(phiDot, dPhiDot_dPhi, phi, ip,
|
|||
use source_damage_anisoDuctile, only: &
|
||||
source_damage_anisoductile_getRateAndItsTangent
|
||||
|
||||
implicit none
|
||||
integer, intent(in) :: &
|
||||
ip, & !< integration point number
|
||||
el !< element number
|
||||
|
@ -215,7 +213,6 @@ function damage_nonlocal_getDiffusion33(ip,el)
|
|||
use crystallite, only: &
|
||||
crystallite_push33ToRef
|
||||
|
||||
implicit none
|
||||
integer, intent(in) :: &
|
||||
ip, & !< integration point number
|
||||
el !< element number
|
||||
|
@ -249,7 +246,6 @@ real(pReal) function damage_nonlocal_getMobility(ip,el)
|
|||
material_phase, &
|
||||
homogenization_Ngrains
|
||||
|
||||
implicit none
|
||||
integer, intent(in) :: &
|
||||
ip, & !< integration point number
|
||||
el !< element number
|
||||
|
@ -276,7 +272,6 @@ subroutine damage_nonlocal_putNonLocalDamage(phi,ip,el)
|
|||
damageMapping, &
|
||||
damage
|
||||
|
||||
implicit none
|
||||
integer, intent(in) :: &
|
||||
ip, & !< integration point number
|
||||
el !< element number
|
||||
|
@ -302,7 +297,6 @@ function damage_nonlocal_postResults(ip,el)
|
|||
damageMapping, &
|
||||
damage
|
||||
|
||||
implicit none
|
||||
integer, intent(in) :: &
|
||||
ip, & !< integration point
|
||||
el !< element
|
||||
|
|
|
@ -3,8 +3,7 @@
|
|||
!> @author Christoph Koords, Max-Planck-Institut für Eisenforschung GmbH
|
||||
!--------------------------------------------------------------------------------------------------
|
||||
module element
|
||||
use prec, only: &
|
||||
pReal
|
||||
use prec
|
||||
|
||||
implicit none
|
||||
private
|
||||
|
@ -802,7 +801,6 @@ module element
|
|||
use IO, only: &
|
||||
IO_error
|
||||
|
||||
implicit none
|
||||
class(tElement) :: self
|
||||
integer, intent(in) :: elemType
|
||||
self%elemType = elemType
|
||||
|
|
|
@ -5,8 +5,7 @@
|
|||
!> @brief homogenization manager, organizing deformation partitioning and stress homogenization
|
||||
!--------------------------------------------------------------------------------------------------
|
||||
module homogenization
|
||||
use prec, only: &
|
||||
pReal
|
||||
use prec
|
||||
use material
|
||||
|
||||
!--------------------------------------------------------------------------------------------------
|
||||
|
@ -113,7 +112,6 @@ subroutine homogenization_init
|
|||
use numerics, only: &
|
||||
worldrank
|
||||
|
||||
implicit none
|
||||
integer, parameter :: FILEUNIT = 200
|
||||
integer :: e,i,p
|
||||
integer, dimension(:,:), pointer :: thisSize
|
||||
|
@ -351,7 +349,6 @@ subroutine materialpoint_stressAndItsTangent(updateJaco,dt)
|
|||
debug_i
|
||||
#endif
|
||||
|
||||
implicit none
|
||||
real(pReal), intent(in) :: dt !< time increment
|
||||
logical, intent(in) :: updateJaco !< initiating Jacobian update
|
||||
integer :: &
|
||||
|
@ -651,7 +648,6 @@ subroutine materialpoint_postResults
|
|||
crystallite_sizePostResults, &
|
||||
crystallite_postResults
|
||||
|
||||
implicit none
|
||||
integer :: &
|
||||
thePos, &
|
||||
theSize, &
|
||||
|
@ -707,7 +703,6 @@ subroutine partitionDeformation(ip,el)
|
|||
use homogenization_mech_RGC, only: &
|
||||
homogenization_RGC_partitionDeformation
|
||||
|
||||
implicit none
|
||||
integer, intent(in) :: &
|
||||
ip, & !< integration point
|
||||
el !< element number
|
||||
|
@ -752,7 +747,6 @@ function updateState(ip,el)
|
|||
use damage_local, only: &
|
||||
damage_local_updateState
|
||||
|
||||
implicit none
|
||||
integer, intent(in) :: &
|
||||
ip, & !< integration point
|
||||
el !< element number
|
||||
|
@ -805,7 +799,6 @@ subroutine averageStressAndItsTangent(ip,el)
|
|||
use homogenization_mech_RGC, only: &
|
||||
homogenization_RGC_averageStressAndItsTangent
|
||||
|
||||
implicit none
|
||||
integer, intent(in) :: &
|
||||
ip, & !< integration point
|
||||
el !< element number
|
||||
|
@ -853,7 +846,6 @@ function postResults(ip,el)
|
|||
use damage_nonlocal, only: &
|
||||
damage_nonlocal_postResults
|
||||
|
||||
implicit none
|
||||
integer, intent(in) :: &
|
||||
ip, & !< integration point
|
||||
el !< element number
|
||||
|
|
|
@ -7,8 +7,7 @@
|
|||
!> Nconstituents is defined as p x q x r (cluster)
|
||||
!--------------------------------------------------------------------------------------------------
|
||||
module homogenization_mech_RGC
|
||||
use prec, only: &
|
||||
pReal
|
||||
use prec
|
||||
use material
|
||||
|
||||
implicit none
|
||||
|
@ -109,7 +108,6 @@ subroutine homogenization_RGC_init()
|
|||
use config, only: &
|
||||
config_homogenization
|
||||
|
||||
implicit none
|
||||
integer :: &
|
||||
Ninstance, &
|
||||
h, i, &
|
||||
|
@ -251,7 +249,6 @@ subroutine homogenization_RGC_partitionDeformation(F,avgF,instance,of)
|
|||
debug_levelExtensive
|
||||
#endif
|
||||
|
||||
implicit none
|
||||
real(pReal), dimension (:,:,:), intent(out) :: F !< partioned F per grain
|
||||
|
||||
real(pReal), dimension (:,:), intent(in) :: avgF !< averaged F
|
||||
|
@ -302,8 +299,6 @@ end subroutine homogenization_RGC_partitionDeformation
|
|||
! "happy" with result
|
||||
!--------------------------------------------------------------------------------------------------
|
||||
function homogenization_RGC_updateState(P,F,F0,avgF,dt,dPdF,ip,el)
|
||||
use prec, only: &
|
||||
dEq0
|
||||
#ifdef DEBUG
|
||||
use debug, only: &
|
||||
debug_level, &
|
||||
|
@ -323,8 +318,6 @@ function homogenization_RGC_updateState(P,F,F0,avgF,dt,dPdF,ip,el)
|
|||
viscModus_RGC, &
|
||||
refRelaxRate_RGC
|
||||
|
||||
implicit none
|
||||
|
||||
real(pReal), dimension(:,:,:), intent(in) :: &
|
||||
P,& !< array of P
|
||||
F,& !< array of F
|
||||
|
@ -748,7 +741,6 @@ function homogenization_RGC_updateState(P,F,F0,avgF,dt,dPdF,ip,el)
|
|||
use numerics, only: &
|
||||
xSmoo_RGC
|
||||
|
||||
implicit none
|
||||
real(pReal), dimension (:,:,:), intent(out) :: rPen !< stress-like penalty
|
||||
real(pReal), dimension (:,:), intent(out) :: nMis !< total amount of mismatch
|
||||
|
||||
|
@ -868,7 +860,6 @@ function homogenization_RGC_updateState(P,F,F0,avgF,dt,dPdF,ip,el)
|
|||
volDiscrMod_RGC,&
|
||||
volDiscrPow_RGC
|
||||
|
||||
implicit none
|
||||
real(pReal), dimension (:,:,:), intent(out) :: vPen ! stress-like penalty due to volume
|
||||
real(pReal), intent(out) :: vDiscrep ! total volume discrepancy
|
||||
|
||||
|
@ -919,7 +910,6 @@ function homogenization_RGC_updateState(P,F,F0,avgF,dt,dPdF,ip,el)
|
|||
use math, only: &
|
||||
math_invert33
|
||||
|
||||
implicit none
|
||||
real(pReal), dimension(3) :: surfaceCorrection
|
||||
|
||||
real(pReal), dimension(3,3), intent(in) :: avgF !< average F
|
||||
|
@ -953,7 +943,6 @@ function homogenization_RGC_updateState(P,F,F0,avgF,dt,dPdF,ip,el)
|
|||
use constitutive, only: &
|
||||
constitutive_homogenizedC
|
||||
|
||||
implicit none
|
||||
real(pReal), dimension(2) :: equivalentModuli
|
||||
|
||||
integer, intent(in) :: &
|
||||
|
@ -989,7 +978,6 @@ function homogenization_RGC_updateState(P,F,F0,avgF,dt,dPdF,ip,el)
|
|||
!--------------------------------------------------------------------------------------------------
|
||||
subroutine grainDeformation(F, avgF, instance, of)
|
||||
|
||||
implicit none
|
||||
real(pReal), dimension(:,:,:), intent(out) :: F !< partioned F per grain
|
||||
|
||||
real(pReal), dimension(:,:), intent(in) :: avgF !< averaged F
|
||||
|
@ -1032,7 +1020,6 @@ end function homogenization_RGC_updateState
|
|||
!--------------------------------------------------------------------------------------------------
|
||||
subroutine homogenization_RGC_averageStressAndItsTangent(avgP,dAvgPdAvgF,P,dPdF,instance)
|
||||
|
||||
implicit none
|
||||
real(pReal), dimension (3,3), intent(out) :: avgP !< average stress at material point
|
||||
real(pReal), dimension (3,3,3,3), intent(out) :: dAvgPdAvgF !< average stiffness at material point
|
||||
|
||||
|
@ -1051,7 +1038,6 @@ end subroutine homogenization_RGC_averageStressAndItsTangent
|
|||
!--------------------------------------------------------------------------------------------------
|
||||
pure function homogenization_RGC_postResults(instance,of) result(postResults)
|
||||
|
||||
implicit none
|
||||
integer, intent(in) :: &
|
||||
instance, &
|
||||
of
|
||||
|
@ -1148,7 +1134,6 @@ end subroutine mech_RGC_results
|
|||
!--------------------------------------------------------------------------------------------------
|
||||
pure function relaxationVector(intFace,instance,of)
|
||||
|
||||
implicit none
|
||||
real(pReal), dimension (3) :: relaxationVector
|
||||
|
||||
integer, intent(in) :: instance,of
|
||||
|
@ -1176,7 +1161,6 @@ end function relaxationVector
|
|||
!--------------------------------------------------------------------------------------------------
|
||||
pure function interfaceNormal(intFace,instance,of)
|
||||
|
||||
implicit none
|
||||
real(pReal), dimension(3) :: interfaceNormal
|
||||
|
||||
integer, dimension(4), intent(in) :: intFace !< interface ID in 4D array (normal and position)
|
||||
|
@ -1202,7 +1186,6 @@ end function interfaceNormal
|
|||
!--------------------------------------------------------------------------------------------------
|
||||
pure function getInterface(iFace,iGrain3)
|
||||
|
||||
implicit none
|
||||
integer, dimension(4) :: getInterface
|
||||
|
||||
integer, dimension(3), intent(in) :: iGrain3 !< grain ID in 3D array
|
||||
|
@ -1227,7 +1210,6 @@ end function getInterface
|
|||
!--------------------------------------------------------------------------------------------------
|
||||
pure function grain1to3(grain1,nGDim)
|
||||
|
||||
implicit none
|
||||
integer, dimension(3) :: grain1to3
|
||||
|
||||
integer, intent(in) :: grain1 !< grain ID in 1D array
|
||||
|
@ -1245,7 +1227,6 @@ end function grain1to3
|
|||
!--------------------------------------------------------------------------------------------------
|
||||
integer pure function grain3to1(grain3,nGDim)
|
||||
|
||||
implicit none
|
||||
integer, dimension(3), intent(in) :: grain3 !< grain ID in 3D array (pos.x,pos.y,pos.z)
|
||||
integer, dimension(3), intent(in) :: nGDim
|
||||
|
||||
|
@ -1261,7 +1242,6 @@ end function grain3to1
|
|||
!--------------------------------------------------------------------------------------------------
|
||||
integer pure function interface4to1(iFace4D, nGDim)
|
||||
|
||||
implicit none
|
||||
integer, dimension(4), intent(in) :: iFace4D !< interface ID in 4D array (n.dir,pos.x,pos.y,pos.z)
|
||||
integer, dimension(3), intent(in) :: nGDim
|
||||
|
||||
|
@ -1308,7 +1288,6 @@ end function interface4to1
|
|||
!--------------------------------------------------------------------------------------------------
|
||||
pure function interface1to4(iFace1D, nGDim)
|
||||
|
||||
implicit none
|
||||
integer, dimension(4) :: interface1to4
|
||||
|
||||
integer, intent(in) :: iFace1D !< interface ID in 1D array
|
||||
|
|
|
@ -39,7 +39,6 @@ module subroutine mech_isostrain_init
|
|||
use config, only: &
|
||||
config_homogenization
|
||||
|
||||
implicit none
|
||||
integer :: &
|
||||
Ninstance, &
|
||||
h, &
|
||||
|
@ -91,7 +90,6 @@ end subroutine mech_isostrain_init
|
|||
!--------------------------------------------------------------------------------------------------
|
||||
module subroutine mech_isostrain_partitionDeformation(F,avgF)
|
||||
|
||||
implicit none
|
||||
real(pReal), dimension (:,:,:), intent(out) :: F !< partitioned deformation gradient
|
||||
|
||||
real(pReal), dimension (3,3), intent(in) :: avgF !< average deformation gradient at material point
|
||||
|
@ -106,7 +104,6 @@ end subroutine mech_isostrain_partitionDeformation
|
|||
!--------------------------------------------------------------------------------------------------
|
||||
module subroutine mech_isostrain_averageStressAndItsTangent(avgP,dAvgPdAvgF,P,dPdF,instance)
|
||||
|
||||
implicit none
|
||||
real(pReal), dimension (3,3), intent(out) :: avgP !< average stress at material point
|
||||
real(pReal), dimension (3,3,3,3), intent(out) :: dAvgPdAvgF !< average stiffness at material point
|
||||
|
||||
|
|
|
@ -21,7 +21,6 @@ module subroutine mech_none_init
|
|||
use config, only: &
|
||||
config_homogenization
|
||||
|
||||
implicit none
|
||||
integer :: &
|
||||
Ninstance, &
|
||||
h, &
|
||||
|
|
|
@ -68,7 +68,6 @@ subroutine kinematics_cleavage_opening_init()
|
|||
lattice_maxNcleavageFamily, &
|
||||
lattice_NcleavageSystem
|
||||
|
||||
implicit none
|
||||
integer, allocatable, dimension(:) :: tempInt
|
||||
real(pReal), allocatable, dimension(:) :: tempFloat
|
||||
|
||||
|
@ -140,7 +139,6 @@ subroutine kinematics_cleavage_opening_LiAndItsTangent(Ld, dLd_dTstar, S, ipc, i
|
|||
lattice_maxNcleavageFamily, &
|
||||
lattice_NcleavageSystem
|
||||
|
||||
implicit none
|
||||
integer, intent(in) :: &
|
||||
ipc, & !< grain number
|
||||
ip, & !< integration point number
|
||||
|
|
|
@ -4,9 +4,7 @@
|
|||
!> @details to be done
|
||||
!--------------------------------------------------------------------------------------------------
|
||||
module kinematics_thermal_expansion
|
||||
use prec, only: &
|
||||
pReal, &
|
||||
pInt
|
||||
use prec
|
||||
|
||||
implicit none
|
||||
private
|
||||
|
@ -42,7 +40,6 @@ subroutine kinematics_thermal_expansion_init()
|
|||
use config, only: &
|
||||
config_phase
|
||||
|
||||
implicit none
|
||||
integer(pInt) :: &
|
||||
Ninstance, &
|
||||
p, i
|
||||
|
@ -87,7 +84,6 @@ pure function kinematics_thermal_expansion_initialStrain(homog,phase,offset)
|
|||
lattice_thermalExpansion33, &
|
||||
lattice_referenceTemperature
|
||||
|
||||
implicit none
|
||||
integer(pInt), intent(in) :: &
|
||||
phase, &
|
||||
homog, offset
|
||||
|
@ -120,7 +116,6 @@ subroutine kinematics_thermal_expansion_LiAndItsTangent(Li, dLi_dTstar, ipc, ip,
|
|||
lattice_thermalExpansion33, &
|
||||
lattice_referenceTemperature
|
||||
|
||||
implicit none
|
||||
integer(pInt), intent(in) :: &
|
||||
ipc, & !< grain number
|
||||
ip, & !< integration point number
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
!> @brief Sets up the mesh for the solvers MSC.Marc, Abaqus and the spectral solver
|
||||
!--------------------------------------------------------------------------------------------------
|
||||
module mesh
|
||||
use prec, only: pReal, pInt
|
||||
use prec
|
||||
use mesh_base
|
||||
|
||||
implicit none
|
||||
|
@ -405,7 +405,7 @@ contains
|
|||
|
||||
subroutine tMesh_abaqus_init(self,elemType,nodes)
|
||||
|
||||
implicit none
|
||||
|
||||
class(tMesh_abaqus) :: self
|
||||
real(pReal), dimension(:,:), intent(in) :: nodes
|
||||
integer, intent(in) :: elemType
|
||||
|
@ -438,7 +438,7 @@ subroutine mesh_init(ip,el)
|
|||
calcMode, & FEsolving_execElem, &
|
||||
FEsolving_execIP
|
||||
|
||||
implicit none
|
||||
|
||||
integer, parameter :: FILEUNIT = 222
|
||||
integer, intent(in), optional :: el, ip
|
||||
integer :: j
|
||||
|
@ -530,7 +530,7 @@ logical function hasNoPart(fileUnit)
|
|||
IO_stringValue, &
|
||||
IO_lc
|
||||
|
||||
implicit none
|
||||
|
||||
integer, intent(in) :: fileUnit
|
||||
|
||||
integer, allocatable, dimension(:) :: chunkPos
|
||||
|
@ -571,7 +571,7 @@ subroutine mesh_abaqus_count_nodesAndElements(fileUnit)
|
|||
IO_countDataLines, &
|
||||
IO_error
|
||||
|
||||
implicit none
|
||||
|
||||
integer, intent(in) :: fileUnit
|
||||
|
||||
integer, allocatable, dimension(:) :: chunkPos
|
||||
|
@ -631,7 +631,7 @@ subroutine mesh_abaqus_count_elementSets(fileUnit)
|
|||
IO_stringPos, &
|
||||
IO_error
|
||||
|
||||
implicit none
|
||||
|
||||
integer, intent(in) :: fileUnit
|
||||
|
||||
integer, allocatable, dimension(:) :: chunkPos
|
||||
|
@ -673,7 +673,7 @@ subroutine mesh_abaqus_count_materials(fileUnit)
|
|||
IO_stringPos, &
|
||||
IO_error
|
||||
|
||||
implicit none
|
||||
|
||||
integer, intent(in) :: fileUnit
|
||||
|
||||
integer, allocatable, dimension(:) :: chunkPos
|
||||
|
@ -718,7 +718,7 @@ subroutine mesh_abaqus_map_elementSets(fileUnit)
|
|||
IO_continuousIntValues, &
|
||||
IO_error
|
||||
|
||||
implicit none
|
||||
|
||||
integer, intent(in) :: fileUnit
|
||||
|
||||
integer, allocatable, dimension(:) :: chunkPos
|
||||
|
@ -770,7 +770,7 @@ subroutine mesh_abaqus_map_materials(fileUnit)
|
|||
IO_extractValue, &
|
||||
IO_error
|
||||
|
||||
implicit none
|
||||
|
||||
integer, intent(in) :: fileUnit
|
||||
|
||||
integer, allocatable, dimension(:) :: chunkPos
|
||||
|
@ -835,7 +835,7 @@ subroutine mesh_abaqus_count_cpElements(fileUnit)
|
|||
IO_error, &
|
||||
IO_extractValue
|
||||
|
||||
implicit none
|
||||
|
||||
integer, intent(in) :: fileUnit
|
||||
|
||||
integer, allocatable, dimension(:) :: chunkPos
|
||||
|
@ -890,7 +890,7 @@ subroutine mesh_abaqus_map_elements(fileUnit)
|
|||
IO_extractValue, &
|
||||
IO_error
|
||||
|
||||
implicit none
|
||||
|
||||
integer, intent(in) :: fileUnit
|
||||
|
||||
integer, allocatable, dimension(:) :: chunkPos
|
||||
|
@ -955,7 +955,7 @@ subroutine mesh_abaqus_map_nodes(fileUnit)
|
|||
IO_intValue, &
|
||||
IO_error
|
||||
|
||||
implicit none
|
||||
|
||||
integer, intent(in) :: fileUnit
|
||||
|
||||
integer, allocatable, dimension(:) :: chunkPos
|
||||
|
@ -1019,7 +1019,7 @@ subroutine mesh_abaqus_build_nodes(fileUnit)
|
|||
IO_countDataLines, &
|
||||
IO_intValue
|
||||
|
||||
implicit none
|
||||
|
||||
integer, intent(in) :: fileUnit
|
||||
|
||||
integer, allocatable, dimension(:) :: chunkPos
|
||||
|
@ -1084,7 +1084,7 @@ subroutine mesh_abaqus_count_cpSizes(fileUnit)
|
|||
IO_countDataLines, &
|
||||
IO_intValue
|
||||
|
||||
implicit none
|
||||
|
||||
integer, intent(in) :: fileUnit
|
||||
|
||||
integer, allocatable, dimension(:) :: chunkPos
|
||||
|
@ -1143,7 +1143,7 @@ subroutine mesh_abaqus_build_elements(fileUnit)
|
|||
IO_countDataLines, &
|
||||
IO_error
|
||||
|
||||
implicit none
|
||||
|
||||
integer, intent(in) :: fileUnit
|
||||
|
||||
integer, allocatable, dimension(:) :: chunkPos
|
||||
|
@ -1260,7 +1260,7 @@ use IO, only: &
|
|||
IO_stringValue, &
|
||||
IO_stringPos
|
||||
|
||||
implicit none
|
||||
|
||||
integer, intent(in) :: fileUnit
|
||||
|
||||
integer, allocatable, dimension(:) :: chunkPos
|
||||
|
@ -1303,7 +1303,7 @@ end subroutine mesh_get_damaskOptions
|
|||
!--------------------------------------------------------------------------------------------------
|
||||
subroutine mesh_build_cellconnectivity
|
||||
|
||||
implicit none
|
||||
|
||||
integer, dimension(:), allocatable :: &
|
||||
matchingNode2cellnode
|
||||
integer, dimension(:,:), allocatable :: &
|
||||
|
@ -1371,7 +1371,7 @@ end subroutine mesh_build_cellconnectivity
|
|||
!--------------------------------------------------------------------------------------------------
|
||||
function mesh_build_cellnodes(nodes,Ncellnodes)
|
||||
|
||||
implicit none
|
||||
|
||||
integer, intent(in) :: Ncellnodes !< requested number of cellnodes
|
||||
real(pReal), dimension(3,mesh_Nnodes), intent(in) :: nodes
|
||||
real(pReal), dimension(3,Ncellnodes) :: mesh_build_cellnodes
|
||||
|
@ -1414,7 +1414,7 @@ subroutine mesh_build_ipVolumes
|
|||
math_volTetrahedron, &
|
||||
math_areaTriangle
|
||||
|
||||
implicit none
|
||||
|
||||
integer :: e,t,g,c,i,m,f,n
|
||||
real(pReal), dimension(FE_maxNcellnodesPerCellface,FE_maxNcellfaces) :: subvolume
|
||||
|
||||
|
@ -1483,7 +1483,7 @@ end subroutine mesh_build_ipVolumes
|
|||
!--------------------------------------------------------------------------------------------------
|
||||
subroutine mesh_build_ipCoordinates
|
||||
|
||||
implicit none
|
||||
|
||||
integer :: e,t,g,c,i,n
|
||||
real(pReal), dimension(3) :: myCoords
|
||||
|
||||
|
@ -1513,7 +1513,7 @@ end subroutine mesh_build_ipCoordinates
|
|||
!--------------------------------------------------------------------------------------------------
|
||||
pure function mesh_cellCenterCoordinates(ip,el)
|
||||
|
||||
implicit none
|
||||
|
||||
integer, intent(in) :: el, & !< element number
|
||||
ip !< integration point number
|
||||
real(pReal), dimension(3) :: mesh_cellCenterCoordinates !< x,y,z coordinates of the cell center of the requested IP cell
|
||||
|
@ -1542,7 +1542,7 @@ subroutine mesh_build_ipAreas
|
|||
use math, only: &
|
||||
math_cross
|
||||
|
||||
implicit none
|
||||
|
||||
integer :: e,t,g,c,i,f,n,m
|
||||
real(pReal), dimension (3,FE_maxNcellnodesPerCellface) :: nodePos, normals
|
||||
real(pReal), dimension(3) :: normal
|
||||
|
@ -1614,7 +1614,7 @@ end subroutine mesh_build_ipAreas
|
|||
!--------------------------------------------------------------------------------------------------
|
||||
subroutine mesh_build_nodeTwins
|
||||
|
||||
implicit none
|
||||
|
||||
integer dir, & ! direction of periodicity
|
||||
node, &
|
||||
minimumNode, &
|
||||
|
@ -1685,7 +1685,7 @@ end subroutine mesh_build_nodeTwins
|
|||
!--------------------------------------------------------------------------------------------------
|
||||
subroutine mesh_build_sharedElems
|
||||
|
||||
implicit none
|
||||
|
||||
integer(pint) e, & ! element index
|
||||
g, & ! element type
|
||||
node, & ! CP node index
|
||||
|
@ -1750,7 +1750,7 @@ subroutine mesh_build_ipNeighborhood
|
|||
use math, only: &
|
||||
math_mul3x3
|
||||
|
||||
implicit none
|
||||
|
||||
integer :: myElem, & ! my CP element index
|
||||
myIP, &
|
||||
myType, & ! my element type
|
||||
|
@ -1915,7 +1915,7 @@ subroutine mesh_build_ipNeighborhood
|
|||
!--------------------------------------------------------------------------------------------------
|
||||
subroutine mesh_faceMatch(elem, face ,matchingElem, matchingFace)
|
||||
|
||||
implicit none
|
||||
|
||||
integer, intent(out) :: matchingElem, & ! matching CP element ID
|
||||
matchingFace ! matching face ID
|
||||
integer, intent(in) :: face, & ! face ID
|
||||
|
@ -2005,7 +2005,7 @@ end subroutine mesh_build_ipNeighborhood
|
|||
integer function FE_mapElemtype(what)
|
||||
use IO, only: IO_lc, IO_error
|
||||
|
||||
implicit none
|
||||
|
||||
character(len=*), intent(in) :: what
|
||||
|
||||
select case (IO_lc(what))
|
||||
|
@ -2049,7 +2049,7 @@ end function FE_mapElemtype
|
|||
!--------------------------------------------------------------------------------------------------
|
||||
subroutine mesh_build_FEdata
|
||||
|
||||
implicit none
|
||||
|
||||
integer :: me
|
||||
allocate(FE_nodesAtIP(FE_maxmaxNnodesAtIP,FE_maxNips,FE_Ngeomtypes), source=0)
|
||||
allocate(FE_ipNeighbor(FE_maxNipNeighbors,FE_maxNips,FE_Ngeomtypes), source=0)
|
||||
|
@ -2769,7 +2769,6 @@ integer function mesh_FEasCP(what,myID)
|
|||
use IO, only: &
|
||||
IO_lc
|
||||
|
||||
implicit none
|
||||
character(len=*), intent(in) :: what
|
||||
integer, intent(in) :: myID
|
||||
|
||||
|
|
|
@ -9,12 +9,8 @@
|
|||
module mesh_base
|
||||
|
||||
use, intrinsic :: iso_c_binding
|
||||
use prec, only: &
|
||||
pStringLen, &
|
||||
pReal, &
|
||||
pInt
|
||||
use element, only: &
|
||||
tElement
|
||||
use prec
|
||||
use element
|
||||
use future
|
||||
|
||||
implicit none
|
||||
|
@ -54,7 +50,6 @@ module mesh_base
|
|||
contains
|
||||
subroutine tMesh_base_init(self,meshType,elemType,nodes)
|
||||
|
||||
implicit none
|
||||
class(tMesh) :: self
|
||||
character(len=*), intent(in) :: meshType
|
||||
integer(pInt), intent(in) :: elemType
|
||||
|
@ -75,7 +70,6 @@ end subroutine tMesh_base_init
|
|||
|
||||
subroutine tMesh_base_setNelems(self,Nelems)
|
||||
|
||||
implicit none
|
||||
class(tMesh) :: self
|
||||
integer(pInt), intent(in) :: Nelems
|
||||
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
!> @brief Sets up the mesh for the solver MSC.Marc
|
||||
!--------------------------------------------------------------------------------------------------
|
||||
module mesh
|
||||
use prec, only: pReal, pInt
|
||||
use prec
|
||||
use mesh_base
|
||||
|
||||
implicit none
|
||||
|
@ -265,7 +265,7 @@ contains
|
|||
|
||||
subroutine tMesh_marc_init(self,elemType,nodes)
|
||||
|
||||
implicit none
|
||||
|
||||
class(tMesh_marc) :: self
|
||||
real(pReal), dimension(:,:), intent(in) :: nodes
|
||||
integer, intent(in) :: elemType
|
||||
|
@ -299,7 +299,7 @@ subroutine mesh_init(ip,el)
|
|||
FEsolving_execElem, &
|
||||
FEsolving_execIP
|
||||
|
||||
implicit none
|
||||
|
||||
integer, intent(in) :: el, ip
|
||||
|
||||
integer, parameter :: FILEUNIT = 222
|
||||
|
@ -420,7 +420,7 @@ integer function mesh_marc_get_fileFormat(fileUnit)
|
|||
IO_stringValue, &
|
||||
IO_stringPos
|
||||
|
||||
implicit none
|
||||
|
||||
integer, intent(in) :: fileUnit
|
||||
|
||||
integer, allocatable, dimension(:) :: chunkPos
|
||||
|
@ -451,7 +451,7 @@ subroutine mesh_marc_get_tableStyles(initialcond, hypoelastic,fileUnit)
|
|||
IO_stringValue, &
|
||||
IO_stringPos
|
||||
|
||||
implicit none
|
||||
|
||||
integer, intent(out) :: initialcond, hypoelastic
|
||||
integer, intent(in) :: fileUnit
|
||||
|
||||
|
@ -486,7 +486,7 @@ function mesh_marc_get_matNumber(fileUnit,tableStyle)
|
|||
IO_stringValue, &
|
||||
IO_stringPos
|
||||
|
||||
implicit none
|
||||
|
||||
integer, intent(in) :: fileUnit, tableStyle
|
||||
integer, dimension(:), allocatable :: mesh_marc_get_matNumber
|
||||
|
||||
|
@ -534,7 +534,7 @@ subroutine mesh_marc_count_nodesAndElements(nNodes, nElems, fileUnit)
|
|||
IO_stringPos, &
|
||||
IO_IntValue
|
||||
|
||||
implicit none
|
||||
|
||||
integer, intent(in) :: fileUnit
|
||||
integer, intent(out) :: nNodes, nElems
|
||||
|
||||
|
@ -572,7 +572,7 @@ subroutine mesh_marc_count_nodesAndElements(nNodes, nElems, fileUnit)
|
|||
IO_stringPos, &
|
||||
IO_countContinuousIntValues
|
||||
|
||||
implicit none
|
||||
|
||||
integer, intent(in) :: fileUnit
|
||||
integer, intent(out) :: nElemSets, maxNelemInSet
|
||||
|
||||
|
@ -607,7 +607,7 @@ subroutine mesh_marc_map_elementSets(nameElemSet,mapElemSet,fileUnit)
|
|||
IO_stringPos, &
|
||||
IO_continuousIntValues
|
||||
|
||||
implicit none
|
||||
|
||||
integer, intent(in) :: fileUnit
|
||||
character(len=64), dimension(:), intent(out) :: &
|
||||
nameElemSet
|
||||
|
@ -647,7 +647,7 @@ subroutine mesh_marc_map_elements(tableStyle,nameElemSet,mapElemSet,nElems,fileU
|
|||
IO_stringPos, &
|
||||
IO_continuousIntValues
|
||||
|
||||
implicit none
|
||||
|
||||
integer, intent(in) :: fileUnit,tableStyle,nElems
|
||||
character(len=64), intent(in), dimension(:) :: nameElemSet
|
||||
integer, dimension(:,:), intent(in) :: &
|
||||
|
@ -717,7 +717,7 @@ subroutine mesh_marc_map_nodes(nNodes,fileUnit)
|
|||
IO_stringPos, &
|
||||
IO_fixedIntValue
|
||||
|
||||
implicit none
|
||||
|
||||
integer, intent(in) :: fileUnit, nNodes
|
||||
|
||||
integer, allocatable, dimension(:) :: chunkPos
|
||||
|
@ -760,7 +760,7 @@ subroutine mesh_marc_build_nodes(fileUnit)
|
|||
IO_fixedIntValue, &
|
||||
IO_fixedNoEFloatValue
|
||||
|
||||
implicit none
|
||||
|
||||
integer, intent(in) :: fileUnit
|
||||
|
||||
integer, dimension(5), parameter :: node_ends = int([0,10,30,50,70],pInt)
|
||||
|
@ -807,7 +807,7 @@ integer function mesh_marc_count_cpSizes(fileUnit)
|
|||
IO_skipChunks
|
||||
use element
|
||||
|
||||
implicit none
|
||||
|
||||
integer, intent(in) :: fileUnit
|
||||
|
||||
type(tElement) :: tempEl
|
||||
|
@ -857,7 +857,7 @@ subroutine mesh_marc_build_elements(fileUnit)
|
|||
IO_continuousIntValues, &
|
||||
IO_error
|
||||
|
||||
implicit none
|
||||
|
||||
integer, intent(in) :: fileUnit
|
||||
|
||||
integer, allocatable, dimension(:) :: chunkPos
|
||||
|
@ -955,7 +955,7 @@ use IO, only: &
|
|||
IO_stringValue, &
|
||||
IO_stringPos
|
||||
|
||||
implicit none
|
||||
|
||||
integer, intent(in) :: fileUnit
|
||||
|
||||
integer, allocatable, dimension(:) :: chunkPos
|
||||
|
@ -997,7 +997,7 @@ end subroutine mesh_get_damaskOptions
|
|||
!--------------------------------------------------------------------------------------------------
|
||||
subroutine mesh_build_cellconnectivity
|
||||
|
||||
implicit none
|
||||
|
||||
integer, dimension(:), allocatable :: &
|
||||
matchingNode2cellnode
|
||||
integer, dimension(:,:), allocatable :: &
|
||||
|
@ -1063,7 +1063,7 @@ end subroutine mesh_build_cellconnectivity
|
|||
!--------------------------------------------------------------------------------------------------
|
||||
function mesh_build_cellnodes(nodes,Ncellnodes)
|
||||
|
||||
implicit none
|
||||
|
||||
integer, intent(in) :: Ncellnodes !< requested number of cellnodes
|
||||
real(pReal), dimension(3,mesh_Nnodes), intent(in) :: nodes
|
||||
real(pReal), dimension(3,Ncellnodes) :: mesh_build_cellnodes
|
||||
|
@ -1105,7 +1105,7 @@ subroutine mesh_build_ipVolumes
|
|||
math_volTetrahedron, &
|
||||
math_areaTriangle
|
||||
|
||||
implicit none
|
||||
|
||||
integer :: e,t,g,c,i,m,f,n
|
||||
real(pReal), dimension(FE_maxNcellnodesPerCellface,FE_maxNcellfaces) :: subvolume
|
||||
|
||||
|
@ -1174,7 +1174,7 @@ end subroutine mesh_build_ipVolumes
|
|||
!--------------------------------------------------------------------------------------------------
|
||||
subroutine mesh_build_ipCoordinates
|
||||
|
||||
implicit none
|
||||
|
||||
integer :: e,t,g,c,i,n
|
||||
real(pReal), dimension(3) :: myCoords
|
||||
|
||||
|
@ -1204,7 +1204,7 @@ end subroutine mesh_build_ipCoordinates
|
|||
!--------------------------------------------------------------------------------------------------
|
||||
pure function mesh_cellCenterCoordinates(ip,el)
|
||||
|
||||
implicit none
|
||||
|
||||
integer, intent(in) :: el, & !< element number
|
||||
ip !< integration point number
|
||||
real(pReal), dimension(3) :: mesh_cellCenterCoordinates !< x,y,z coordinates of the cell center of the requested IP cell
|
||||
|
@ -1232,7 +1232,7 @@ subroutine mesh_build_ipAreas
|
|||
use math, only: &
|
||||
math_cross
|
||||
|
||||
implicit none
|
||||
|
||||
integer :: e,t,g,c,i,f,n,m
|
||||
real(pReal), dimension (3,FE_maxNcellnodesPerCellface) :: nodePos, normals
|
||||
real(pReal), dimension(3) :: normal
|
||||
|
@ -1304,7 +1304,7 @@ end subroutine mesh_build_ipAreas
|
|||
!--------------------------------------------------------------------------------------------------
|
||||
subroutine mesh_build_nodeTwins
|
||||
|
||||
implicit none
|
||||
|
||||
integer dir, & ! direction of periodicity
|
||||
node, &
|
||||
minimumNode, &
|
||||
|
@ -1375,7 +1375,7 @@ end subroutine mesh_build_nodeTwins
|
|||
!--------------------------------------------------------------------------------------------------
|
||||
subroutine mesh_build_sharedElems
|
||||
|
||||
implicit none
|
||||
|
||||
integer(pint) e, & ! element index
|
||||
g, & ! element type
|
||||
node, & ! CP node index
|
||||
|
@ -1440,7 +1440,7 @@ subroutine mesh_build_ipNeighborhood
|
|||
use math, only: &
|
||||
math_mul3x3
|
||||
|
||||
implicit none
|
||||
|
||||
integer :: myElem, & ! my CP element index
|
||||
myIP, &
|
||||
myType, & ! my element type
|
||||
|
@ -1606,7 +1606,7 @@ subroutine mesh_build_ipNeighborhood
|
|||
!--------------------------------------------------------------------------------------------------
|
||||
subroutine mesh_faceMatch(elem, face ,matchingElem, matchingFace)
|
||||
|
||||
implicit none
|
||||
|
||||
integer, intent(out) :: matchingElem, & ! matching CP element ID
|
||||
matchingFace ! matching face ID
|
||||
integer, intent(in) :: face, & ! face ID
|
||||
|
@ -1696,7 +1696,7 @@ end subroutine mesh_build_ipNeighborhood
|
|||
integer function FE_mapElemtype(what)
|
||||
use IO, only: IO_lc, IO_error
|
||||
|
||||
implicit none
|
||||
|
||||
character(len=*), intent(in) :: what
|
||||
|
||||
select case (IO_lc(what))
|
||||
|
@ -1742,7 +1742,7 @@ end function FE_mapElemtype
|
|||
!--------------------------------------------------------------------------------------------------
|
||||
subroutine mesh_build_FEdata
|
||||
|
||||
implicit none
|
||||
|
||||
integer :: me
|
||||
allocate(FE_cellface(FE_maxNcellnodesPerCellface,FE_maxNcellfaces,FE_Ncelltypes), source=0)
|
||||
|
||||
|
@ -1798,7 +1798,7 @@ integer function mesh_FEasCP(what,myID)
|
|||
use IO, only: &
|
||||
IO_lc
|
||||
|
||||
implicit none
|
||||
|
||||
character(len=*), intent(in) :: what
|
||||
integer, intent(in) :: myID
|
||||
|
||||
|
|
|
@ -4,9 +4,7 @@
|
|||
!> @brief Managing of parameters related to numerics
|
||||
!--------------------------------------------------------------------------------------------------
|
||||
module numerics
|
||||
use prec, only: &
|
||||
pInt, &
|
||||
pReal
|
||||
use prec
|
||||
|
||||
implicit none
|
||||
private
|
||||
|
@ -131,8 +129,6 @@ contains
|
|||
! a sanity check
|
||||
!--------------------------------------------------------------------------------------------------
|
||||
subroutine numerics_init
|
||||
use prec, only: &
|
||||
pStringLen
|
||||
use IO, only: &
|
||||
IO_read_ASCII, &
|
||||
IO_error, &
|
||||
|
@ -148,7 +144,6 @@ subroutine numerics_init
|
|||
use petscsys
|
||||
#endif
|
||||
!$ use OMP_LIB, only: omp_set_num_threads
|
||||
implicit none
|
||||
!$ integer :: gotDAMASK_NUM_THREADS = 1
|
||||
integer :: i,j, ierr ! no pInt
|
||||
integer(pInt), allocatable, dimension(:) :: chunkPos
|
||||
|
|
Loading…
Reference in New Issue