simplef.F90 1.26 KB
Newer Older
1 2 3 4 5 6 7 8 9 10
program H5PartTest
  implicit none

  include 'mpif.h'
  include 'H5PartF.h'

  integer :: comm, rank, ierr
  integer*8 :: file_id, status, npoints, i
  real*8, allocatable :: particles(:)
  integer*8, allocatable :: id(:)
11 12
  real*8 :: r8val
  integer*8 :: i8val
13 14 15 16 17 18

  comm = MPI_COMM_WORLD
  call mpi_init(ierr)
  call mpi_comm_rank(comm, rank, ierr)

  ! open the a file for parallel writing
19
  file_id = h5pt_set_verbosity_level(5)
20 21 22 23 24 25 26 27
  file_id = h5pt_openw_par('test.h5', comm)

  ! in the Fortran API, time steps start at 1
  status = h5pt_setstep(file_id, 1_8)

  ! write an attribute to the file
  status = h5pt_writefileattrib_string(file_id, 'desc', 'This is a test.')

28 29 30 31
  r8val = 0.5
  i8val = 1
  status = h5pt_writefileattrib_r8(file_id, 'double', r8val, i8val)

32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
  ! create fake data
  npoints = 99
  allocate(particles(npoints), id(npoints))
  do i=1,npoints
    particles(i) = real(i+npoints*rank)
    id(i) = i+npoints*rank
  enddo

  ! set the size of the 1D array
  status = h5pt_setnpoints(file_id, npoints)

  ! write the particles
  status = h5pt_writedata_r8(file_id, "x",  particles)

  ! write the ids
  status = h5pt_writedata_i8(file_id, "id", id)

  ! close the file
  status = h5pt_close(file_id)

  deallocate(particles, id)

  call mpi_finalize(ierr)

end program H5PartTest