From c64584ff034db61f4a06b3bfe880d15a483b2a27 Mon Sep 17 00:00:00 2001 From: Ed Hartnett Date: Sat, 27 Jul 2019 10:02:34 -0600 Subject: [PATCH] fixed plain old PIO fortran program --- tests/fncint/ftst_pio_orig.f90 | 65 +++++++++++++++------------------- tests/fncint/run_tests.sh | 4 +-- 2 files changed, 31 insertions(+), 38 deletions(-) diff --git a/tests/fncint/ftst_pio_orig.f90 b/tests/fncint/ftst_pio_orig.f90 index cbf41787ea6..e3b46fdd74d 100644 --- a/tests/fncint/ftst_pio_orig.f90 +++ b/tests/fncint/ftst_pio_orig.f90 @@ -25,6 +25,8 @@ program ftst_pio type(iosystem_desc_t) :: ioSystem type(file_desc_t) :: pioFileDesc type(io_desc_t) :: iodesc + type(var_desc_t) :: var + integer(kind=pio_offset_kind) :: recnum = 1 integer :: maplen integer :: decompid, iosysid integer :: varid, i @@ -36,18 +38,17 @@ program ftst_pio call MPI_Comm_size(MPI_COMM_WORLD, ntasks, ierr) ! These control logging in the PIO and netCDF libraries. - ierr = pio_set_log_level(3) - ierr = nf_set_log_level(2) - if (ierr .ne. nf_noerr) call handle_err(ierr) +! ierr = pio_set_log_level(3) +! ierr = nf_set_log_level(2) ! Define an IOSystem. call PIO_init(my_rank, MPI_COMM_WORLD, niotasks, numAggregator, stride, & PIO_rearr_subset, ioSystem, base=base) ! Define a 2D decomposition. - dims(1) = NLAT * 2 / ntasks - dims(2) = NLON * 2 / ntasks - maplen = dims(1) * dims(2) + dims(1) = 4 + dims(2) = 4 + maplen = 4 print *, 'dims: ', dims print *, 'maplen: ', maplen print *, 'my_rank: ', my_rank @@ -57,51 +58,43 @@ program ftst_pio ! in fortran. Also recall that compdof is 1-based for fortran. do i = 1, maplen compdof(i) = i + my_rank * maplen - !data_buffer(i) = my_rank * 10 + i - data_buffer(i) = my_rank + data_buffer(i) = my_rank * 10 + i end do print *, 'compdof', my_rank, compdof call PIO_initdecomp(ioSystem, PIO_int, dims, compdof, iodesc) - - ! ierr = nf_def_decomp(iosysid, PIO_int, dims, compdof, decompid) - ! if (ierr .ne. nf_noerr) call handle_err(ierr) - ! Create a file. ierr = PIO_createfile(ioSystem, pioFileDesc, PIO_IOTYPE_PNETCDF, FILE_NAME, PIO_clobber) - ! ierr = nf_create(FILE_NAME, 64, ncid) - ! if (ierr .ne. nf_noerr) call handle_err(ierr) - - ! ! Define dimensions. - ! ierr = nf_def_dim(ncid, LAT_NAME, NLAT, var_dim(1)) - ! if (ierr .ne. nf_noerr) call handle_err(ierr) - ! ierr = nf_def_dim(ncid, LON_NAME, NLON, var_dim(2)) - ! if (ierr .ne. nf_noerr) call handle_err(ierr) - ! ierr = nf_def_dim(ncid, REC_NAME, NF_UNLIMITED, var_dim(3)) - ! if (ierr .ne. nf_noerr) call handle_err(ierr) - - ! ! Define a data variable. - ! ierr = nf_def_var(ncid, VAR_NAME, NF_INT, NDIM3, var_dim, varid) - ! if (ierr .ne. nf_noerr) call handle_err(ierr) - ! ierr = nf_enddef(ncid) - ! if (ierr .ne. nf_noerr) call handle_err(ierr) - - ! ! Write 1st record with distributed arrays. - ! ierr = nf_put_vard_int(ncid, varid, decompid, 1, data_buffer) - ! if (ierr .ne. nf_noerr) call handle_err(ierr) + if (ierr .ne. nf_noerr) call handle_err(ierr) + + ! Define dimensions. + ierr = PIO_def_dim(pioFileDesc%fh, LAT_NAME, NLAT, var_dim(1)) + if (ierr .ne. nf_noerr) call handle_err(ierr) + ierr = PIO_def_dim(pioFileDesc%fh, LON_NAME, NLON, var_dim(2)) + if (ierr .ne. nf_noerr) call handle_err(ierr) + ierr = PIO_def_dim(pioFileDesc%fh, REC_NAME, NF_UNLIMITED, var_dim(3)) + if (ierr .ne. nf_noerr) call handle_err(ierr) + + ! Define a data variable. + ierr = PIO_def_var(pioFileDesc, VAR_NAME, NF_INT, var_dim, var) + if (ierr .ne. nf_noerr) call handle_err(ierr) + ierr = PIO_enddef(pioFileDesc%fh) + if (ierr .ne. nf_noerr) call handle_err(ierr) + + ! Write 1st record with distributed arrays. + call PIO_setframe(pioFileDesc, var, recnum) + call PIO_write_darray(pioFileDesc, var, iodesc, data_buffer, ierr) + if (ierr .ne. nf_noerr) call handle_err(ierr) ! Close the file. call PIO_closefile(pioFileDesc) - ! ierr = nf_close(ncid) if (ierr .ne. nf_noerr) call handle_err(ierr) ! Free resources. - ! ierr = nf_free_decomp(decompid) - ! if (ierr .ne. nf_noerr) call handle_err(ierr) deallocate(compdof) deallocate(data_buffer) -! call PIO_freedecomp(ioSystem, iodesc) + call PIO_freedecomp(ioSystem, iodesc) call pio_finalize(ioSystem, ierr) ! We're done! diff --git a/tests/fncint/run_tests.sh b/tests/fncint/run_tests.sh index 081d09b51a9..2344b1e4157 100755 --- a/tests/fncint/run_tests.sh +++ b/tests/fncint/run_tests.sh @@ -11,8 +11,8 @@ trap exit INT TERM printf 'running Fortran tests for PIO netCDF integration...\n' #PIO_TESTS='ftst_pio_orig ftst_pio' -#PIO_TESTS='tst_c_pio ftst_pio_orig' -PIO_TESTS='tst_c_pio' +PIO_TESTS='tst_c_pio ftst_pio_orig' +#PIO_TESTS='tst_c_pio' success1=true for TEST in $PIO_TESTS