distributing tasks
This commit is contained in:
parent
6a6256dd34
commit
9ce932a082
|
@ -76,8 +76,8 @@ subroutine CPFEM_init
|
||||||
|
|
||||||
integer(HID_T) :: fileHandle
|
integer(HID_T) :: fileHandle
|
||||||
character(len=pStringLen) :: fileName
|
character(len=pStringLen) :: fileName
|
||||||
|
|
||||||
|
|
||||||
print'(/,a)', ' <<<+- CPFEM init -+>>>'; flush(IO_STDOUT)
|
print'(/,a)', ' <<<+- CPFEM init -+>>>'; flush(IO_STDOUT)
|
||||||
|
|
||||||
|
|
||||||
|
@ -86,6 +86,7 @@ subroutine CPFEM_init
|
||||||
write(fileName,'(a,i0,a)') trim(getSolverJobName())//'_',worldrank,'.hdf5'
|
write(fileName,'(a,i0,a)') trim(getSolverJobName())//'_',worldrank,'.hdf5'
|
||||||
fileHandle = HDF5_openFile(fileName)
|
fileHandle = HDF5_openFile(fileName)
|
||||||
|
|
||||||
|
call homogenization_restartRead(fileHandle)
|
||||||
call constitutive_restartRead(fileHandle)
|
call constitutive_restartRead(fileHandle)
|
||||||
|
|
||||||
call HDF5_closeFile(fileHandle)
|
call HDF5_closeFile(fileHandle)
|
||||||
|
@ -98,16 +99,17 @@ end subroutine CPFEM_init
|
||||||
!> @brief Write restart information.
|
!> @brief Write restart information.
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
subroutine CPFEM_restartWrite
|
subroutine CPFEM_restartWrite
|
||||||
|
|
||||||
integer(HID_T) :: fileHandle
|
integer(HID_T) :: fileHandle
|
||||||
character(len=pStringLen) :: fileName
|
character(len=pStringLen) :: fileName
|
||||||
|
|
||||||
|
|
||||||
print*, ' writing field and constitutive data required for restart to file';flush(IO_STDOUT)
|
print*, ' writing field and constitutive data required for restart to file';flush(IO_STDOUT)
|
||||||
|
|
||||||
write(fileName,'(a,i0,a)') trim(getSolverJobName())//'_',worldrank,'.hdf5'
|
write(fileName,'(a,i0,a)') trim(getSolverJobName())//'_',worldrank,'.hdf5'
|
||||||
fileHandle = HDF5_openFile(fileName,'a')
|
fileHandle = HDF5_openFile(fileName,'a')
|
||||||
|
|
||||||
|
call homogenization_restartWrite(fileHandle)
|
||||||
call constitutive_restartWrite(fileHandle)
|
call constitutive_restartWrite(fileHandle)
|
||||||
|
|
||||||
call HDF5_closeFile(fileHandle)
|
call HDF5_closeFile(fileHandle)
|
||||||
|
|
|
@ -15,7 +15,6 @@ module constitutive
|
||||||
use discretization
|
use discretization
|
||||||
use parallelization
|
use parallelization
|
||||||
use HDF5_utilities
|
use HDF5_utilities
|
||||||
use DAMASK_interface
|
|
||||||
use results
|
use results
|
||||||
|
|
||||||
implicit none
|
implicit none
|
||||||
|
@ -161,10 +160,6 @@ module constitutive
|
||||||
end subroutine damage_results
|
end subroutine damage_results
|
||||||
|
|
||||||
|
|
||||||
module subroutine mech_restart_read(fileHandle)
|
|
||||||
integer(HID_T), intent(in) :: fileHandle
|
|
||||||
end subroutine mech_restart_read
|
|
||||||
|
|
||||||
module subroutine mech_initializeRestorationPoints(ph,me)
|
module subroutine mech_initializeRestorationPoints(ph,me)
|
||||||
integer, intent(in) :: ph, me
|
integer, intent(in) :: ph, me
|
||||||
end subroutine mech_initializeRestorationPoints
|
end subroutine mech_initializeRestorationPoints
|
||||||
|
@ -193,6 +188,16 @@ module constitutive
|
||||||
real(pReal), dimension(3,3,3,3) :: dPdF
|
real(pReal), dimension(3,3,3,3) :: dPdF
|
||||||
end function constitutive_mech_dPdF
|
end function constitutive_mech_dPdF
|
||||||
|
|
||||||
|
module subroutine mech_restartWrite(groupHandle,ph)
|
||||||
|
integer(HID_T), intent(in) :: groupHandle
|
||||||
|
integer, intent(in) :: ph
|
||||||
|
end subroutine mech_restartWrite
|
||||||
|
|
||||||
|
module subroutine mech_restartRead(groupHandle,ph)
|
||||||
|
integer(HID_T), intent(in) :: groupHandle
|
||||||
|
integer, intent(in) :: ph
|
||||||
|
end subroutine mech_restartRead
|
||||||
|
|
||||||
! == cleaned:end ===================================================================================
|
! == cleaned:end ===================================================================================
|
||||||
|
|
||||||
module function crystallite_stress(dt,co,ip,el) result(converged_)
|
module function crystallite_stress(dt,co,ip,el) result(converged_)
|
||||||
|
@ -798,7 +803,7 @@ subroutine constitutive_forward
|
||||||
|
|
||||||
integer :: ph, so
|
integer :: ph, so
|
||||||
|
|
||||||
|
|
||||||
call constitutive_mech_forward()
|
call constitutive_mech_forward()
|
||||||
|
|
||||||
do ph = 1, size(sourceState)
|
do ph = 1, size(sourceState)
|
||||||
|
@ -1017,7 +1022,7 @@ function crystallite_push33ToRef(co,ip,el, tensor33)
|
||||||
ip, &
|
ip, &
|
||||||
co
|
co
|
||||||
real(pReal), dimension(3,3) :: crystallite_push33ToRef
|
real(pReal), dimension(3,3) :: crystallite_push33ToRef
|
||||||
|
|
||||||
real(pReal), dimension(3,3) :: T
|
real(pReal), dimension(3,3) :: T
|
||||||
|
|
||||||
|
|
||||||
|
@ -1152,82 +1157,58 @@ end function converged
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
!> @brief Write current restart information (Field and constitutive data) to file.
|
!> @brief Write current restart information (Field and constitutive data) to file.
|
||||||
! ToDo: Merge data into one file for MPI, move state to constitutive and homogenization, respectively
|
! ToDo: Merge data into one file for MPI
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
subroutine constitutive_restartWrite(fileHandle)
|
subroutine constitutive_restartWrite(fileHandle)
|
||||||
|
|
||||||
integer(HID_T), intent(in) :: fileHandle
|
integer(HID_T), intent(in) :: fileHandle
|
||||||
|
|
||||||
|
integer(HID_T), dimension(2) :: groupHandle
|
||||||
integer :: ph
|
integer :: ph
|
||||||
integer(HID_T) :: groupHandle
|
|
||||||
character(len=pStringLen) :: datasetName
|
|
||||||
|
|
||||||
groupHandle = HDF5_addGroup(fileHandle,'phase')
|
|
||||||
do ph = 1,size(material_name_phase)
|
groupHandle(1) = HDF5_addGroup(fileHandle,'phase')
|
||||||
write(datasetName,'(i0,a)') ph,'_omega'
|
|
||||||
call HDF5_write(groupHandle,plasticState(ph)%state,datasetName)
|
do ph = 1, size(material_name_phase)
|
||||||
write(datasetName,'(i0,a)') ph,'_F_i'
|
|
||||||
call HDF5_write(groupHandle,constitutive_mech_Fi(ph)%data,datasetName)
|
groupHandle(2) = HDF5_addGroup(groupHandle(1),material_name_phase(ph))
|
||||||
write(datasetName,'(i0,a)') ph,'_L_i'
|
|
||||||
call HDF5_write(groupHandle,constitutive_mech_Li(ph)%data,datasetName)
|
call mech_restartWrite(groupHandle(2),ph)
|
||||||
write(datasetName,'(i0,a)') ph,'_L_p'
|
|
||||||
call HDF5_write(groupHandle,constitutive_mech_Lp(ph)%data,datasetName)
|
call HDF5_closeGroup(groupHandle(2))
|
||||||
write(datasetName,'(i0,a)') ph,'_F_p'
|
|
||||||
call HDF5_write(groupHandle,constitutive_mech_Fp(ph)%data,datasetName)
|
|
||||||
write(datasetName,'(i0,a)') ph,'_S'
|
|
||||||
call HDF5_write(groupHandle,constitutive_mech_S(ph)%data,datasetName)
|
|
||||||
write(datasetName,'(i0,a)') ph,'_F'
|
|
||||||
call HDF5_write(groupHandle,constitutive_mech_F(ph)%data,datasetName)
|
|
||||||
enddo
|
enddo
|
||||||
call HDF5_closeGroup(groupHandle)
|
|
||||||
|
|
||||||
groupHandle = HDF5_addGroup(fileHandle,'homogenization')
|
|
||||||
do ph = 1, size(material_name_homogenization)
|
|
||||||
write(datasetName,'(i0,a)') ph,'_omega'
|
|
||||||
call HDF5_write(groupHandle,homogState(ph)%state,datasetName)
|
|
||||||
enddo
|
|
||||||
call HDF5_closeGroup(groupHandle)
|
|
||||||
|
|
||||||
|
call HDF5_closeGroup(groupHandle(1))
|
||||||
|
|
||||||
end subroutine constitutive_restartWrite
|
end subroutine constitutive_restartWrite
|
||||||
|
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
!> @brief Read data for restart
|
!> @brief Read data for restart
|
||||||
! ToDo: Merge data into one file for MPI, move state to constitutive and homogenization, respectively
|
! ToDo: Merge data into one file for MPI
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
subroutine constitutive_restartRead(fileHandle)
|
subroutine constitutive_restartRead(fileHandle)
|
||||||
|
|
||||||
integer(HID_T), intent(in) :: fileHandle
|
integer(HID_T), intent(in) :: fileHandle
|
||||||
|
|
||||||
|
integer(HID_T), dimension(2) :: groupHandle
|
||||||
integer :: ph
|
integer :: ph
|
||||||
integer(HID_T) :: groupHandle
|
|
||||||
character(len=pStringLen) ::datasetName
|
|
||||||
|
|
||||||
|
|
||||||
groupHandle = HDF5_openGroup(fileHandle,'phase')
|
groupHandle(1) = HDF5_openGroup(fileHandle,'phase')
|
||||||
do ph = 1,size(material_name_phase)
|
|
||||||
write(datasetName,'(i0,a)') ph,'_omega'
|
do ph = 1, size(material_name_phase)
|
||||||
call HDF5_read(groupHandle,plasticState(ph)%state0,datasetName)
|
|
||||||
write(datasetName,'(i0,a)') ph,'_F_i'
|
groupHandle(2) = HDF5_openGroup(groupHandle(1),material_name_phase(ph))
|
||||||
call HDF5_read(groupHandle,constitutive_mech_Fi0(ph)%data,datasetName)
|
|
||||||
write(datasetName,'(i0,a)') ph,'_L_i'
|
call mech_restartRead(groupHandle(2),ph)
|
||||||
call HDF5_read(groupHandle,constitutive_mech_Li0(ph)%data,datasetName)
|
|
||||||
write(datasetName,'(i0,a)') ph,'_L_p'
|
call HDF5_closeGroup(groupHandle(2))
|
||||||
call HDF5_read(groupHandle,constitutive_mech_Lp0(ph)%data,datasetName)
|
|
||||||
write(datasetName,'(i0,a)') ph,'_F_p'
|
|
||||||
call HDF5_read(groupHandle,constitutive_mech_Fp0(ph)%data,datasetName)
|
|
||||||
write(datasetName,'(i0,a)') ph,'_S'
|
|
||||||
call HDF5_read(groupHandle,constitutive_mech_S0(ph)%data,datasetName)
|
|
||||||
write(datasetName,'(i0,a)') ph,'_F'
|
|
||||||
call HDF5_read(groupHandle,constitutive_mech_F0(ph)%data,datasetName)
|
|
||||||
enddo
|
enddo
|
||||||
call HDF5_closeGroup(groupHandle)
|
|
||||||
|
|
||||||
groupHandle = HDF5_openGroup(fileHandle,'homogenization')
|
call HDF5_closeGroup(groupHandle(1))
|
||||||
do ph = 1,size(material_name_homogenization)
|
|
||||||
write(datasetName,'(i0,a)') ph,'_omega'
|
|
||||||
call HDF5_read(groupHandle,homogState(ph)%state0,datasetName)
|
|
||||||
enddo
|
|
||||||
call HDF5_closeGroup(groupHandle)
|
|
||||||
|
|
||||||
end subroutine constitutive_restartRead
|
end subroutine constitutive_restartRead
|
||||||
|
|
||||||
|
@ -1273,7 +1254,7 @@ function constitutive_thermal_T(co,ip,el) result(T)
|
||||||
|
|
||||||
integer, intent(in) :: co, ip, el
|
integer, intent(in) :: co, ip, el
|
||||||
real(pReal) :: T
|
real(pReal) :: T
|
||||||
|
|
||||||
integer :: ho, tme
|
integer :: ho, tme
|
||||||
|
|
||||||
ho = material_homogenizationAt(el)
|
ho = material_homogenizationAt(el)
|
||||||
|
|
|
@ -364,7 +364,7 @@ module subroutine mech_init
|
||||||
allocate(constitutive_mech_F(ph)%data(3,3,Nconstituents))
|
allocate(constitutive_mech_F(ph)%data(3,3,Nconstituents))
|
||||||
allocate(constitutive_mech_F0(ph)%data(3,3,Nconstituents))
|
allocate(constitutive_mech_F0(ph)%data(3,3,Nconstituents))
|
||||||
allocate(constitutive_mech_partitionedF0(ph)%data(3,3,Nconstituents))
|
allocate(constitutive_mech_partitionedF0(ph)%data(3,3,Nconstituents))
|
||||||
|
|
||||||
phase => phases%get(ph)
|
phase => phases%get(ph)
|
||||||
mech => phase%get('mechanics')
|
mech => phase%get('mechanics')
|
||||||
#if defined(__GFORTRAN__)
|
#if defined(__GFORTRAN__)
|
||||||
|
@ -403,13 +403,13 @@ module subroutine mech_init
|
||||||
|
|
||||||
ph = material_phaseAt(co,el)
|
ph = material_phaseAt(co,el)
|
||||||
me = material_phaseMemberAt(co,ip,el)
|
me = material_phaseMemberAt(co,ip,el)
|
||||||
|
|
||||||
constitutive_mech_Fp0(ph)%data(1:3,1:3,me) = material_orientation0(co,ip,el)%asMatrix() ! Fp reflects initial orientation (see 10.1016/j.actamat.2006.01.005)
|
constitutive_mech_Fp0(ph)%data(1:3,1:3,me) = material_orientation0(co,ip,el)%asMatrix() ! Fp reflects initial orientation (see 10.1016/j.actamat.2006.01.005)
|
||||||
constitutive_mech_Fp0(ph)%data(1:3,1:3,me) = constitutive_mech_Fp0(ph)%data(1:3,1:3,me) &
|
constitutive_mech_Fp0(ph)%data(1:3,1:3,me) = constitutive_mech_Fp0(ph)%data(1:3,1:3,me) &
|
||||||
/ math_det33(constitutive_mech_Fp0(ph)%data(1:3,1:3,me))**(1.0_pReal/3.0_pReal)
|
/ math_det33(constitutive_mech_Fp0(ph)%data(1:3,1:3,me))**(1.0_pReal/3.0_pReal)
|
||||||
constitutive_mech_Fi0(ph)%data(1:3,1:3,me) = math_I3
|
constitutive_mech_Fi0(ph)%data(1:3,1:3,me) = math_I3
|
||||||
constitutive_mech_F0(ph)%data(1:3,1:3,me) = math_I3
|
constitutive_mech_F0(ph)%data(1:3,1:3,me) = math_I3
|
||||||
|
|
||||||
constitutive_mech_Fe(ph)%data(1:3,1:3,me) = math_inv33(matmul(constitutive_mech_Fi0(ph)%data(1:3,1:3,me), &
|
constitutive_mech_Fe(ph)%data(1:3,1:3,me) = math_inv33(matmul(constitutive_mech_Fi0(ph)%data(1:3,1:3,me), &
|
||||||
constitutive_mech_Fp0(ph)%data(1:3,1:3,me))) ! assuming that euler angles are given in internal strain free configuration
|
constitutive_mech_Fp0(ph)%data(1:3,1:3,me))) ! assuming that euler angles are given in internal strain free configuration
|
||||||
constitutive_mech_Fp(ph)%data(1:3,1:3,me) = constitutive_mech_Fp0(ph)%data(1:3,1:3,me)
|
constitutive_mech_Fp(ph)%data(1:3,1:3,me) = constitutive_mech_Fp0(ph)%data(1:3,1:3,me)
|
||||||
|
@ -568,16 +568,16 @@ module subroutine constitutive_plastic_dependentState(co, ip, el)
|
||||||
instance = phase_plasticityInstance(material_phaseAt(co,el))
|
instance = phase_plasticityInstance(material_phaseAt(co,el))
|
||||||
|
|
||||||
plasticityType: select case (phase_plasticity(material_phaseAt(co,el)))
|
plasticityType: select case (phase_plasticity(material_phaseAt(co,el)))
|
||||||
|
|
||||||
case (PLASTICITY_DISLOTWIN_ID) plasticityType
|
case (PLASTICITY_DISLOTWIN_ID) plasticityType
|
||||||
call plastic_dislotwin_dependentState(temperature(ho)%p(tme),instance,me)
|
call plastic_dislotwin_dependentState(temperature(ho)%p(tme),instance,me)
|
||||||
|
|
||||||
case (PLASTICITY_DISLOTUNGSTEN_ID) plasticityType
|
case (PLASTICITY_DISLOTUNGSTEN_ID) plasticityType
|
||||||
call plastic_dislotungsten_dependentState(instance,me)
|
call plastic_dislotungsten_dependentState(instance,me)
|
||||||
|
|
||||||
case (PLASTICITY_NONLOCAL_ID) plasticityType
|
case (PLASTICITY_NONLOCAL_ID) plasticityType
|
||||||
call plastic_nonlocal_dependentState(instance,me,ip,el)
|
call plastic_nonlocal_dependentState(instance,me,ip,el)
|
||||||
|
|
||||||
end select plasticityType
|
end select plasticityType
|
||||||
|
|
||||||
end subroutine constitutive_plastic_dependentState
|
end subroutine constitutive_plastic_dependentState
|
||||||
|
@ -675,7 +675,7 @@ function mech_collectDotState(subdt,co,ip,el,ph,of) result(broken)
|
||||||
tme, & !< thermal member position
|
tme, & !< thermal member position
|
||||||
instance
|
instance
|
||||||
logical :: broken
|
logical :: broken
|
||||||
|
|
||||||
ho = material_homogenizationAt(el)
|
ho = material_homogenizationAt(el)
|
||||||
tme = material_homogenizationMemberAt(ip,el)
|
tme = material_homogenizationMemberAt(ip,el)
|
||||||
instance = phase_plasticityInstance(ph)
|
instance = phase_plasticityInstance(ph)
|
||||||
|
@ -723,14 +723,14 @@ function constitutive_deltaState(co, ip, el, ph, of) result(broken)
|
||||||
of
|
of
|
||||||
logical :: &
|
logical :: &
|
||||||
broken
|
broken
|
||||||
|
|
||||||
real(pReal), dimension(3,3) :: &
|
real(pReal), dimension(3,3) :: &
|
||||||
Mp
|
Mp
|
||||||
integer :: &
|
integer :: &
|
||||||
instance, &
|
instance, &
|
||||||
myOffset, &
|
myOffset, &
|
||||||
mySize
|
mySize
|
||||||
|
|
||||||
|
|
||||||
Mp = matmul(matmul(transpose(constitutive_mech_Fi(ph)%data(1:3,1:3,of)),&
|
Mp = matmul(matmul(transpose(constitutive_mech_Fi(ph)%data(1:3,1:3,of)),&
|
||||||
constitutive_mech_Fi(ph)%data(1:3,1:3,of)),constitutive_mech_S(ph)%data(1:3,1:3,of))
|
constitutive_mech_Fi(ph)%data(1:3,1:3,of)),constitutive_mech_S(ph)%data(1:3,1:3,of))
|
||||||
|
@ -799,10 +799,6 @@ module subroutine mech_results(group,ph)
|
||||||
|
|
||||||
end subroutine mech_results
|
end subroutine mech_results
|
||||||
|
|
||||||
module subroutine mech_restart_read(fileHandle)
|
|
||||||
integer(HID_T), intent(in) :: fileHandle
|
|
||||||
end subroutine mech_restart_read
|
|
||||||
|
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
!> @brief calculation of stress (P) with time integration based on a residuum in Lp and
|
!> @brief calculation of stress (P) with time integration based on a residuum in Lp and
|
||||||
|
@ -874,7 +870,7 @@ function integrateStress(F,subFp0,subFi0,Delta_t,co,ip,el) result(broken)
|
||||||
|
|
||||||
ph = material_phaseAt(co,el)
|
ph = material_phaseAt(co,el)
|
||||||
me = material_phaseMemberAt(co,ip,el)
|
me = material_phaseMemberAt(co,ip,el)
|
||||||
|
|
||||||
call constitutive_plastic_dependentState(co,ip,el)
|
call constitutive_plastic_dependentState(co,ip,el)
|
||||||
|
|
||||||
Lpguess = constitutive_mech_Lp(ph)%data(1:3,1:3,me) ! take as first guess
|
Lpguess = constitutive_mech_Lp(ph)%data(1:3,1:3,me) ! take as first guess
|
||||||
|
@ -1815,5 +1811,39 @@ module function constitutive_mech_dPdF(dt,co,ip,el) result(dPdF)
|
||||||
|
|
||||||
end function constitutive_mech_dPdF
|
end function constitutive_mech_dPdF
|
||||||
|
|
||||||
|
|
||||||
|
module subroutine mech_restartWrite(groupHandle,ph)
|
||||||
|
|
||||||
|
integer(HID_T), intent(in) :: groupHandle
|
||||||
|
integer, intent(in) :: ph
|
||||||
|
|
||||||
|
|
||||||
|
call HDF5_write(groupHandle,plasticState(ph)%state,'omega')
|
||||||
|
call HDF5_write(groupHandle,constitutive_mech_Fi(ph)%data,'F_i')
|
||||||
|
call HDF5_write(groupHandle,constitutive_mech_Li(ph)%data,'L_i')
|
||||||
|
call HDF5_write(groupHandle,constitutive_mech_Lp(ph)%data,'L_p')
|
||||||
|
call HDF5_write(groupHandle,constitutive_mech_Fp(ph)%data,'F_p')
|
||||||
|
call HDF5_write(groupHandle,constitutive_mech_S(ph)%data,'S')
|
||||||
|
call HDF5_write(groupHandle,constitutive_mech_F(ph)%data,'F')
|
||||||
|
|
||||||
|
end subroutine mech_restartWrite
|
||||||
|
|
||||||
|
|
||||||
|
module subroutine mech_restartRead(groupHandle,ph)
|
||||||
|
|
||||||
|
integer(HID_T), intent(in) :: groupHandle
|
||||||
|
integer, intent(in) :: ph
|
||||||
|
|
||||||
|
|
||||||
|
call HDF5_read(groupHandle,plasticState(ph)%state0,'omega')
|
||||||
|
call HDF5_read(groupHandle,constitutive_mech_Fi0(ph)%data,'F_i')
|
||||||
|
call HDF5_read(groupHandle,constitutive_mech_Li0(ph)%data,'L_i')
|
||||||
|
call HDF5_read(groupHandle,constitutive_mech_Lp0(ph)%data,'L_p')
|
||||||
|
call HDF5_read(groupHandle,constitutive_mech_Fp0(ph)%data,'F_p')
|
||||||
|
call HDF5_read(groupHandle,constitutive_mech_S0(ph)%data,'S')
|
||||||
|
call HDF5_read(groupHandle,constitutive_mech_F0(ph)%data,'F')
|
||||||
|
|
||||||
|
end subroutine mech_restartRead
|
||||||
|
|
||||||
end submodule constitutive_mech
|
end submodule constitutive_mech
|
||||||
|
|
||||||
|
|
|
@ -16,6 +16,7 @@ module homogenization
|
||||||
use thermal_conduction
|
use thermal_conduction
|
||||||
use damage_none
|
use damage_none
|
||||||
use damage_nonlocal
|
use damage_nonlocal
|
||||||
|
use HDF5_utilities
|
||||||
use results
|
use results
|
||||||
|
|
||||||
implicit none
|
implicit none
|
||||||
|
@ -92,7 +93,9 @@ module homogenization
|
||||||
homogenization_init, &
|
homogenization_init, &
|
||||||
materialpoint_stressAndItsTangent, &
|
materialpoint_stressAndItsTangent, &
|
||||||
homogenization_forward, &
|
homogenization_forward, &
|
||||||
homogenization_results
|
homogenization_results, &
|
||||||
|
homogenization_restartRead, &
|
||||||
|
homogenization_restartWrite
|
||||||
|
|
||||||
contains
|
contains
|
||||||
|
|
||||||
|
@ -315,4 +318,59 @@ subroutine homogenization_forward
|
||||||
|
|
||||||
end subroutine homogenization_forward
|
end subroutine homogenization_forward
|
||||||
|
|
||||||
|
|
||||||
|
!--------------------------------------------------------------------------------------------------
|
||||||
|
!--------------------------------------------------------------------------------------------------
|
||||||
|
subroutine homogenization_restartWrite(fileHandle)
|
||||||
|
|
||||||
|
integer(HID_T), intent(in) :: fileHandle
|
||||||
|
|
||||||
|
integer(HID_T), dimension(2) :: groupHandle
|
||||||
|
integer :: ho
|
||||||
|
|
||||||
|
|
||||||
|
groupHandle(1) = HDF5_addGroup(fileHandle,'homogenization')
|
||||||
|
|
||||||
|
do ho = 1, size(material_name_homogenization)
|
||||||
|
|
||||||
|
groupHandle(2) = HDF5_addGroup(groupHandle(1),material_name_homogenization(ho))
|
||||||
|
|
||||||
|
call HDF5_read(groupHandle(2),homogState(ho)%state,'omega') ! ToDo: should be done by mech
|
||||||
|
|
||||||
|
call HDF5_closeGroup(groupHandle(2))
|
||||||
|
|
||||||
|
enddo
|
||||||
|
|
||||||
|
call HDF5_closeGroup(groupHandle(1))
|
||||||
|
|
||||||
|
end subroutine homogenization_restartWrite
|
||||||
|
|
||||||
|
|
||||||
|
!--------------------------------------------------------------------------------------------------
|
||||||
|
!--------------------------------------------------------------------------------------------------
|
||||||
|
subroutine homogenization_restartRead(fileHandle)
|
||||||
|
|
||||||
|
integer(HID_T), intent(in) :: fileHandle
|
||||||
|
|
||||||
|
integer(HID_T), dimension(2) :: groupHandle
|
||||||
|
integer :: ho
|
||||||
|
|
||||||
|
|
||||||
|
groupHandle(1) = HDF5_openGroup(fileHandle,'homogenization')
|
||||||
|
|
||||||
|
do ho = 1, size(material_name_homogenization)
|
||||||
|
|
||||||
|
groupHandle(2) = HDF5_openGroup(groupHandle(1),material_name_homogenization(ho))
|
||||||
|
|
||||||
|
call HDF5_write(groupHandle(2),homogState(ho)%state,'omega') ! ToDo: should be done by mech
|
||||||
|
|
||||||
|
call HDF5_closeGroup(groupHandle(2))
|
||||||
|
|
||||||
|
enddo
|
||||||
|
|
||||||
|
call HDF5_closeGroup(groupHandle(1))
|
||||||
|
|
||||||
|
end subroutine homogenization_restartRead
|
||||||
|
|
||||||
|
|
||||||
end module homogenization
|
end module homogenization
|
||||||
|
|
Loading…
Reference in New Issue