xref: /phasta/phSolver/common/test/phIOwrite.f (revision 50f2791fd41c40665d6abf163ab617a7652d03f3)
15be7d1a3SCameron Smith      program readheaderFtn
25be7d1a3SCameron Smith      use iso_c_binding
35be7d1a3SCameron Smith      use phio
4ab645d52SCameron Smith      use syncio
5ab645d52SCameron Smith      use posixio
65be7d1a3SCameron Smith      include "mpif.h"
75be7d1a3SCameron Smith
8ab645d52SCameron Smith      integer, target :: rank, ierror, one, ppf, peers, fish, nfiles
9ab645d52SCameron Smith      type(c_ptr), dimension(2) :: handle
105be7d1a3SCameron Smith      character(len=30) :: dataDbl, iotype
115be7d1a3SCameron Smith      character(len=256) :: phrase
125be7d1a3SCameron Smith      character(len=256), dimension(2) :: fname
13ab645d52SCameron Smith      integer, target, dimension(2) :: fishweight, numFish
145be7d1a3SCameron Smith
155be7d1a3SCameron Smith      call MPI_Init(ierror)
165be7d1a3SCameron Smith      call MPI_Comm_rank(MPI_COMM_WORLD, rank, ierror)
175be7d1a3SCameron Smith      call MPI_Comm_size(MPI_COMM_WORLD, peers, ierror)
185be7d1a3SCameron Smith
195be7d1a3SCameron Smith      phrase = c_char_"number of fishes"//c_null_char
205be7d1a3SCameron Smith      dataDbl = c_char_"double"//c_null_char
215be7d1a3SCameron Smith      iotype =  c_char_"binary"//c_null_char
225be7d1a3SCameron Smith      one = 1
235be7d1a3SCameron Smith      fish = 2
245be7d1a3SCameron Smith
255be7d1a3SCameron Smith      fishweight(1) = 1.23
265be7d1a3SCameron Smith      fishweight(2) = 1.23
275be7d1a3SCameron Smith
285be7d1a3SCameron Smith      fname(1) = c_char_"fortranWater-dat."//c_null_char
295be7d1a3SCameron Smith      fname(2) = c_char_"fortranWater.dat."//c_null_char
30ab645d52SCameron Smith      nfiles = 2
31ab645d52SCameron Smith      ppf = peers/nfiles
32*50f2791fSKenneth E. Jansen      ! handle(1) is the file for syncio writing
33ab645d52SCameron Smith      call syncio_setup_write(nfiles, one, ppf, handle(1))
34*50f2791fSKenneth E. Jansen      ! handle(2) is the file for posix writing
35ab645d52SCameron Smith      call posixio_setup(handle(2), c_char_"w"//c_null_char)
36*50f2791fSKenneth E. Jansen      ! if there were a handle(3) for streams we would do the following
37*50f2791fSKenneth E. Jansen      ! call streamio_setup_write(handle(3), <stream obj>)
38*50f2791fSKenneth E. Jansen      ! after the handles are setup the function calls are the same
39*50f2791fSKenneth E. Jansen      ! write the same garbage to posix and syncio files
405be7d1a3SCameron Smith      do i=1,2
41c8c8de9bSCameron Smith        call phio_openfile(fname(i), handle(i))
42c8c8de9bSCameron Smith        call phio_writeheader(handle(i), phrase, c_loc(fish), one, one,
435be7d1a3SCameron Smith     &      dataDbl, iotype)
44c8c8de9bSCameron Smith        call phio_writedatablock(handle(i), phrase, c_loc(fishweight(i)),
455be7d1a3SCameron Smith     &      one, dataDbl, iotype)
46c8c8de9bSCameron Smith        call phio_closefile(handle(i))
475be7d1a3SCameron Smith      end do
48*50f2791fSKenneth E. Jansen      ! this is the read side... less interesting for us
49ab645d52SCameron Smith      call syncio_setup_read(nfiles, handle(1))
50ab645d52SCameron Smith      call posixio_setup(handle(2), c_char_"r"//c_null_char)
515be7d1a3SCameron Smith      do i=1,2
52c8c8de9bSCameron Smith        call phio_openfile(fname(i), handle(i))
53c8c8de9bSCameron Smith        call phio_readheader(handle(i), phrase, c_loc(numFish(i)),
545be7d1a3SCameron Smith     &      one, dataDbl, iotype)
55c8c8de9bSCameron Smith        call phio_readdatablock(handle(i), phrase, c_loc(fishweight(i)),
565be7d1a3SCameron Smith     &      one, dataDbl, iotype)
57c8c8de9bSCameron Smith        call phio_closefile(handle(i))
585be7d1a3SCameron Smith      end do
595be7d1a3SCameron Smith      if( numFish(1) .ne. numFish(2) .or.
605be7d1a3SCameron Smith     &    fishweight(1) .ne. fishweight(2) ) then
615be7d1a3SCameron Smith        write (*,*) "fish don\'t match"
625be7d1a3SCameron Smith        stop 1
635be7d1a3SCameron Smith      end if
645be7d1a3SCameron Smith      call MPI_Finalize(ierror)
655be7d1a3SCameron Smith      end
66