Merge branch 'simple-int-formatting' into 'development'
Simple int formatting See merge request damask/DAMASK!111
This commit is contained in:
commit
5a2053cdc2
|
@ -42,7 +42,7 @@ contains
|
|||
|
||||
|
||||
!--------------------------------------------------------------------------------------------------
|
||||
!> @brief call (thread safe) all module initializations
|
||||
!> @brief call all module initializations
|
||||
!--------------------------------------------------------------------------------------------------
|
||||
subroutine CPFEM_initAll
|
||||
|
||||
|
@ -70,28 +70,23 @@ subroutine CPFEM_initAll
|
|||
|
||||
end subroutine CPFEM_initAll
|
||||
|
||||
|
||||
!--------------------------------------------------------------------------------------------------
|
||||
!> @brief allocate the arrays defined in module CPFEM and initialize them
|
||||
!--------------------------------------------------------------------------------------------------
|
||||
subroutine CPFEM_init
|
||||
|
||||
integer :: ph,homog
|
||||
character(len=1024) :: rankStr, PlasticItem, HomogItem
|
||||
integer(HID_T) :: fileHandle, groupPlasticID, groupHomogID
|
||||
integer :: i
|
||||
integer(HID_T) :: fileHandle, groupHandle
|
||||
character(len=pStringLen) :: fileName, datasetName
|
||||
|
||||
write(6,'(/,a)') ' <<<+- CPFEM init -+>>>'
|
||||
flush(6)
|
||||
write(6,'(/,a)') ' <<<+- CPFEM init -+>>>'; flush(6)
|
||||
|
||||
! *** restore the last converged values of each essential variable
|
||||
if (interface_restartInc > 0) then
|
||||
if (iand(debug_level(debug_CPFEM), debug_levelExtensive) /= 0) then
|
||||
write(6,'(a)') '<< CPFEM >> restored state variables of last converged step from hdf5 file'
|
||||
flush(6)
|
||||
endif
|
||||
write(6,'(/,a,i0,a)') ' reading restart information of increment ', interface_restartInc, ' from file'
|
||||
|
||||
write(rankStr,'(a1,i0)')'_',worldrank
|
||||
|
||||
fileHandle = HDF5_openFile(trim(getSolverJobName())//trim(rankStr)//'.hdf5')
|
||||
write(fileName,'(a,i0,a)') trim(getSolverJobName())//'_',worldrank,'.hdf5'
|
||||
fileHandle = HDF5_openFile(fileName)
|
||||
|
||||
call HDF5_read(fileHandle,crystallite_F0, 'F')
|
||||
call HDF5_read(fileHandle,crystallite_Fp0,'Fp')
|
||||
|
@ -100,19 +95,19 @@ subroutine CPFEM_init
|
|||
call HDF5_read(fileHandle,crystallite_Li0,'Li')
|
||||
call HDF5_read(fileHandle,crystallite_S0, 'S')
|
||||
|
||||
groupPlasticID = HDF5_openGroup(fileHandle,'constituent')
|
||||
do ph = 1,size(phase_plasticity)
|
||||
write(PlasticItem,*) ph,'_'
|
||||
call HDF5_read(groupPlasticID,plasticState(ph)%state0,trim(PlasticItem)//'omega_plastic')
|
||||
groupHandle = HDF5_openGroup(fileHandle,'constituent')
|
||||
do i = 1,size(phase_plasticity)
|
||||
write(datasetName,'(i0,a)') i,'_omega_plastic'
|
||||
call HDF5_read(groupHandle,plasticState(i)%state0,datasetName)
|
||||
enddo
|
||||
call HDF5_closeGroup(groupPlasticID)
|
||||
call HDF5_closeGroup(groupHandle)
|
||||
|
||||
groupHomogID = HDF5_openGroup(fileHandle,'materialpoint')
|
||||
do homog = 1, material_Nhomogenization
|
||||
write(HomogItem,*) homog,'_'
|
||||
call HDF5_read(groupHomogID,homogState(homog)%state0, trim(HomogItem)//'omega_homogenization')
|
||||
groupHandle = HDF5_openGroup(fileHandle,'materialpoint')
|
||||
do i = 1, material_Nhomogenization
|
||||
write(datasetName,'(i0,a)') i,'_omega_homogenization'
|
||||
call HDF5_read(groupHandle,homogState(i)%state0,datasetName)
|
||||
enddo
|
||||
call HDF5_closeGroup(groupHomogID)
|
||||
call HDF5_closeGroup(groupHandle)
|
||||
|
||||
call HDF5_closeFile(fileHandle)
|
||||
endif
|
||||
|
@ -126,7 +121,7 @@ end subroutine CPFEM_init
|
|||
!--------------------------------------------------------------------------------------------------
|
||||
subroutine CPFEM_forward
|
||||
|
||||
integer :: i, homog, mySource
|
||||
integer :: i, j
|
||||
|
||||
if (iand(debug_level(debug_CPFEM), debug_levelBasic) /= 0) &
|
||||
write(6,'(a)') '<< CPFEM >> aging states'
|
||||
|
@ -142,32 +137,31 @@ subroutine CPFEM_forward
|
|||
plasticState(i)%state0 = plasticState(i)%state
|
||||
enddo
|
||||
do i = 1, size(sourceState)
|
||||
do mySource = 1,phase_Nsources(i)
|
||||
sourceState(i)%p(mySource)%state0 = sourceState(i)%p(mySource)%state
|
||||
do j = 1,phase_Nsources(i)
|
||||
sourceState(i)%p(j)%state0 = sourceState(i)%p(j)%state
|
||||
enddo; enddo
|
||||
do homog = 1, material_Nhomogenization
|
||||
homogState (homog)%state0 = homogState (homog)%state
|
||||
thermalState (homog)%state0 = thermalState (homog)%state
|
||||
damageState (homog)%state0 = damageState (homog)%state
|
||||
do i = 1, material_Nhomogenization
|
||||
homogState (i)%state0 = homogState (i)%state
|
||||
thermalState(i)%state0 = thermalState(i)%state
|
||||
damageState (i)%state0 = damageState (i)%state
|
||||
enddo
|
||||
|
||||
end subroutine CPFEM_forward
|
||||
|
||||
|
||||
!--------------------------------------------------------------------------------------------------
|
||||
!> @brief Write current constitutive variables for restart to file.
|
||||
!> @brief Write current restart information (Field and constitutive data) to file.
|
||||
!--------------------------------------------------------------------------------------------------
|
||||
subroutine CPFEM_restartWrite
|
||||
|
||||
integer :: ph, homog
|
||||
character(len=32) :: rankStr, PlasticItem, HomogItem
|
||||
integer(HID_T) :: fileHandle, groupPlastic, groupHomog
|
||||
integer :: i
|
||||
integer(HID_T) :: fileHandle, groupHandle
|
||||
character(len=pStringLen) :: fileName, datasetName
|
||||
|
||||
write(6,'(a)') ' writing field and constitutive data required for restart to file';flush(6)
|
||||
|
||||
write(6,'(a)') ' writing constitutive data required for restart to file';flush(6)
|
||||
|
||||
write(rankStr,'(a1,i0)')'_',worldrank
|
||||
fileHandle = HDF5_openFile(trim(getSolverJobName())//trim(rankStr)//'.hdf5','a')
|
||||
write(fileName,'(a,i0,a)') trim(getSolverJobName())//'_',worldrank,'.hdf5'
|
||||
fileHandle = HDF5_openFile(fileName,'a')
|
||||
|
||||
call HDF5_write(fileHandle,crystallite_partionedF,'F')
|
||||
call HDF5_write(fileHandle,crystallite_Fp, 'Fp')
|
||||
|
@ -176,19 +170,19 @@ subroutine CPFEM_restartWrite
|
|||
call HDF5_write(fileHandle,crystallite_Li, 'Li')
|
||||
call HDF5_write(fileHandle,crystallite_S, 'S')
|
||||
|
||||
groupPlastic = HDF5_addGroup(fileHandle,'constituent')
|
||||
do ph = 1,size(phase_plasticity)
|
||||
write(PlasticItem,*) ph,'_'
|
||||
call HDF5_write(groupPlastic,plasticState(ph)%state,trim(PlasticItem)//'omega_plastic')
|
||||
groupHandle = HDF5_addGroup(fileHandle,'constituent')
|
||||
do i = 1,size(phase_plasticity)
|
||||
write(datasetName,'(i0,a)') i,'_omega_plastic'
|
||||
call HDF5_write(groupHandle,plasticState(i)%state,datasetName)
|
||||
enddo
|
||||
call HDF5_closeGroup(groupPlastic)
|
||||
call HDF5_closeGroup(groupHandle)
|
||||
|
||||
groupHomog = HDF5_addGroup(fileHandle,'materialpoint')
|
||||
do homog = 1, material_Nhomogenization
|
||||
write(HomogItem,*) homog,'_'
|
||||
call HDF5_write(groupHomog,homogState(homog)%state,trim(HomogItem)//'omega_homogenization')
|
||||
groupHandle = HDF5_addGroup(fileHandle,'materialpoint')
|
||||
do i = 1, material_Nhomogenization
|
||||
write(datasetName,'(i0,a)') i,'_omega_homogenization'
|
||||
call HDF5_write(groupHandle,homogState(i)%state,datasetName)
|
||||
enddo
|
||||
call HDF5_closeGroup(groupHomog)
|
||||
call HDF5_closeGroup(groupHandle)
|
||||
|
||||
call HDF5_closeFile(fileHandle)
|
||||
|
||||
|
@ -209,7 +203,7 @@ subroutine CPFEM_results(inc,time)
|
|||
call crystallite_results
|
||||
call homogenization_results
|
||||
call discretization_results
|
||||
call results_removeLink('current') ! ToDo: put this into closeJobFile
|
||||
call results_removeLink('current') ! ToDo: put this into closeJobFile?
|
||||
call results_closeJobFile
|
||||
|
||||
end subroutine CPFEM_results
|
||||
|
|
|
@ -544,6 +544,7 @@ end function IO_lc
|
|||
|
||||
!--------------------------------------------------------------------------------------------------
|
||||
!> @brief returns format string for integer values without leading zeros
|
||||
!> @details deprecated, use '(i0)' format specifier
|
||||
!--------------------------------------------------------------------------------------------------
|
||||
pure function IO_intOut(intToPrint)
|
||||
|
||||
|
|
|
@ -27,7 +27,7 @@ module config
|
|||
config_numerics, &
|
||||
config_debug
|
||||
|
||||
character(len=64), dimension(:), allocatable, public, protected :: &
|
||||
character(len=pStringLen), dimension(:), allocatable, public, protected :: &
|
||||
config_name_phase, & !< name of each phase
|
||||
config_name_homogenization, & !< name of each homogenization
|
||||
config_name_crystallite, & !< name of each crystallite setting
|
||||
|
@ -54,7 +54,7 @@ subroutine config_init
|
|||
character(len=pStringLen), dimension(:), allocatable :: fileContent
|
||||
logical :: fileExists
|
||||
|
||||
write(6,'(/,a)') ' <<<+- config init -+>>>'
|
||||
write(6,'(/,a)') ' <<<+- config init -+>>>'; flush(6)
|
||||
|
||||
verbose = iand(debug_level(debug_material),debug_levelBasic) /= 0
|
||||
|
||||
|
@ -214,7 +214,7 @@ end function read_materialConfig
|
|||
subroutine parse_materialConfig(sectionNames,part,line, &
|
||||
fileContent)
|
||||
|
||||
character(len=64), allocatable, dimension(:), intent(out) :: sectionNames
|
||||
character(len=pStringLen), allocatable, dimension(:), intent(out) :: sectionNames
|
||||
type(tPartitionedStringList), allocatable, dimension(:), intent(inout) :: part
|
||||
character(len=pStringLen), intent(inout) :: line
|
||||
character(len=pStringLen), dimension(:), intent(in) :: fileContent
|
||||
|
@ -222,7 +222,7 @@ subroutine parse_materialConfig(sectionNames,part,line, &
|
|||
integer, allocatable, dimension(:) :: partPosition !< position of [] tags + last line in section
|
||||
integer :: i, j
|
||||
logical :: echo
|
||||
character(len=pStringLen) :: section_ID
|
||||
character(len=pStringLen) :: sectionName
|
||||
|
||||
echo = .false.
|
||||
|
||||
|
@ -246,8 +246,8 @@ subroutine parse_materialConfig(sectionNames,part,line, &
|
|||
partPosition = [partPosition, i] ! needed when actually storing content
|
||||
|
||||
do i = 1, size(partPosition) -1
|
||||
write(section_ID,'('//IO_intOut(size(partPosition))//')') i
|
||||
sectionNames(i) = trim(section_ID)//'_'//trim(adjustl(IO_getTag(fileContent(partPosition(i)),'[',']')))
|
||||
write(sectionName,'(i0,a,a)') i,'_',trim(IO_getTag(fileContent(partPosition(i)),'[',']'))
|
||||
sectionNames(i) = sectionName
|
||||
do j = partPosition(i) + 1, partPosition(i+1) -1
|
||||
call part(i)%add(trim(adjustl(fileContent(j))))
|
||||
enddo
|
||||
|
|
|
@ -103,7 +103,7 @@ program DAMASK_spectral
|
|||
!--------------------------------------------------------------------------------------------------
|
||||
! init DAMASK (all modules)
|
||||
call CPFEM_initAll
|
||||
write(6,'(/,a)') ' <<<+- DAMASK_spectral init -+>>>'
|
||||
write(6,'(/,a)') ' <<<+- DAMASK_spectral init -+>>>'; flush(6)
|
||||
|
||||
write(6,'(/,a)') ' Shanthraj et al., Handbook of Mechanics of Materials, 2019'
|
||||
write(6,'(a)') ' https://doi.org/10.1007/978-981-10-6855-3_80'
|
||||
|
@ -439,19 +439,12 @@ program DAMASK_spectral
|
|||
!--------------------------------------------------------------------------------------------------
|
||||
! report begin of new step
|
||||
write(6,'(/,a)') ' ###########################################################################'
|
||||
write(6,'(1x,a,es12.5'//&
|
||||
',a,'//IO_intOut(inc) //',a,'//IO_intOut(loadCases(currentLoadCase)%incs)//&
|
||||
',a,'//IO_intOut(stepFraction) //',a,'//IO_intOut(subStepFactor**cutBackLevel)//&
|
||||
',a,'//IO_intOut(currentLoadCase)//',a,'//IO_intOut(size(loadCases))//')') &
|
||||
write(6,'(1x,a,es12.5,6(a,i0))') &
|
||||
'Time', time, &
|
||||
's: Increment ', inc,'/',loadCases(currentLoadCase)%incs,&
|
||||
'-', stepFraction,'/',subStepFactor**cutBackLevel,&
|
||||
' of load case ', currentLoadCase,'/',size(loadCases)
|
||||
write(incInfo,&
|
||||
'(a,'//IO_intOut(totalIncsCounter)//&
|
||||
',a,'//IO_intOut(sum(loadCases%incs))//&
|
||||
',a,'//IO_intOut(stepFraction)//&
|
||||
',a,'//IO_intOut(subStepFactor**cutBackLevel)//')') &
|
||||
write(incInfo,'(4(a,i0))') &
|
||||
'Increment ',totalIncsCounter,'/',sum(loadCases%incs),&
|
||||
'-', stepFraction,'/',subStepFactor**cutBackLevel
|
||||
flush(6)
|
||||
|
@ -536,11 +529,9 @@ program DAMASK_spectral
|
|||
cutBackLevel = max(0, cutBackLevel - 1) ! try half number of subincs next inc
|
||||
|
||||
if (all(solres(:)%converged)) then
|
||||
write(6,'(/,a,'//IO_intOut(totalIncsCounter)//',a)') & ! report converged inc
|
||||
' increment ', totalIncsCounter, ' converged'
|
||||
write(6,'(/,a,i0,a)') ' increment ', totalIncsCounter, ' converged'
|
||||
else
|
||||
write(6,'(/,a,'//IO_intOut(totalIncsCounter)//',a)') & ! report non-converged inc
|
||||
' increment ', totalIncsCounter, ' NOT converged'
|
||||
write(6,'(/,a,i0,a)') ' increment ', totalIncsCounter, ' NOT converged'
|
||||
endif; flush(6)
|
||||
|
||||
if (mod(inc,loadCases(currentLoadCase)%outputFrequency) == 0) then ! at output frequency
|
||||
|
|
|
@ -98,12 +98,12 @@ subroutine grid_mech_FEM_init
|
|||
PetscErrorCode :: ierr
|
||||
integer :: rank
|
||||
integer(HID_T) :: fileHandle, groupHandle
|
||||
character(len=1024) :: rankStr
|
||||
character(len=pStringLen) :: fileName
|
||||
real(pReal), dimension(3,3,3,3) :: devNull
|
||||
PetscScalar, pointer, dimension(:,:,:,:) :: &
|
||||
u_current,u_lastInc
|
||||
|
||||
write(6,'(/,a)') ' <<<+- grid_mech_FEM init -+>>>'
|
||||
write(6,'(/,a)') ' <<<+- grid_mech_FEM init -+>>>'; flush(6)
|
||||
|
||||
!--------------------------------------------------------------------------------------------------
|
||||
! set default and user defined options for PETSc
|
||||
|
@ -184,11 +184,10 @@ subroutine grid_mech_FEM_init
|
|||
!--------------------------------------------------------------------------------------------------
|
||||
! init fields
|
||||
restartRead: if (interface_restartInc > 0) then
|
||||
write(6,'(/,a,'//IO_intOut(interface_restartInc)//',a)') &
|
||||
'reading values of increment ', interface_restartInc, ' from file'
|
||||
write(6,'(/,a,i0,a)') ' reading restart data of increment ', interface_restartInc, ' from file'
|
||||
|
||||
write(rankStr,'(a1,i0)')'_',worldrank
|
||||
fileHandle = HDF5_openFile(trim(getSolverJobName())//trim(rankStr)//'.hdf5')
|
||||
write(fileName,'(a,a,i0,a)') trim(getSolverJobName()),'_',worldrank,'.hdf5'
|
||||
fileHandle = HDF5_openFile(fileName)
|
||||
groupHandle = HDF5_openGroup(fileHandle,'solver')
|
||||
|
||||
call HDF5_read(groupHandle,F_aim, 'F_aim')
|
||||
|
@ -214,8 +213,7 @@ subroutine grid_mech_FEM_init
|
|||
CHKERRQ(ierr)
|
||||
|
||||
restartRead2: if (interface_restartInc > 0) then
|
||||
write(6,'(/,a,'//IO_intOut(interface_restartInc)//',a)') &
|
||||
'reading more values of increment ', interface_restartInc, ' from file'
|
||||
write(6,'(/,a,i0,a)') ' reading more restart data of increment ', interface_restartInc, ' from file'
|
||||
call HDF5_read(groupHandle,C_volAvg, 'C_volAvg')
|
||||
call HDF5_read(groupHandle,C_volAvgLastInc,'C_volAvgLastInc')
|
||||
|
||||
|
@ -355,7 +353,7 @@ end subroutine grid_mech_FEM_forward
|
|||
!--------------------------------------------------------------------------------------------------
|
||||
!> @brief Age
|
||||
!--------------------------------------------------------------------------------------------------
|
||||
subroutine grid_mech_FEM_updateCoords()
|
||||
subroutine grid_mech_FEM_updateCoords
|
||||
|
||||
call utilities_updateCoords(F)
|
||||
|
||||
|
@ -365,20 +363,20 @@ end subroutine grid_mech_FEM_updateCoords
|
|||
!--------------------------------------------------------------------------------------------------
|
||||
!> @brief Write current solver and constitutive data for restart to file
|
||||
!--------------------------------------------------------------------------------------------------
|
||||
subroutine grid_mech_FEM_restartWrite()
|
||||
subroutine grid_mech_FEM_restartWrite
|
||||
|
||||
PetscErrorCode :: ierr
|
||||
PetscScalar, dimension(:,:,:,:), pointer :: u_current,u_lastInc
|
||||
integer(HID_T) :: fileHandle, groupHandle
|
||||
character(len=32) :: rankStr
|
||||
PetscScalar, dimension(:,:,:,:), pointer :: u_current,u_lastInc
|
||||
character(len=pStringLen) :: fileName
|
||||
|
||||
call DMDAVecGetArrayF90(mech_grid,solution_current,u_current,ierr); CHKERRQ(ierr)
|
||||
call DMDAVecGetArrayF90(mech_grid,solution_lastInc,u_lastInc,ierr); CHKERRQ(ierr)
|
||||
|
||||
write(6,'(a)') ' writing solver data required for restart to file'; flush(6)
|
||||
|
||||
write(rankStr,'(a1,i0)')'_',worldrank
|
||||
fileHandle = HDF5_openFile(trim(getSolverJobName())//trim(rankStr)//'.hdf5','w')
|
||||
write(fileName,'(a,a,i0,a)') trim(getSolverJobName()),'_',worldrank,'.hdf5'
|
||||
fileHandle = HDF5_openFile(fileName,'w')
|
||||
groupHandle = HDF5_addGroup(fileHandle,'solver')
|
||||
|
||||
call HDF5_write(groupHandle,F_aim, 'F_aim')
|
||||
|
|
|
@ -96,9 +96,9 @@ subroutine grid_mech_spectral_basic_init
|
|||
PetscInt, dimension(worldsize) :: localK
|
||||
integer(HID_T) :: fileHandle, groupHandle
|
||||
integer :: fileUnit
|
||||
character(len=1024) :: rankStr
|
||||
character(len=pStringLen) :: fileName
|
||||
|
||||
write(6,'(/,a)') ' <<<+- grid_mech_spectral_basic init -+>>>'
|
||||
write(6,'(/,a)') ' <<<+- grid_mech_spectral_basic init -+>>>'; flush(6)
|
||||
|
||||
write(6,'(/,a)') ' Eisenlohr et al., International Journal of Plasticity 46:37–53, 2013'
|
||||
write(6,'(a)') ' https://doi.org/10.1016/j.ijplas.2012.09.012'
|
||||
|
@ -151,11 +151,10 @@ subroutine grid_mech_spectral_basic_init
|
|||
call DMDAVecGetArrayF90(da,solution_vec,F,ierr); CHKERRQ(ierr) ! places pointer on PETSc data
|
||||
|
||||
restartRead: if (interface_restartInc > 0) then
|
||||
write(6,'(/,a,'//IO_intOut(interface_restartInc)//',a)') &
|
||||
' reading values of increment ', interface_restartInc, ' from file'
|
||||
write(6,'(/,a,i0,a)') ' reading restart data of increment ', interface_restartInc, ' from file'
|
||||
|
||||
write(rankStr,'(a1,i0)')'_',worldrank
|
||||
fileHandle = HDF5_openFile(trim(getSolverJobName())//trim(rankStr)//'.hdf5')
|
||||
write(fileName,'(a,a,i0,a)') trim(getSolverJobName()),'_',worldrank,'.hdf5'
|
||||
fileHandle = HDF5_openFile(fileName)
|
||||
groupHandle = HDF5_openGroup(fileHandle,'solver')
|
||||
|
||||
call HDF5_read(groupHandle,F_aim, 'F_aim')
|
||||
|
@ -177,8 +176,7 @@ subroutine grid_mech_spectral_basic_init
|
|||
call DMDAVecRestoreArrayF90(da,solution_vec,F,ierr); CHKERRQ(ierr) ! deassociate pointer
|
||||
|
||||
restartRead2: if (interface_restartInc > 0) then
|
||||
write(6,'(/,a,'//IO_intOut(interface_restartInc)//',a)') &
|
||||
'reading more values of increment ', interface_restartInc, ' from file'
|
||||
write(6,'(/,a,i0,a)') ' reading more restart data of increment ', interface_restartInc, ' from file'
|
||||
call HDF5_read(groupHandle,C_volAvg, 'C_volAvg')
|
||||
call HDF5_read(groupHandle,C_volAvgLastInc,'C_volAvgLastInc')
|
||||
|
||||
|
@ -320,7 +318,7 @@ end subroutine grid_mech_spectral_basic_forward
|
|||
!--------------------------------------------------------------------------------------------------
|
||||
!> @brief Age
|
||||
!--------------------------------------------------------------------------------------------------
|
||||
subroutine grid_mech_spectral_basic_updateCoords()
|
||||
subroutine grid_mech_spectral_basic_updateCoords
|
||||
|
||||
PetscErrorCode :: ierr
|
||||
PetscScalar, dimension(:,:,:,:), pointer :: F
|
||||
|
@ -335,19 +333,19 @@ end subroutine grid_mech_spectral_basic_updateCoords
|
|||
!--------------------------------------------------------------------------------------------------
|
||||
!> @brief Write current solver and constitutive data for restart to file
|
||||
!--------------------------------------------------------------------------------------------------
|
||||
subroutine grid_mech_spectral_basic_restartWrite()
|
||||
subroutine grid_mech_spectral_basic_restartWrite
|
||||
|
||||
PetscErrorCode :: ierr
|
||||
PetscScalar, dimension(:,:,:,:), pointer :: F
|
||||
integer(HID_T) :: fileHandle, groupHandle
|
||||
character(len=32) :: rankStr
|
||||
PetscScalar, dimension(:,:,:,:), pointer :: F
|
||||
character(len=pStringLen) :: fileName
|
||||
|
||||
call DMDAVecGetArrayF90(da,solution_vec,F,ierr); CHKERRQ(ierr)
|
||||
|
||||
write(6,'(a)') ' writing solver data required for restart to file'; flush(6)
|
||||
|
||||
write(rankStr,'(a1,i0)')'_',worldrank
|
||||
fileHandle = HDF5_openFile(trim(getSolverJobName())//trim(rankStr)//'.hdf5','w')
|
||||
write(fileName,'(a,a,i0,a)') trim(getSolverJobName()),'_',worldrank,'.hdf5'
|
||||
fileHandle = HDF5_openFile(fileName,'w')
|
||||
groupHandle = HDF5_addGroup(fileHandle,'solver')
|
||||
|
||||
call HDF5_write(groupHandle,F_aim, 'F_aim')
|
||||
|
|
|
@ -105,9 +105,9 @@ subroutine grid_mech_spectral_polarisation_init
|
|||
PetscInt, dimension(worldsize) :: localK
|
||||
integer(HID_T) :: fileHandle, groupHandle
|
||||
integer :: fileUnit
|
||||
character(len=1024) :: rankStr
|
||||
character(len=pStringLen) :: fileName
|
||||
|
||||
write(6,'(/,a)') ' <<<+- grid_mech_spectral_polarisation init -+>>>'
|
||||
write(6,'(/,a)') ' <<<+- grid_mech_spectral_polarisation init -+>>>'; flush(6)
|
||||
|
||||
write(6,'(/,a)') ' Shanthraj et al., International Journal of Plasticity 66:31–45, 2015'
|
||||
write(6,'(a)') ' https://doi.org/10.1016/j.ijplas.2014.02.006'
|
||||
|
@ -161,11 +161,10 @@ subroutine grid_mech_spectral_polarisation_init
|
|||
F_tau => FandF_tau(9:17,:,:,:)
|
||||
|
||||
restartRead: if (interface_restartInc > 0) then
|
||||
write(6,'(/,a,'//IO_intOut(interface_restartInc)//',a)') &
|
||||
' reading values of increment ', interface_restartInc, ' from file'
|
||||
write(6,'(/,a,i0,a)') ' reading restart data of increment ', interface_restartInc, ' from file'
|
||||
|
||||
write(rankStr,'(a1,i0)')'_',worldrank
|
||||
fileHandle = HDF5_openFile(trim(getSolverJobName())//trim(rankStr)//'.hdf5')
|
||||
write(fileName,'(a,a,i0,a)') trim(getSolverJobName()),'_',worldrank,'.hdf5'
|
||||
fileHandle = HDF5_openFile(fileName)
|
||||
groupHandle = HDF5_openGroup(fileHandle,'solver')
|
||||
|
||||
call HDF5_read(groupHandle,F_aim, 'F_aim')
|
||||
|
@ -191,8 +190,7 @@ subroutine grid_mech_spectral_polarisation_init
|
|||
call DMDAVecRestoreArrayF90(da,solution_vec,FandF_tau,ierr); CHKERRQ(ierr) ! deassociate pointer
|
||||
|
||||
restartRead2: if (interface_restartInc > 0) then
|
||||
write(6,'(/,a,'//IO_intOut(interface_restartInc)//',a)') &
|
||||
' reading more values of increment ', interface_restartInc, ' from file'
|
||||
write(6,'(/,a,i0,a)') ' reading more restart data of increment ', interface_restartInc, ' from file'
|
||||
call HDF5_read(groupHandle,C_volAvg, 'C_volAvg')
|
||||
call HDF5_read(groupHandle,C_volAvgLastInc,'C_volAvgLastInc')
|
||||
|
||||
|
@ -364,7 +362,7 @@ end subroutine grid_mech_spectral_polarisation_forward
|
|||
!--------------------------------------------------------------------------------------------------
|
||||
!> @brief Age
|
||||
!--------------------------------------------------------------------------------------------------
|
||||
subroutine grid_mech_spectral_polarisation_updateCoords()
|
||||
subroutine grid_mech_spectral_polarisation_updateCoords
|
||||
|
||||
PetscErrorCode :: ierr
|
||||
PetscScalar, dimension(:,:,:,:), pointer :: FandF_tau
|
||||
|
@ -379,12 +377,12 @@ end subroutine grid_mech_spectral_polarisation_updateCoords
|
|||
!--------------------------------------------------------------------------------------------------
|
||||
!> @brief Write current solver and constitutive data for restart to file
|
||||
!--------------------------------------------------------------------------------------------------
|
||||
subroutine grid_mech_spectral_polarisation_restartWrite()
|
||||
subroutine grid_mech_spectral_polarisation_restartWrite
|
||||
|
||||
PetscErrorCode :: ierr
|
||||
PetscScalar, dimension(:,:,:,:), pointer :: FandF_tau, F, F_tau
|
||||
integer(HID_T) :: fileHandle, groupHandle
|
||||
character(len=32) :: rankStr
|
||||
PetscScalar, dimension(:,:,:,:), pointer :: FandF_tau, F, F_tau
|
||||
character(len=pStringLen) :: fileName
|
||||
|
||||
call DMDAVecGetArrayF90(da,solution_vec,FandF_tau,ierr); CHKERRQ(ierr)
|
||||
F => FandF_tau(0: 8,:,:,:)
|
||||
|
@ -392,8 +390,8 @@ subroutine grid_mech_spectral_polarisation_restartWrite()
|
|||
|
||||
write(6,'(a)') ' writing solver data required for restart to file'; flush(6)
|
||||
|
||||
write(rankStr,'(a1,i0)')'_',worldrank
|
||||
fileHandle = HDF5_openFile(trim(getSolverJobName())//trim(rankStr)//'.hdf5','w')
|
||||
write(fileName,'(a,a,i0,a)') trim(getSolverJobName()),'_',worldrank,'.hdf5'
|
||||
fileHandle = HDF5_openFile(fileName,'w')
|
||||
groupHandle = HDF5_addGroup(fileHandle,'solver')
|
||||
|
||||
call HDF5_write(groupHandle,F_aim, 'F_aim')
|
||||
|
|
|
@ -73,7 +73,7 @@ program DAMASK_FEM
|
|||
!--------------------------------------------------------------------------------------------------
|
||||
! init DAMASK (all modules)
|
||||
call CPFEM_initAll
|
||||
write(6,'(/,a)') ' <<<+- DAMASK_FEM init -+>>>'
|
||||
write(6,'(/,a)') ' <<<+- DAMASK_FEM init -+>>>'; flush(6)
|
||||
|
||||
! reading basic information from load case file and allocate data structure containing load cases
|
||||
call DMGetDimension(geomMesh,dimPlex,ierr); CHKERRA(ierr) !< dimension of mesh (2D or 3D)
|
||||
|
@ -296,19 +296,12 @@ program DAMASK_FEM
|
|||
!--------------------------------------------------------------------------------------------------
|
||||
! report begin of new step
|
||||
write(6,'(/,a)') ' ###########################################################################'
|
||||
write(6,'(1x,a,es12.5'//&
|
||||
',a,'//IO_intOut(inc)//',a,'//IO_intOut(loadCases(currentLoadCase)%incs)//&
|
||||
',a,'//IO_intOut(stepFraction)//',a,'//IO_intOut(subStepFactor**cutBackLevel)//&
|
||||
',a,'//IO_intOut(currentLoadCase)//',a,'//IO_intOut(size(loadCases))//')') &
|
||||
write(6,'(1x,a,es12.5,6(a,i0))')&
|
||||
'Time', time, &
|
||||
's: Increment ', inc, '/', loadCases(currentLoadCase)%incs,&
|
||||
'-', stepFraction, '/', subStepFactor**cutBackLevel,&
|
||||
' of load case ', currentLoadCase,'/',size(loadCases)
|
||||
write(incInfo,&
|
||||
'(a,'//IO_intOut(totalIncsCounter)//&
|
||||
',a,'//IO_intOut(sum(loadCases%incs))//&
|
||||
',a,'//IO_intOut(stepFraction)//&
|
||||
',a,'//IO_intOut(subStepFactor**cutBackLevel)//')') &
|
||||
write(incInfo,'(4(a,i0))') &
|
||||
'Increment ',totalIncsCounter,'/',sum(loadCases%incs),&
|
||||
'-',stepFraction, '/', subStepFactor**cutBackLevel
|
||||
flush(6)
|
||||
|
@ -373,11 +366,9 @@ program DAMASK_FEM
|
|||
cutBackLevel = max(0, cutBackLevel - 1) ! try half number of subincs next inc
|
||||
|
||||
if (all(solres(:)%converged)) then
|
||||
write(6,'(/,a,'//IO_intOut(totalIncsCounter)//',a)') & ! report converged inc
|
||||
' increment ', totalIncsCounter, ' converged'
|
||||
write(6,'(/,a,i0,a)') ' increment ', totalIncsCounter, ' converged'
|
||||
else
|
||||
write(6,'(/,a,'//IO_intOut(totalIncsCounter)//',a)') & ! report non-converged inc
|
||||
' increment ', totalIncsCounter, ' NOT converged'
|
||||
write(6,'(/,a,i0,a)') ' increment ', totalIncsCounter, ' NOT converged'
|
||||
endif; flush(6)
|
||||
|
||||
if (mod(inc,loadCases(currentLoadCase)%outputFrequency) == 0) then ! at output frequency
|
||||
|
|
|
@ -454,7 +454,7 @@ subroutine results_mapping_constituent(phaseAt,memberAt,label)
|
|||
|
||||
integer, dimension(:,:), intent(in) :: phaseAt !< phase section at (constituent,element)
|
||||
integer, dimension(:,:,:), intent(in) :: memberAt !< phase member at (constituent,IP,element)
|
||||
character(len=64), dimension(:), intent(in) :: label !< label of each phase section
|
||||
character(len=pStringLen), dimension(:), intent(in) :: label !< label of each phase section
|
||||
|
||||
integer, dimension(size(memberAt,1),size(memberAt,2),size(memberAt,3)) :: &
|
||||
phaseAt_perIP, &
|
||||
|
@ -589,7 +589,7 @@ subroutine results_mapping_materialpoint(homogenizationAt,memberAt,label)
|
|||
|
||||
integer, dimension(:), intent(in) :: homogenizationAt !< homogenization section at (element)
|
||||
integer, dimension(:,:), intent(in) :: memberAt !< homogenization member at (IP,element)
|
||||
character(len=64), dimension(:), intent(in) :: label !< label of each homogenization section
|
||||
character(len=pStringLen), dimension(:), intent(in) :: label !< label of each homogenization section
|
||||
|
||||
integer, dimension(size(memberAt,1),size(memberAt,2)) :: &
|
||||
homogenizationAt_perIP, &
|
||||
|
|
Loading…
Reference in New Issue