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