mapping for materialpoint/homogenization
HDF5 file writing active for MSC.Marc/Abaqus (optional)
This commit is contained in:
parent
049cd96bbf
commit
7c30be47b0
|
@ -72,6 +72,12 @@ subroutine CPFEM_initAll(el,ip)
|
||||||
mesh_init
|
mesh_init
|
||||||
use material, only: &
|
use material, only: &
|
||||||
material_init
|
material_init
|
||||||
|
#ifdef DAMASK_HDF5
|
||||||
|
use HDF5_utilities, only: &
|
||||||
|
HDF5_utilities_init
|
||||||
|
use results, only: &
|
||||||
|
results_init
|
||||||
|
#endif
|
||||||
use lattice, only: &
|
use lattice, only: &
|
||||||
lattice_init
|
lattice_init
|
||||||
use constitutive, only: &
|
use constitutive, only: &
|
||||||
|
@ -100,6 +106,10 @@ subroutine CPFEM_initAll(el,ip)
|
||||||
call FE_init
|
call FE_init
|
||||||
call mesh_init(ip, el)
|
call mesh_init(ip, el)
|
||||||
call lattice_init
|
call lattice_init
|
||||||
|
#ifdef DAMASK_HDF5
|
||||||
|
call HDF5_utilities_init
|
||||||
|
call results_init
|
||||||
|
#endif
|
||||||
call material_init
|
call material_init
|
||||||
call constitutive_init
|
call constitutive_init
|
||||||
call crystallite_init
|
call crystallite_init
|
||||||
|
|
|
@ -274,7 +274,7 @@ contains
|
||||||
!> material.config
|
!> material.config
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
subroutine material_init
|
subroutine material_init
|
||||||
#ifdef DAMASK_HDF5
|
#if defined(PETSc) || defined(DAMASK_HDF5)
|
||||||
use results
|
use results
|
||||||
#endif
|
#endif
|
||||||
use IO, only: &
|
use IO, only: &
|
||||||
|
@ -413,9 +413,10 @@ subroutine material_init
|
||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
|
|
||||||
#ifdef DAMASK_HDF5
|
#if defined(PETSc) || defined(DAMASK_HDF5)
|
||||||
call results_openJobFile
|
call results_openJobFile
|
||||||
call results_mapping_constituent(material_phaseAt,material_phaseMemberAt,phase_name)
|
call results_mapping_constituent(material_phaseAt,material_phaseMemberAt,phase_name)
|
||||||
|
call results_mapping_materialpoint(material_homogenizationAt,material_homogenizationMemberAt,homogenization_name)
|
||||||
call results_closeJobFile
|
call results_closeJobFile
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -21,7 +21,7 @@ module numerics
|
||||||
pert_method = 1_pInt, & !< method used in perturbation technique for tangent
|
pert_method = 1_pInt, & !< method used in perturbation technique for tangent
|
||||||
randomSeed = 0_pInt, & !< fixed seeding for pseudo-random number generator, Default 0: use random seed
|
randomSeed = 0_pInt, & !< fixed seeding for pseudo-random number generator, Default 0: use random seed
|
||||||
worldrank = 0_pInt, & !< MPI worldrank (/=0 for MPI simulations only)
|
worldrank = 0_pInt, & !< MPI worldrank (/=0 for MPI simulations only)
|
||||||
worldsize = 0_pInt, & !< MPI worldsize (/=0 for MPI simulations only)
|
worldsize = 1_pInt, & !< MPI worldsize (/=1 for MPI simulations only)
|
||||||
numerics_integrator = 1_pInt !< method used for state integration Default 1: fix-point iteration
|
numerics_integrator = 1_pInt !< method used for state integration Default 1: fix-point iteration
|
||||||
integer(4), protected, public :: &
|
integer(4), protected, public :: &
|
||||||
DAMASK_NumThreadsInt = 0 !< value stored in environment variable DAMASK_NUM_THREADS, set to zero if no OpenMP directive
|
DAMASK_NumThreadsInt = 0 !< value stored in environment variable DAMASK_NUM_THREADS, set to zero if no OpenMP directive
|
||||||
|
|
393
src/results.f90
393
src/results.f90
|
@ -34,7 +34,8 @@ module results
|
||||||
results_setLink, &
|
results_setLink, &
|
||||||
results_addAttribute, &
|
results_addAttribute, &
|
||||||
results_removeLink, &
|
results_removeLink, &
|
||||||
results_mapping_constituent
|
results_mapping_constituent, &
|
||||||
|
results_mapping_materialpoint
|
||||||
contains
|
contains
|
||||||
|
|
||||||
subroutine results_init
|
subroutine results_init
|
||||||
|
@ -167,7 +168,7 @@ subroutine results_removeLink(link)
|
||||||
integer :: hdferr
|
integer :: hdferr
|
||||||
|
|
||||||
call h5ldelete_f(resultsFile,link, hdferr)
|
call h5ldelete_f(resultsFile,link, hdferr)
|
||||||
if (hdferr < 0) call IO_error(1_pInt,ext_msg = 'results_removeLink: h5ldelete_soft_f ('//trim(link)//')')
|
if (hdferr < 0) call IO_error(1,ext_msg = 'results_removeLink: h5ldelete_soft_f ('//trim(link)//')')
|
||||||
|
|
||||||
end subroutine results_removeLink
|
end subroutine results_removeLink
|
||||||
|
|
||||||
|
@ -315,7 +316,7 @@ subroutine results_mapping_constituent(phaseAt,memberAt,label)
|
||||||
worldsize
|
worldsize
|
||||||
|
|
||||||
integer, dimension(:,:), intent(in) :: phaseAt !< phase section at (constituent,element)
|
integer, dimension(:,:), intent(in) :: phaseAt !< phase section at (constituent,element)
|
||||||
integer, dimension(:,:,:), intent(in) :: memberAt !< phase member at (constituent,IP, 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=64), dimension(:), intent(in) :: label !< label of each phase section
|
||||||
|
|
||||||
integer, dimension(size(memberAt,1),size(memberAt,2),size(memberAt,3)) :: &
|
integer, dimension(size(memberAt,1),size(memberAt,2),size(memberAt,3)) :: &
|
||||||
|
@ -379,13 +380,13 @@ subroutine results_mapping_constituent(phaseAt,memberAt,label)
|
||||||
! MPI settings and communication
|
! MPI settings and communication
|
||||||
#ifdef PETSc
|
#ifdef PETSc
|
||||||
call h5pset_dxpl_mpio_f(plist_id, H5FD_MPIO_COLLECTIVE_F, ierr)
|
call h5pset_dxpl_mpio_f(plist_id, H5FD_MPIO_COLLECTIVE_F, ierr)
|
||||||
if (ierr < 0) call IO_error(1,ext_msg='HDF5_mapping_phase: h5pset_dxpl_mpio_f')
|
if (ierr < 0) call IO_error(1,ext_msg='results_mapping_constituent: h5pset_dxpl_mpio_f')
|
||||||
|
|
||||||
call MPI_allreduce(MPI_IN_PLACE,writeSize,worldsize,MPI_INT,MPI_SUM,PETSC_COMM_WORLD,ierr) ! get output at each process
|
call MPI_allreduce(MPI_IN_PLACE,writeSize,worldsize,MPI_INT,MPI_SUM,PETSC_COMM_WORLD,ierr) ! get output at each process
|
||||||
if (ierr /= 0) call IO_error(894_pInt,ext_msg='HDF5_mapping_phase: MPI_allreduce/writeSize')
|
if (ierr /= 0) call IO_error(894,ext_msg='results_mapping_constituent: MPI_allreduce/writeSize')
|
||||||
|
|
||||||
call MPI_allreduce(MPI_IN_PLACE,memberOffset,size(memberOffset),MPI_INT,MPI_SUM,PETSC_COMM_WORLD,ierr) ! get offset at each process
|
call MPI_allreduce(MPI_IN_PLACE,memberOffset,size(memberOffset),MPI_INT,MPI_SUM,PETSC_COMM_WORLD,ierr) ! get offset at each process
|
||||||
if (ierr /= 0) call IO_error(894_pInt,ext_msg='HDF5_mapping_phase: MPI_allreduce/memberOffset')
|
if (ierr /= 0) call IO_error(894,ext_msg='results_mapping_constituent: MPI_allreduce/memberOffset')
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
myShape = int([size(phaseAt,1),writeSize(worldrank)], HSIZE_T)
|
myShape = int([size(phaseAt,1),writeSize(worldrank)], HSIZE_T)
|
||||||
|
@ -395,13 +396,13 @@ subroutine results_mapping_constituent(phaseAt,memberAt,label)
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
! create dataspace in memory (local shape = hyperslab) and in file (global shape)
|
! create dataspace in memory (local shape = hyperslab) and in file (global shape)
|
||||||
call h5screate_simple_f(2,myShape,memspace_id,ierr,myShape)
|
call h5screate_simple_f(2,myShape,memspace_id,ierr,myShape)
|
||||||
if (ierr < 0) call IO_error(1_pInt,ext_msg='HDF5_mapping_phase: h5screate_simple_f/memspace_id')
|
if (ierr < 0) call IO_error(1,ext_msg='results_mapping_constituent: h5screate_simple_f/memspace_id')
|
||||||
|
|
||||||
call h5screate_simple_f(2,totalShape,filespace_id,ierr,totalShape)
|
call h5screate_simple_f(2,totalShape,filespace_id,ierr,totalShape)
|
||||||
if (ierr < 0) call IO_error(1_pInt,ext_msg='HDF5_mapping_phase: h5screate_simple_f/filespace_id')
|
if (ierr < 0) call IO_error(1,ext_msg='results_mapping_constituent: h5screate_simple_f/filespace_id')
|
||||||
|
|
||||||
call h5sselect_hyperslab_f(filespace_id, H5S_SELECT_SET_F, myOffset, myShape, ierr)
|
call h5sselect_hyperslab_f(filespace_id, H5S_SELECT_SET_F, myOffset, myShape, ierr)
|
||||||
if (ierr < 0) call IO_error(1_pInt,ext_msg='HDF5_mapping_phase: h5sselect_hyperslab_f')
|
if (ierr < 0) call IO_error(1,ext_msg='results_mapping_constituent: h5sselect_hyperslab_f')
|
||||||
|
|
||||||
!---------------------------------------------------------------------------------------------------
|
!---------------------------------------------------------------------------------------------------
|
||||||
! expand phaseAt to consider IPs (is not stored per IP)
|
! expand phaseAt to consider IPs (is not stored per IP)
|
||||||
|
@ -421,14 +422,14 @@ subroutine results_mapping_constituent(phaseAt,memberAt,label)
|
||||||
|
|
||||||
loc_id = results_openGroup('/mapping/cellResults')
|
loc_id = results_openGroup('/mapping/cellResults')
|
||||||
call h5dcreate_f(loc_id, 'constituent', dtype_id, filespace_id, dset_id, ierr)
|
call h5dcreate_f(loc_id, 'constituent', dtype_id, filespace_id, dset_id, ierr)
|
||||||
if (ierr < 0) call IO_error(1_pInt,ext_msg='HDF5_mapping_phase: h5dcreate_f')
|
if (ierr < 0) call IO_error(1,ext_msg='results_mapping_constituent: h5dcreate_f')
|
||||||
|
|
||||||
call h5dwrite_f(dset_id, name_id, reshape(label(pack(phaseAt_perIP,.true.)),myShape), &
|
call h5dwrite_f(dset_id, name_id, reshape(label(pack(phaseAt_perIP,.true.)),myShape), &
|
||||||
myShape, ierr, file_space_id = filespace_id, mem_space_id = memspace_id, xfer_prp = plist_id)
|
myShape, ierr, file_space_id = filespace_id, mem_space_id = memspace_id, xfer_prp = plist_id)
|
||||||
if (ierr < 0) call IO_error(1_pInt,ext_msg='HDF5_mapping_phase: h5dwrite_f/name_id')
|
if (ierr < 0) call IO_error(1,ext_msg='results_mapping_constituent: h5dwrite_f/name_id')
|
||||||
call h5dwrite_f(dset_id, position_id, reshape(pack(memberAt_total,.true.),myShape), &
|
call h5dwrite_f(dset_id, position_id, reshape(pack(memberAt_total,.true.),myShape), &
|
||||||
myShape, ierr, file_space_id = filespace_id, mem_space_id = memspace_id, xfer_prp = plist_id)
|
myShape, ierr, file_space_id = filespace_id, mem_space_id = memspace_id, xfer_prp = plist_id)
|
||||||
if (ierr < 0) call IO_error(1_pInt,ext_msg='HDF5_mapping_phase: h5dwrite_f/position_id')
|
if (ierr < 0) call IO_error(1,ext_msg='results_mapping_constituent: h5dwrite_f/position_id')
|
||||||
|
|
||||||
!--------------------------------------------------------------------------------------------------
|
!--------------------------------------------------------------------------------------------------
|
||||||
! close all
|
! close all
|
||||||
|
@ -444,6 +445,144 @@ subroutine results_mapping_constituent(phaseAt,memberAt,label)
|
||||||
end subroutine results_mapping_constituent
|
end subroutine results_mapping_constituent
|
||||||
|
|
||||||
|
|
||||||
|
!--------------------------------------------------------------------------------------------------
|
||||||
|
!> @brief adds the unique mapping from spatial position and constituent ID to results
|
||||||
|
!--------------------------------------------------------------------------------------------------
|
||||||
|
subroutine results_mapping_materialpoint(homogenizationAt,memberAt,label)
|
||||||
|
use numerics, only: &
|
||||||
|
worldrank, &
|
||||||
|
worldsize
|
||||||
|
|
||||||
|
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
|
||||||
|
|
||||||
|
integer, dimension(size(memberAt,1),size(memberAt,2)) :: &
|
||||||
|
homogenizationAt_perIP, &
|
||||||
|
memberAt_total
|
||||||
|
integer, dimension(size(label),0:worldsize-1) :: memberOffset !< offset in member counting per process
|
||||||
|
integer, dimension(0:worldsize-1) :: writeSize !< amount of data written per process
|
||||||
|
integer(HSIZE_T), dimension(1) :: &
|
||||||
|
myShape, & !< shape of the dataset (this process)
|
||||||
|
myOffset, &
|
||||||
|
totalShape !< shape of the dataset (all processes)
|
||||||
|
|
||||||
|
integer(HID_T) :: &
|
||||||
|
loc_id, & !< identifier of group in file
|
||||||
|
dtype_id, & !< identifier of compound data type
|
||||||
|
name_id, & !< identifier of name (string) in compound data type
|
||||||
|
position_id, & !< identifier of position/index (integer) in compound data type
|
||||||
|
dset_id, &
|
||||||
|
memspace_id, &
|
||||||
|
filespace_id, &
|
||||||
|
plist_id, &
|
||||||
|
dt_id
|
||||||
|
|
||||||
|
|
||||||
|
integer(SIZE_T) :: type_size_string, type_size_int
|
||||||
|
integer :: ierr, i
|
||||||
|
|
||||||
|
!---------------------------------------------------------------------------------------------------
|
||||||
|
! compound type: name of phase section + position/index within results array
|
||||||
|
call h5tcopy_f(H5T_NATIVE_CHARACTER, dt_id, ierr)
|
||||||
|
call h5tset_size_f(dt_id, int(len(label(1)),SIZE_T), ierr)
|
||||||
|
call h5tget_size_f(dt_id, type_size_string, ierr)
|
||||||
|
|
||||||
|
call h5tget_size_f(H5T_NATIVE_INTEGER, type_size_int, ierr)
|
||||||
|
|
||||||
|
call h5tcreate_f(H5T_COMPOUND_F, type_size_string + type_size_int, dtype_id, ierr)
|
||||||
|
call h5tinsert_f(dtype_id, "Name", 0_SIZE_T, dt_id,ierr)
|
||||||
|
call h5tinsert_f(dtype_id, "Position", type_size_string, H5T_NATIVE_INTEGER, ierr)
|
||||||
|
|
||||||
|
!--------------------------------------------------------------------------------------------------
|
||||||
|
! create memory types for each component of the compound type
|
||||||
|
call h5tcreate_f(H5T_COMPOUND_F, type_size_string, name_id, ierr)
|
||||||
|
call h5tinsert_f(name_id, "Name", 0_SIZE_T, dt_id, ierr)
|
||||||
|
|
||||||
|
call h5tcreate_f(H5T_COMPOUND_F, type_size_int, position_id, ierr)
|
||||||
|
call h5tinsert_f(position_id, "Position", 0_SIZE_T, H5T_NATIVE_INTEGER, ierr)
|
||||||
|
|
||||||
|
call h5tclose_f(dt_id, ierr)
|
||||||
|
|
||||||
|
!--------------------------------------------------------------------------------------------------
|
||||||
|
! prepare MPI communication (transparent for non-MPI runs)
|
||||||
|
call h5pcreate_f(H5P_DATASET_XFER_F, plist_id, ierr)
|
||||||
|
memberOffset = 0
|
||||||
|
do i=1, size(label)
|
||||||
|
memberOffset(i,worldrank) = count(homogenizationAt == i)*size(memberAt,1) ! number of points/instance of this process
|
||||||
|
enddo
|
||||||
|
writeSize = 0
|
||||||
|
writeSize(worldrank) = size(memberAt) ! total number of points by this process
|
||||||
|
|
||||||
|
!--------------------------------------------------------------------------------------------------
|
||||||
|
! MPI settings and communication
|
||||||
|
#ifdef PETSc
|
||||||
|
call h5pset_dxpl_mpio_f(plist_id, H5FD_MPIO_COLLECTIVE_F, ierr)
|
||||||
|
if (ierr < 0) call IO_error(1,ext_msg='results_mapping_materialpoint: h5pset_dxpl_mpio_f')
|
||||||
|
|
||||||
|
call MPI_allreduce(MPI_IN_PLACE,writeSize,worldsize,MPI_INT,MPI_SUM,PETSC_COMM_WORLD,ierr) ! get output at each process
|
||||||
|
if (ierr /= 0) call IO_error(894,ext_msg='results_mapping_materialpoint: MPI_allreduce/writeSize')
|
||||||
|
|
||||||
|
call MPI_allreduce(MPI_IN_PLACE,memberOffset,size(memberOffset),MPI_INT,MPI_SUM,PETSC_COMM_WORLD,ierr) ! get offset at each process
|
||||||
|
if (ierr /= 0) call IO_error(894,ext_msg='results_mapping_materialpoint: MPI_allreduce/memberOffset')
|
||||||
|
#endif
|
||||||
|
|
||||||
|
myShape = int([writeSize(worldrank)], HSIZE_T)
|
||||||
|
myOffset = int([sum(writeSize(0:worldrank-1))], HSIZE_T)
|
||||||
|
totalShape = int([sum(writeSize)], HSIZE_T)
|
||||||
|
|
||||||
|
!--------------------------------------------------------------------------------------------------
|
||||||
|
! create dataspace in memory (local shape = hyperslab) and in file (global shape)
|
||||||
|
call h5screate_simple_f(1,myShape,memspace_id,ierr,myShape)
|
||||||
|
if (ierr < 0) call IO_error(1,ext_msg='results_mapping_materialpoint: h5screate_simple_f/memspace_id')
|
||||||
|
|
||||||
|
call h5screate_simple_f(1,totalShape,filespace_id,ierr,totalShape)
|
||||||
|
if (ierr < 0) call IO_error(1,ext_msg='results_mapping_materialpoint: h5screate_simple_f/filespace_id')
|
||||||
|
|
||||||
|
call h5sselect_hyperslab_f(filespace_id, H5S_SELECT_SET_F, myOffset, myShape, ierr)
|
||||||
|
if (ierr < 0) call IO_error(1,ext_msg='results_mapping_materialpoint: h5sselect_hyperslab_f')
|
||||||
|
|
||||||
|
!---------------------------------------------------------------------------------------------------
|
||||||
|
! expand phaseAt to consider IPs (is not stored per IP)
|
||||||
|
do i = 1, size(homogenizationAt_perIP,1)
|
||||||
|
homogenizationAt_perIP(i,:) = homogenizationAt
|
||||||
|
enddo
|
||||||
|
|
||||||
|
!---------------------------------------------------------------------------------------------------
|
||||||
|
! renumber member from my process to all processes
|
||||||
|
do i = 1, size(label)
|
||||||
|
where(homogenizationAt_perIP == i) memberAt_total = memberAt + sum(memberOffset(i,0:worldrank-1))
|
||||||
|
enddo
|
||||||
|
|
||||||
|
!--------------------------------------------------------------------------------------------------
|
||||||
|
! write the components of the compound type individually
|
||||||
|
call h5pset_preserve_f(plist_id, .TRUE., ierr)
|
||||||
|
|
||||||
|
loc_id = results_openGroup('/mapping/cellResults')
|
||||||
|
call h5dcreate_f(loc_id, 'materialpoint', dtype_id, filespace_id, dset_id, ierr)
|
||||||
|
if (ierr < 0) call IO_error(1,ext_msg='results_mapping_materialpoint: h5dcreate_f')
|
||||||
|
|
||||||
|
call h5dwrite_f(dset_id, name_id, reshape(label(pack(homogenizationAt_perIP,.true.)),myShape), &
|
||||||
|
myShape, ierr, file_space_id = filespace_id, mem_space_id = memspace_id, xfer_prp = plist_id)
|
||||||
|
if (ierr < 0) call IO_error(1,ext_msg='results_mapping_materialpoint: h5dwrite_f/name_id')
|
||||||
|
call h5dwrite_f(dset_id, position_id, reshape(pack(memberAt_total,.true.),myShape), &
|
||||||
|
myShape, ierr, file_space_id = filespace_id, mem_space_id = memspace_id, xfer_prp = plist_id)
|
||||||
|
if (ierr < 0) call IO_error(1,ext_msg='results_mapping_materialpoint: h5dwrite_f/position_id')
|
||||||
|
|
||||||
|
!--------------------------------------------------------------------------------------------------
|
||||||
|
! close all
|
||||||
|
call HDF5_closeGroup(loc_id)
|
||||||
|
call h5pclose_f(plist_id, ierr)
|
||||||
|
call h5sclose_f(filespace_id, ierr)
|
||||||
|
call h5sclose_f(memspace_id, ierr)
|
||||||
|
call h5dclose_f(dset_id, ierr)
|
||||||
|
call h5tclose_f(dtype_id, ierr)
|
||||||
|
call h5tclose_f(name_id, ierr)
|
||||||
|
call h5tclose_f(position_id, ierr)
|
||||||
|
|
||||||
|
end subroutine results_mapping_materialpoint
|
||||||
|
|
||||||
|
|
||||||
!!--------------------------------------------------------------------------------------------------
|
!!--------------------------------------------------------------------------------------------------
|
||||||
!!> @brief adds the backward mapping from spatial position and constituent ID to results
|
!!> @brief adds the backward mapping from spatial position and constituent ID to results
|
||||||
!!--------------------------------------------------------------------------------------------------
|
!!--------------------------------------------------------------------------------------------------
|
||||||
|
@ -468,18 +607,18 @@ end subroutine results_mapping_constituent
|
||||||
! character(len=64) :: phaseID
|
! character(len=64) :: phaseID
|
||||||
|
|
||||||
! Nconstituents = size(phasememberat,1)
|
! Nconstituents = size(phasememberat,1)
|
||||||
! NmatPoints = count(material_phase /=0_pInt)/Nconstituents
|
! NmatPoints = count(material_phase /=0)/Nconstituents
|
||||||
|
|
||||||
! allocate(arr(2,NmatPoints*Nconstituents))
|
! allocate(arr(2,NmatPoints*Nconstituents))
|
||||||
|
|
||||||
! do i=1_pInt, NmatPoints
|
! do i=1, NmatPoints
|
||||||
! do j=Nconstituents-1_pInt, 0_pInt, -1_pInt
|
! do j=Nconstituents-1, 0, -1
|
||||||
! arr(1,Nconstituents*i-j) = i-1_pInt
|
! arr(1,Nconstituents*i-j) = i-1
|
||||||
! enddo
|
! enddo
|
||||||
! enddo
|
! enddo
|
||||||
! arr(2,:) = pack(material_phase,material_phase/=0_pInt)
|
! arr(2,:) = pack(material_phase,material_phase/=0)
|
||||||
|
|
||||||
! do i=1_pInt, size(phase_name)
|
! do i=1, size(phase_name)
|
||||||
! write(phaseID, '(i0)') i
|
! write(phaseID, '(i0)') i
|
||||||
! mapping_ID = results_openGroup('/current/constitutive/'//trim(phaseID)//'_'//phase_name(i))
|
! mapping_ID = results_openGroup('/current/constitutive/'//trim(phaseID)//'_'//phase_name(i))
|
||||||
! NmatPoints = count(material_phase == i)
|
! NmatPoints = count(material_phase == i)
|
||||||
|
@ -488,28 +627,28 @@ end subroutine results_mapping_constituent
|
||||||
! ! create dataspace
|
! ! create dataspace
|
||||||
! call h5screate_simple_f(1, int([dataspace_size(i)],HSIZE_T), space_id, hdferr, &
|
! call h5screate_simple_f(1, int([dataspace_size(i)],HSIZE_T), space_id, hdferr, &
|
||||||
! int([dataspace_size(i)],HSIZE_T))
|
! int([dataspace_size(i)],HSIZE_T))
|
||||||
! if (hdferr < 0) call IO_error(1_pInt,ext_msg='HDF5_writeBackwardMapping')
|
! if (hdferr < 0) call IO_error(1,ext_msg='HDF5_writeBackwardMapping')
|
||||||
|
|
||||||
!!--------------------------------------------------------------------------------------------------
|
!!--------------------------------------------------------------------------------------------------
|
||||||
! ! compound type
|
! ! compound type
|
||||||
! call h5tget_size_f(H5T_STD_I32LE, type_size, hdferr)
|
! call h5tget_size_f(H5T_STD_I32LE, type_size, hdferr)
|
||||||
! call h5tcreate_f(H5T_COMPOUND_F, type_size, dtype_id, hdferr)
|
! call h5tcreate_f(H5T_COMPOUND_F, type_size, dtype_id, hdferr)
|
||||||
! if (hdferr < 0) call IO_error(1_pInt,ext_msg='HDF5_writeBackwardMapping: h5tcreate_f dtype_id')
|
! if (hdferr < 0) call IO_error(1,ext_msg='HDF5_writeBackwardMapping: h5tcreate_f dtype_id')
|
||||||
|
|
||||||
! call h5tinsert_f(dtype_id, "Position", 0_SIZE_T, H5T_STD_I32LE, hdferr)
|
! call h5tinsert_f(dtype_id, "Position", 0_SIZE_T, H5T_STD_I32LE, hdferr)
|
||||||
! if (hdferr < 0) call IO_error(1_pInt,ext_msg='IO_backwardMappingPhase: h5tinsert_f 0')
|
! if (hdferr < 0) call IO_error(1,ext_msg='IO_backwardMappingPhase: h5tinsert_f 0')
|
||||||
|
|
||||||
!!--------------------------------------------------------------------------------------------------
|
!!--------------------------------------------------------------------------------------------------
|
||||||
! ! create Dataset
|
! ! create Dataset
|
||||||
! call h5dcreate_f(mapping_id, 'mapGeometry', dtype_id, space_id, dset_id, hdferr)
|
! call h5dcreate_f(mapping_id, 'mapGeometry', dtype_id, space_id, dset_id, hdferr)
|
||||||
! if (hdferr < 0) call IO_error(1_pInt,ext_msg='IO_backwardMappingPhase')
|
! if (hdferr < 0) call IO_error(1,ext_msg='IO_backwardMappingPhase')
|
||||||
|
|
||||||
!!--------------------------------------------------------------------------------------------------
|
!!--------------------------------------------------------------------------------------------------
|
||||||
! ! Create memory types (one compound datatype for each member)
|
! ! Create memory types (one compound datatype for each member)
|
||||||
! call h5tcreate_f(H5T_COMPOUND_F, int(pInt,SIZE_T), position_id, hdferr)
|
! call h5tcreate_f(H5T_COMPOUND_F, int(pInt,SIZE_T), position_id, hdferr)
|
||||||
! if (hdferr < 0) call IO_error(1_pInt,ext_msg='IO_backwardMappingPhase: h5tcreate_f position_id')
|
! if (hdferr < 0) call IO_error(1,ext_msg='IO_backwardMappingPhase: h5tcreate_f position_id')
|
||||||
! call h5tinsert_f(position_id, "Position", 0_SIZE_T, H5T_STD_I32LE, hdferr)
|
! call h5tinsert_f(position_id, "Position", 0_SIZE_T, H5T_STD_I32LE, hdferr)
|
||||||
! if (hdferr < 0) call IO_error(1_pInt,ext_msg='IO_backwardMappingPhase: h5tinsert_f position_id')
|
! if (hdferr < 0) call IO_error(1,ext_msg='IO_backwardMappingPhase: h5tinsert_f position_id')
|
||||||
|
|
||||||
!!--------------------------------------------------------------------------------------------------
|
!!--------------------------------------------------------------------------------------------------
|
||||||
! ! Define and select hyperslabs
|
! ! Define and select hyperslabs
|
||||||
|
@ -517,175 +656,47 @@ end subroutine results_mapping_constituent
|
||||||
! fileOffset = mpiOffset_phase(i) ! where i start to write my data
|
! fileOffset = mpiOffset_phase(i) ! where i start to write my data
|
||||||
|
|
||||||
! call h5screate_simple_f(1, counter, memspace, hdferr)
|
! call h5screate_simple_f(1, counter, memspace, hdferr)
|
||||||
! if (hdferr < 0) call IO_error(1_pInt,ext_msg='IO_backwardMappingPhase: h5screate_simple_f')
|
! if (hdferr < 0) call IO_error(1,ext_msg='IO_backwardMappingPhase: h5screate_simple_f')
|
||||||
! call h5dget_space_f(dset_id, space_id, hdferr)
|
! call h5dget_space_f(dset_id, space_id, hdferr)
|
||||||
! if (hdferr < 0) call IO_error(1_pInt,ext_msg='IO_backwardMappingPhase: h5dget_space_f')
|
! if (hdferr < 0) call IO_error(1,ext_msg='IO_backwardMappingPhase: h5dget_space_f')
|
||||||
! call h5sselect_hyperslab_f(space_id, H5S_SELECT_SET_F, fileOffset, counter, hdferr)
|
! call h5sselect_hyperslab_f(space_id, H5S_SELECT_SET_F, fileOffset, counter, hdferr)
|
||||||
! if (hdferr < 0) call IO_error(1_pInt,ext_msg='IO_backwardMappingPhase: h5sselect_hyperslab_f')
|
! if (hdferr < 0) call IO_error(1,ext_msg='IO_backwardMappingPhase: h5sselect_hyperslab_f')
|
||||||
|
|
||||||
!!--------------------------------------------------------------------------------------------------
|
!!--------------------------------------------------------------------------------------------------
|
||||||
! ! Create property list for collective dataset write
|
! ! Create property list for collective dataset write
|
||||||
!#ifdef PETSc
|
!#ifdef PETSc
|
||||||
! call h5pcreate_f(H5P_DATASET_XFER_F, plist_id, hdferr)
|
! call h5pcreate_f(H5P_DATASET_XFER_F, plist_id, hdferr)
|
||||||
! if (hdferr < 0) call IO_error(1_pInt,ext_msg='IO_backwardMappingPhase: h5pcreate_f')
|
! if (hdferr < 0) call IO_error(1,ext_msg='IO_backwardMappingPhase: h5pcreate_f')
|
||||||
! call h5pset_dxpl_mpio_f(plist_id, H5FD_MPIO_COLLECTIVE_F, hdferr)
|
! call h5pset_dxpl_mpio_f(plist_id, H5FD_MPIO_COLLECTIVE_F, hdferr)
|
||||||
! if (hdferr < 0) call IO_error(1_pInt,ext_msg='IO_backwardMappingPhase: h5pset_dxpl_mpio_f')
|
! if (hdferr < 0) call IO_error(1,ext_msg='IO_backwardMappingPhase: h5pset_dxpl_mpio_f')
|
||||||
!#endif
|
!#endif
|
||||||
|
|
||||||
!!--------------------------------------------------------------------------------------------------
|
!!--------------------------------------------------------------------------------------------------
|
||||||
! ! write data by fields in the datatype. Fields order is not important.
|
! ! write data by fields in the datatype. Fields order is not important.
|
||||||
! call h5dwrite_f(dset_id, position_id, pack(arr(1,:),arr(2,:)==i)+mpiOffset, int([dataspace_size(i)],HSIZE_T),&
|
! call h5dwrite_f(dset_id, position_id, pack(arr(1,:),arr(2,:)==i)+mpiOffset, int([dataspace_size(i)],HSIZE_T),&
|
||||||
! hdferr, file_space_id = space_id, mem_space_id = memspace, xfer_prp = plist_id)
|
! hdferr, file_space_id = space_id, mem_space_id = memspace, xfer_prp = plist_id)
|
||||||
! if (hdferr < 0) call IO_error(1_pInt,ext_msg='IO_backwardMappingPhase: h5dwrite_f instance_id')
|
! if (hdferr < 0) call IO_error(1,ext_msg='IO_backwardMappingPhase: h5dwrite_f instance_id')
|
||||||
|
|
||||||
!!--------------------------------------------------------------------------------------------------
|
!!--------------------------------------------------------------------------------------------------
|
||||||
! !close types, dataspaces
|
! !close types, dataspaces
|
||||||
! call h5tclose_f(dtype_id, hdferr)
|
! call h5tclose_f(dtype_id, hdferr)
|
||||||
! if (hdferr < 0) call IO_error(1_pInt,ext_msg='IO_backwardMappingPhase: h5tclose_f dtype_id')
|
! if (hdferr < 0) call IO_error(1,ext_msg='IO_backwardMappingPhase: h5tclose_f dtype_id')
|
||||||
! call h5tclose_f(position_id, hdferr)
|
! call h5tclose_f(position_id, hdferr)
|
||||||
! if (hdferr < 0) call IO_error(1_pInt,ext_msg='IO_backwardMappingPhase: h5tclose_f position_id')
|
! if (hdferr < 0) call IO_error(1,ext_msg='IO_backwardMappingPhase: h5tclose_f position_id')
|
||||||
! call h5dclose_f(dset_id, hdferr)
|
! call h5dclose_f(dset_id, hdferr)
|
||||||
! if (hdferr < 0) call IO_error(1_pInt,ext_msg='IO_backwardMappingPhase: h5dclose_f')
|
! if (hdferr < 0) call IO_error(1,ext_msg='IO_backwardMappingPhase: h5dclose_f')
|
||||||
! call h5sclose_f(space_id, hdferr)
|
! call h5sclose_f(space_id, hdferr)
|
||||||
! if (hdferr < 0) call IO_error(1_pInt,ext_msg='IO_backwardMappingPhase: h5sclose_f space_id')
|
! if (hdferr < 0) call IO_error(1,ext_msg='IO_backwardMappingPhase: h5sclose_f space_id')
|
||||||
! call h5sclose_f(memspace, hdferr)
|
! call h5sclose_f(memspace, hdferr)
|
||||||
! if (hdferr < 0) call IO_error(1_pInt,ext_msg='IO_backwardMappingPhase: h5sclose_f memspace')
|
! if (hdferr < 0) call IO_error(1,ext_msg='IO_backwardMappingPhase: h5sclose_f memspace')
|
||||||
! call h5pclose_f(plist_id, hdferr)
|
! call h5pclose_f(plist_id, hdferr)
|
||||||
! if (hdferr < 0) call IO_error(1_pInt,ext_msg='IO_backwardMappingPhase: h5pclose_f')
|
! if (hdferr < 0) call IO_error(1,ext_msg='IO_backwardMappingPhase: h5pclose_f')
|
||||||
! call HDF5_closeGroup(mapping_ID)
|
! call HDF5_closeGroup(mapping_ID)
|
||||||
|
|
||||||
! enddo
|
! enddo
|
||||||
|
|
||||||
!end subroutine HDF5_backwardMappingPhase
|
!end subroutine HDF5_backwardMappingPhase
|
||||||
|
|
||||||
!!--------------------------------------------------------------------------------------------------
|
|
||||||
!!> @brief adds the unique mapping from spatial position and constituent ID to results
|
|
||||||
!!--------------------------------------------------------------------------------------------------
|
|
||||||
!subroutine HDF5_mappingHomog(material_homog,homogmemberat,homogenization_name,dataspace_size,mpiOffset,mpiOffset_homog)
|
|
||||||
! use hdf5
|
|
||||||
|
|
||||||
! implicit none
|
|
||||||
! integer(pInt), intent(in), dimension(:,:) :: material_homog, homogmemberat
|
|
||||||
! character(len=*), intent(in), dimension(:) :: homogenization_name
|
|
||||||
! integer(pInt), intent(in), dimension(:) :: mpiOffset_homog
|
|
||||||
! integer(pInt), intent(in) :: dataspace_size, mpiOffset
|
|
||||||
|
|
||||||
! integer(pInt) :: hdferr, NmatPoints, i, j
|
|
||||||
! integer(HID_T) :: mapping_id, dtype_id, dset_id, space_id, name_id, position_id, plist_id, memspace
|
|
||||||
|
|
||||||
! integer(HID_T) :: dt5_id ! Memory datatype identifier
|
|
||||||
! integer(SIZE_T) :: typesize, type_sizec, type_sizei, type_size
|
|
||||||
|
|
||||||
! integer(HSIZE_T), dimension(1) :: counter
|
|
||||||
! integer(HSSIZE_T), dimension(1) :: fileOffset
|
|
||||||
! integer(pInt), dimension(:), allocatable :: arrOffset
|
|
||||||
|
|
||||||
! NmatPoints = count(material_homog /=0_pInt)
|
|
||||||
! mapping_ID = results_openGroup("current/mapGeometry")
|
|
||||||
|
|
||||||
! allocate(arrOffset(NmatPoints))
|
|
||||||
! do i=1_pInt, NmatPoints
|
|
||||||
! do j=1_pInt, size(homogenization_name)
|
|
||||||
! if(material_homog(1,i) == j) &
|
|
||||||
! arrOffset(i) = mpiOffset_homog(j)
|
|
||||||
! enddo
|
|
||||||
! enddo
|
|
||||||
|
|
||||||
!!--------------------------------------------------------------------------------------------------
|
|
||||||
!! create dataspace
|
|
||||||
! call h5screate_simple_f(1, int([dataspace_size],HSIZE_T), space_id, hdferr, &
|
|
||||||
! int([dataspace_size],HSIZE_T))
|
|
||||||
! if (hdferr < 0) call IO_error(1_pInt,ext_msg='HDF5_writeMapping')
|
|
||||||
|
|
||||||
!!--------------------------------------------------------------------------------------------------
|
|
||||||
!! compound type
|
|
||||||
! ! First calculate total size by calculating sizes of each member
|
|
||||||
! !
|
|
||||||
! CALL h5tcopy_f(H5T_NATIVE_CHARACTER, dt5_id, hdferr)
|
|
||||||
! typesize = len(homogenization_name(1))
|
|
||||||
! CALL h5tset_size_f(dt5_id, typesize, hdferr)
|
|
||||||
! CALL h5tget_size_f(dt5_id, type_sizec, hdferr)
|
|
||||||
! CALL h5tget_size_f(H5T_STD_I32LE,type_sizei, hdferr)
|
|
||||||
! type_size = type_sizec + type_sizei
|
|
||||||
! call h5tcreate_f(H5T_COMPOUND_F, type_size, dtype_id, hdferr)
|
|
||||||
! if (hdferr < 0) call IO_error(1_pInt,ext_msg='HDF5_writeMapping: h5tcreate_f dtype_id')
|
|
||||||
|
|
||||||
! call h5tinsert_f(dtype_id, "Name", 0_SIZE_T, dt5_id, hdferr)
|
|
||||||
! if (hdferr < 0) call IO_error(1_pInt,ext_msg='IO_mappingHomog: h5tinsert_f 0')
|
|
||||||
! call h5tinsert_f(dtype_id, "Position", type_sizec, H5T_STD_I32LE, hdferr)
|
|
||||||
! if (hdferr < 0) call IO_error(1_pInt,ext_msg='IO_mappingHomog: h5tinsert_f 2')
|
|
||||||
|
|
||||||
!!--------------------------------------------------------------------------------------------------
|
|
||||||
!! create Dataset
|
|
||||||
! call h5dcreate_f(mapping_id, 'homogenization', dtype_id, space_id, dset_id, hdferr)
|
|
||||||
! if (hdferr < 0) call IO_error(1_pInt,ext_msg='IO_mappingHomog')
|
|
||||||
|
|
||||||
!!--------------------------------------------------------------------------------------------------
|
|
||||||
!! Create memory types (one compound datatype for each member)
|
|
||||||
! call h5tcreate_f(H5T_COMPOUND_F, int(type_sizec,SIZE_T), name_id, hdferr)
|
|
||||||
! if (hdferr < 0) call IO_error(1_pInt,ext_msg='IO_mappingHomog: h5tcreate_f instance_id')
|
|
||||||
! call h5tinsert_f(name_id, "Name", 0_SIZE_T, dt5_id, hdferr)
|
|
||||||
! if (hdferr < 0) call IO_error(1_pInt,ext_msg='IO_mappingHomog: h5tinsert_f instance_id')
|
|
||||||
|
|
||||||
! call h5tcreate_f(H5T_COMPOUND_F, int(pInt,SIZE_T), position_id, hdferr)
|
|
||||||
! if (hdferr < 0) call IO_error(1_pInt,ext_msg='IO_mappingHomog: h5tcreate_f position_id')
|
|
||||||
! call h5tinsert_f(position_id, "Position", 0_SIZE_T, H5T_STD_I32LE, hdferr)
|
|
||||||
! if (hdferr < 0) call IO_error(1_pInt,ext_msg='IO_mappingHomog: h5tinsert_f position_id')
|
|
||||||
|
|
||||||
!!--------------------------------------------------------------------------------------------------
|
|
||||||
!! Define and select hyperslabs
|
|
||||||
! counter = NmatPoints ! how big i am
|
|
||||||
! fileOffset = mpiOffset ! where i start to write my data
|
|
||||||
|
|
||||||
! call h5screate_simple_f(1, counter, memspace, hdferr)
|
|
||||||
! if (hdferr < 0) call IO_error(1_pInt,ext_msg='IO_mappingHomog: h5screate_simple_f')
|
|
||||||
! call h5dget_space_f(dset_id, space_id, hdferr)
|
|
||||||
! if (hdferr < 0) call IO_error(1_pInt,ext_msg='IO_mappingHomog: h5dget_space_f')
|
|
||||||
! call h5sselect_hyperslab_f(space_id, H5S_SELECT_SET_F, fileOffset, counter, hdferr)
|
|
||||||
! if (hdferr < 0) call IO_error(1_pInt,ext_msg='IO_mappingHomog: h5sselect_hyperslab_f')
|
|
||||||
|
|
||||||
!!--------------------------------------------------------------------------------------------------
|
|
||||||
!! Create property list for collective dataset write
|
|
||||||
!#ifdef PETSc
|
|
||||||
! call h5pcreate_f(H5P_DATASET_XFER_F, plist_id, hdferr)
|
|
||||||
! if (hdferr < 0) call IO_error(1_pInt,ext_msg='IO_mappingHomog: h5pcreate_f')
|
|
||||||
! call h5pset_dxpl_mpio_f(plist_id, H5FD_MPIO_COLLECTIVE_F, hdferr)
|
|
||||||
! if (hdferr < 0) call IO_error(1_pInt,ext_msg='IO_mappingHomog: h5pset_dxpl_mpio_f')
|
|
||||||
!#endif
|
|
||||||
|
|
||||||
!!--------------------------------------------------------------------------------------------------
|
|
||||||
!! write data by fields in the datatype. Fields order is not important.
|
|
||||||
! call h5dwrite_f(dset_id, name_id, homogenization_name(pack(material_homog,material_homog/=0_pInt)), &
|
|
||||||
! int([dataspace_size],HSIZE_T), hdferr, file_space_id = space_id, &
|
|
||||||
! mem_space_id = memspace, xfer_prp = plist_id)
|
|
||||||
! if (hdferr < 0) call IO_error(1_pInt,ext_msg='IO_mappingHomog: h5dwrite_f position_id')
|
|
||||||
|
|
||||||
! call h5dwrite_f(dset_id, position_id, pack(homogmemberat-1_pInt,homogmemberat/=0_pInt) + arrOffset, &
|
|
||||||
! int([dataspace_size],HSIZE_T), hdferr, file_space_id = space_id, &
|
|
||||||
! mem_space_id = memspace, xfer_prp = plist_id)
|
|
||||||
! if (hdferr < 0) call IO_error(1_pInt,ext_msg='IO_mappingHomog: h5dwrite_f instance_id')
|
|
||||||
|
|
||||||
!!--------------------------------------------------------------------------------------------------
|
|
||||||
!!close types, dataspaces
|
|
||||||
!call h5tclose_f(dtype_id, hdferr)
|
|
||||||
!if (hdferr < 0) call IO_error(1_pInt,ext_msg='IO_mappingHomog: h5tclose_f dtype_id')
|
|
||||||
!call h5tclose_f(position_id, hdferr)
|
|
||||||
!if (hdferr < 0) call IO_error(1_pInt,ext_msg='IO_mappingHomog: h5tclose_f position_id')
|
|
||||||
!call h5tclose_f(name_id, hdferr)
|
|
||||||
!if (hdferr < 0) call IO_error(1_pInt,ext_msg='IO_mappingHomog: h5tclose_f name_id ')
|
|
||||||
!call h5tclose_f(dt5_id, hdferr)
|
|
||||||
!if (hdferr < 0) call IO_error(1_pInt,ext_msg='IO_mappingHomog: h5tclose_f dt5_id')
|
|
||||||
!call h5dclose_f(dset_id, hdferr)
|
|
||||||
!if (hdferr < 0) call IO_error(1_pInt,ext_msg='IO_mappingHomog: h5dclose_f')
|
|
||||||
!call h5sclose_f(space_id, hdferr)
|
|
||||||
!if (hdferr < 0) call IO_error(1_pInt,ext_msg='IO_mappingHomog: h5sclose_f space_id')
|
|
||||||
!call h5sclose_f(memspace, hdferr)
|
|
||||||
!if (hdferr < 0) call IO_error(1_pInt,ext_msg='IO_mappingHomog: h5sclose_f memspace')
|
|
||||||
!call h5pclose_f(plist_id, hdferr)
|
|
||||||
!if (hdferr < 0) call IO_error(1_pInt,ext_msg='IO_mappingHomog: h5pclose_f')
|
|
||||||
!call HDF5_closeGroup(mapping_ID)
|
|
||||||
|
|
||||||
!end subroutine HDF5_mappingHomog
|
|
||||||
|
|
||||||
!!--------------------------------------------------------------------------------------------------
|
!!--------------------------------------------------------------------------------------------------
|
||||||
!!> @brief adds the backward mapping from spatial position and constituent ID to results
|
!!> @brief adds the backward mapping from spatial position and constituent ID to results
|
||||||
|
@ -710,13 +721,13 @@ end subroutine results_mapping_constituent
|
||||||
|
|
||||||
! character(len=64) :: homogID
|
! character(len=64) :: homogID
|
||||||
|
|
||||||
! NmatPoints = count(material_homog /=0_pInt)
|
! NmatPoints = count(material_homog /=0)
|
||||||
! allocate(arr(2,NmatPoints))
|
! allocate(arr(2,NmatPoints))
|
||||||
|
|
||||||
! arr(1,:) = (/(i, i=0_pint,NmatPoints-1_pInt)/)
|
! arr(1,:) = (/(i, i=0,NmatPoints-1)/)
|
||||||
! arr(2,:) = pack(material_homog,material_homog/=0_pInt)
|
! arr(2,:) = pack(material_homog,material_homog/=0)
|
||||||
|
|
||||||
! do i=1_pInt, size(homogenization_name)
|
! do i=1, size(homogenization_name)
|
||||||
! write(homogID, '(i0)') i
|
! write(homogID, '(i0)') i
|
||||||
! mapping_ID = results_openGroup('/current/homogenization/'//trim(homogID)//'_'//homogenization_name(i))
|
! mapping_ID = results_openGroup('/current/homogenization/'//trim(homogID)//'_'//homogenization_name(i))
|
||||||
|
|
||||||
|
@ -724,28 +735,28 @@ end subroutine results_mapping_constituent
|
||||||
! ! create dataspace
|
! ! create dataspace
|
||||||
! call h5screate_simple_f(1, int([dataspace_size(i)],HSIZE_T), space_id, hdferr, &
|
! call h5screate_simple_f(1, int([dataspace_size(i)],HSIZE_T), space_id, hdferr, &
|
||||||
! int([dataspace_size(i)],HSIZE_T))
|
! int([dataspace_size(i)],HSIZE_T))
|
||||||
! if (hdferr < 0) call IO_error(1_pInt,ext_msg='HDF5_writeBackwardMapping')
|
! if (hdferr < 0) call IO_error(1,ext_msg='HDF5_writeBackwardMapping')
|
||||||
|
|
||||||
!!--------------------------------------------------------------------------------------------------
|
!!--------------------------------------------------------------------------------------------------
|
||||||
! ! compound type
|
! ! compound type
|
||||||
! call h5tget_size_f(H5T_STD_I32LE, type_size, hdferr)
|
! call h5tget_size_f(H5T_STD_I32LE, type_size, hdferr)
|
||||||
! call h5tcreate_f(H5T_COMPOUND_F, type_size, dtype_id, hdferr)
|
! call h5tcreate_f(H5T_COMPOUND_F, type_size, dtype_id, hdferr)
|
||||||
! if (hdferr < 0) call IO_error(1_pInt,ext_msg='HDF5_writeBackwardMapping: h5tcreate_f dtype_id')
|
! if (hdferr < 0) call IO_error(1,ext_msg='HDF5_writeBackwardMapping: h5tcreate_f dtype_id')
|
||||||
|
|
||||||
! call h5tinsert_f(dtype_id, "Position", 0_SIZE_T, H5T_STD_I32LE, hdferr)
|
! call h5tinsert_f(dtype_id, "Position", 0_SIZE_T, H5T_STD_I32LE, hdferr)
|
||||||
! if (hdferr < 0) call IO_error(1_pInt,ext_msg='IO_backwardMappingHomog: h5tinsert_f 0')
|
! if (hdferr < 0) call IO_error(1,ext_msg='IO_backwardMappingHomog: h5tinsert_f 0')
|
||||||
|
|
||||||
!!--------------------------------------------------------------------------------------------------
|
!!--------------------------------------------------------------------------------------------------
|
||||||
! ! create Dataset
|
! ! create Dataset
|
||||||
! call h5dcreate_f(mapping_id, 'mapGeometry', dtype_id, space_id, dset_id, hdferr)
|
! call h5dcreate_f(mapping_id, 'mapGeometry', dtype_id, space_id, dset_id, hdferr)
|
||||||
! if (hdferr < 0) call IO_error(1_pInt,ext_msg='IO_backwardMappingHomog')
|
! if (hdferr < 0) call IO_error(1,ext_msg='IO_backwardMappingHomog')
|
||||||
|
|
||||||
!!--------------------------------------------------------------------------------------------------
|
!!--------------------------------------------------------------------------------------------------
|
||||||
! ! Create memory types (one compound datatype for each member)
|
! ! Create memory types (one compound datatype for each member)
|
||||||
! call h5tcreate_f(H5T_COMPOUND_F, int(pInt,SIZE_T), position_id, hdferr)
|
! call h5tcreate_f(H5T_COMPOUND_F, int(pInt,SIZE_T), position_id, hdferr)
|
||||||
! if (hdferr < 0) call IO_error(1_pInt,ext_msg='IO_backwardMappingHomog: h5tcreate_f position_id')
|
! if (hdferr < 0) call IO_error(1,ext_msg='IO_backwardMappingHomog: h5tcreate_f position_id')
|
||||||
! call h5tinsert_f(position_id, "Position", 0_SIZE_T, H5T_STD_I32LE, hdferr)
|
! call h5tinsert_f(position_id, "Position", 0_SIZE_T, H5T_STD_I32LE, hdferr)
|
||||||
! if (hdferr < 0) call IO_error(1_pInt,ext_msg='IO_backwardMappingHomog: h5tinsert_f position_id')
|
! if (hdferr < 0) call IO_error(1,ext_msg='IO_backwardMappingHomog: h5tinsert_f position_id')
|
||||||
|
|
||||||
!!--------------------------------------------------------------------------------------------------
|
!!--------------------------------------------------------------------------------------------------
|
||||||
! ! Define and select hyperslabs
|
! ! Define and select hyperslabs
|
||||||
|
@ -753,41 +764,41 @@ end subroutine results_mapping_constituent
|
||||||
! fileOffset = mpiOffset_homog(i) ! where i start to write my data
|
! fileOffset = mpiOffset_homog(i) ! where i start to write my data
|
||||||
|
|
||||||
! call h5screate_simple_f(1, counter, memspace, hdferr)
|
! call h5screate_simple_f(1, counter, memspace, hdferr)
|
||||||
! if (hdferr < 0) call IO_error(1_pInt,ext_msg='IO_backwardMappingHomog: h5screate_simple_f')
|
! if (hdferr < 0) call IO_error(1,ext_msg='IO_backwardMappingHomog: h5screate_simple_f')
|
||||||
! call h5dget_space_f(dset_id, space_id, hdferr)
|
! call h5dget_space_f(dset_id, space_id, hdferr)
|
||||||
! if (hdferr < 0) call IO_error(1_pInt,ext_msg='IO_backwardMappingHomog: h5dget_space_f')
|
! if (hdferr < 0) call IO_error(1,ext_msg='IO_backwardMappingHomog: h5dget_space_f')
|
||||||
! call h5sselect_hyperslab_f(space_id, H5S_SELECT_SET_F, fileOffset, counter, hdferr)
|
! call h5sselect_hyperslab_f(space_id, H5S_SELECT_SET_F, fileOffset, counter, hdferr)
|
||||||
! if (hdferr < 0) call IO_error(1_pInt,ext_msg='IO_backwardMappingHomog: h5sselect_hyperslab_f')
|
! if (hdferr < 0) call IO_error(1,ext_msg='IO_backwardMappingHomog: h5sselect_hyperslab_f')
|
||||||
|
|
||||||
!!--------------------------------------------------------------------------------------------------
|
!!--------------------------------------------------------------------------------------------------
|
||||||
! ! Create property list for collective dataset write
|
! ! Create property list for collective dataset write
|
||||||
!#ifdef PETSc
|
!#ifdef PETSc
|
||||||
! call h5pcreate_f(H5P_DATASET_XFER_F, plist_id, hdferr)
|
! call h5pcreate_f(H5P_DATASET_XFER_F, plist_id, hdferr)
|
||||||
! if (hdferr < 0) call IO_error(1_pInt,ext_msg='IO_backwardMappingHomog: h5pcreate_f')
|
! if (hdferr < 0) call IO_error(1,ext_msg='IO_backwardMappingHomog: h5pcreate_f')
|
||||||
! call h5pset_dxpl_mpio_f(plist_id, H5FD_MPIO_COLLECTIVE_F, hdferr)
|
! call h5pset_dxpl_mpio_f(plist_id, H5FD_MPIO_COLLECTIVE_F, hdferr)
|
||||||
! if (hdferr < 0) call IO_error(1_pInt,ext_msg='IO_backwardMappingHomog: h5pset_dxpl_mpio_f')
|
! if (hdferr < 0) call IO_error(1,ext_msg='IO_backwardMappingHomog: h5pset_dxpl_mpio_f')
|
||||||
!#endif
|
!#endif
|
||||||
|
|
||||||
!!--------------------------------------------------------------------------------------------------
|
!!--------------------------------------------------------------------------------------------------
|
||||||
! ! write data by fields in the datatype. Fields order is not important.
|
! ! write data by fields in the datatype. Fields order is not important.
|
||||||
! call h5dwrite_f(dset_id, position_id, pack(arr(1,:),arr(2,:)==i)+mpiOffset,int([dataspace_size(i)],HSIZE_T),&
|
! call h5dwrite_f(dset_id, position_id, pack(arr(1,:),arr(2,:)==i)+mpiOffset,int([dataspace_size(i)],HSIZE_T),&
|
||||||
! hdferr, file_space_id = space_id, mem_space_id = memspace, xfer_prp = plist_id)
|
! hdferr, file_space_id = space_id, mem_space_id = memspace, xfer_prp = plist_id)
|
||||||
! if (hdferr < 0) call IO_error(1_pInt,ext_msg='IO_backwardMappingHomog: h5dwrite_f instance_id')
|
! if (hdferr < 0) call IO_error(1,ext_msg='IO_backwardMappingHomog: h5dwrite_f instance_id')
|
||||||
|
|
||||||
!!--------------------------------------------------------------------------------------------------
|
!!--------------------------------------------------------------------------------------------------
|
||||||
! !close types, dataspaces
|
! !close types, dataspaces
|
||||||
! call h5tclose_f(dtype_id, hdferr)
|
! call h5tclose_f(dtype_id, hdferr)
|
||||||
! if (hdferr < 0) call IO_error(1_pInt,ext_msg='IO_backwardMappingHomog: h5tclose_f dtype_id')
|
! if (hdferr < 0) call IO_error(1,ext_msg='IO_backwardMappingHomog: h5tclose_f dtype_id')
|
||||||
! call h5tclose_f(position_id, hdferr)
|
! call h5tclose_f(position_id, hdferr)
|
||||||
! if (hdferr < 0) call IO_error(1_pInt,ext_msg='IO_backwardMappingHomog: h5tclose_f position_id')
|
! if (hdferr < 0) call IO_error(1,ext_msg='IO_backwardMappingHomog: h5tclose_f position_id')
|
||||||
! call h5dclose_f(dset_id, hdferr)
|
! call h5dclose_f(dset_id, hdferr)
|
||||||
! if (hdferr < 0) call IO_error(1_pInt,ext_msg='IO_backwardMappingHomog: h5dclose_f')
|
! if (hdferr < 0) call IO_error(1,ext_msg='IO_backwardMappingHomog: h5dclose_f')
|
||||||
! call h5sclose_f(space_id, hdferr)
|
! call h5sclose_f(space_id, hdferr)
|
||||||
! if (hdferr < 0) call IO_error(1_pInt,ext_msg='IO_backwardMappingHomog: h5sclose_f space_id')
|
! if (hdferr < 0) call IO_error(1,ext_msg='IO_backwardMappingHomog: h5sclose_f space_id')
|
||||||
! call h5sclose_f(memspace, hdferr)
|
! call h5sclose_f(memspace, hdferr)
|
||||||
! if (hdferr < 0) call IO_error(1_pInt,ext_msg='IO_backwardMappingHomog: h5sclose_f memspace')
|
! if (hdferr < 0) call IO_error(1,ext_msg='IO_backwardMappingHomog: h5sclose_f memspace')
|
||||||
! call h5pclose_f(plist_id, hdferr)
|
! call h5pclose_f(plist_id, hdferr)
|
||||||
! if (hdferr < 0) call IO_error(1_pInt,ext_msg='IO_backwardMappingHomog: h5pclose_f')
|
! if (hdferr < 0) call IO_error(1,ext_msg='IO_backwardMappingHomog: h5pclose_f')
|
||||||
! call HDF5_closeGroup(mapping_ID)
|
! call HDF5_closeGroup(mapping_ID)
|
||||||
|
|
||||||
! enddo
|
! enddo
|
||||||
|
@ -814,24 +825,24 @@ end subroutine results_mapping_constituent
|
||||||
!! create dataspace
|
!! create dataspace
|
||||||
! call h5screate_simple_f(1, int([Nnodes],HSIZE_T), space_id, hdferr, &
|
! call h5screate_simple_f(1, int([Nnodes],HSIZE_T), space_id, hdferr, &
|
||||||
! int([Nnodes],HSIZE_T))
|
! int([Nnodes],HSIZE_T))
|
||||||
! if (hdferr < 0) call IO_error(1_pInt,ext_msg='IO_mappingCells: h5screate_simple_f')
|
! if (hdferr < 0) call IO_error(1,ext_msg='IO_mappingCells: h5screate_simple_f')
|
||||||
|
|
||||||
!!--------------------------------------------------------------------------------------------------
|
!!--------------------------------------------------------------------------------------------------
|
||||||
!! create Dataset
|
!! create Dataset
|
||||||
! call h5dcreate_f(mapping_id, "Cell",H5T_NATIVE_INTEGER, space_id, dset_id, hdferr)
|
! call h5dcreate_f(mapping_id, "Cell",H5T_NATIVE_INTEGER, space_id, dset_id, hdferr)
|
||||||
! if (hdferr < 0) call IO_error(1_pInt,ext_msg='IO_mappingCells')
|
! if (hdferr < 0) call IO_error(1,ext_msg='IO_mappingCells')
|
||||||
|
|
||||||
!!--------------------------------------------------------------------------------------------------
|
!!--------------------------------------------------------------------------------------------------
|
||||||
!! write data by fields in the datatype. Fields order is not important.
|
!! write data by fields in the datatype. Fields order is not important.
|
||||||
! call h5dwrite_f(dset_id, H5T_NATIVE_INTEGER, mapping, int([Nnodes],HSIZE_T), hdferr)
|
! call h5dwrite_f(dset_id, H5T_NATIVE_INTEGER, mapping, int([Nnodes],HSIZE_T), hdferr)
|
||||||
! if (hdferr < 0) call IO_error(1_pInt,ext_msg='IO_mappingCells: h5dwrite_f instance_id')
|
! if (hdferr < 0) call IO_error(1,ext_msg='IO_mappingCells: h5dwrite_f instance_id')
|
||||||
|
|
||||||
!!--------------------------------------------------------------------------------------------------
|
!!--------------------------------------------------------------------------------------------------
|
||||||
!!close types, dataspaces
|
!!close types, dataspaces
|
||||||
! call h5dclose_f(dset_id, hdferr)
|
! call h5dclose_f(dset_id, hdferr)
|
||||||
! if (hdferr < 0) call IO_error(1_pInt,ext_msg='IO_mappingConstitutive: h5dclose_f')
|
! if (hdferr < 0) call IO_error(1,ext_msg='IO_mappingConstitutive: h5dclose_f')
|
||||||
! call h5sclose_f(space_id, hdferr)
|
! call h5sclose_f(space_id, hdferr)
|
||||||
! if (hdferr < 0) call IO_error(1_pInt,ext_msg='IO_mappingConstitutive: h5sclose_f')
|
! if (hdferr < 0) call IO_error(1,ext_msg='IO_mappingConstitutive: h5sclose_f')
|
||||||
! call HDF5_closeGroup(mapping_ID)
|
! call HDF5_closeGroup(mapping_ID)
|
||||||
|
|
||||||
!end subroutine HDF5_mappingCells
|
!end subroutine HDF5_mappingCells
|
||||||
|
|
Loading…
Reference in New Issue