! ! Copyright (C) 2012, Northwestern University ! See COPYRIGHT notice in top-level directory. ! program main use mpi use pnetcdf implicit none !#include integer i, j, ncid, varid(2), retval, err, rank, nprocs integer no_err, cmode integer dimid(2) integer req(2), status(2) integer(kind=MPI_OFFSET_KIND) start(2) integer(kind=MPI_OFFSET_KIND) count(2) integer(kind=MPI_OFFSET_KIND) stride(2) integer(kind=MPI_OFFSET_KIND) imap(2) integer(kind=MPI_OFFSET_KIND) bufsize character(len=12):: var1, var2(6) call MPI_INIT(err) call MPI_COMM_RANK(MPI_COMM_WORLD, rank, err) call MPI_COMM_SIZE(MPI_COMM_WORLD, nprocs, err) cmode = IOR(NF_CLOBBER, NF_64BIT_DATA) err = nfmpi_create(MPI_COMM_WORLD, 'test.nc', cmode, & MPI_INFO_NULL, ncid) if (err < NF_NOERR) print*,'Error at nfmpi_create ', & nfmpi_strerror(err) ! define a variable of a (4*nprocs) x 6 integer array in the nc file err = nfmpi_def_dim(ncid, 'Clen1', 12_MPI_OFFSET_KIND, dimid(1)) if (err < NF_NOERR) print*,'Error at nfmpi_def_dim ', & nfmpi_strerror(err) err = nfmpi_def_dim(ncid, 'Clen2', 6_MPI_OFFSET_KIND, dimid(2)) if (err < NF_NOERR) print*,'Error at nfmpi_def_dim ', & nfmpi_strerror(err) err = nfmpi_def_var(ncid, 'string1', NF_CHAR, 1, dimid(1), & varid(1)) if (err < NF_NOERR) print*,'Error at nfmpi_def_var ', & nfmpi_strerror(err) err = nfmpi_def_var(ncid, 'string2', NF_CHAR, 2, dimid, & varid(2)) if (err < NF_NOERR) print*,'Error at nfmpi_def_var ', & nfmpi_strerror(err) err = nfmpi_enddef(ncid) if (err < NF_NOERR) print*,'Error at nfmpi_enddef ', & nfmpi_strerror(err) var1 = 'abcdefghijkl' var2(1) = '1bcdefghijkl' var2(2) = '2bcdefghijkl' var2(3) = '3bcdefghijkl' var2(4) = '4bcdefghijkl' var2(5) = '5bcdefghijkl' var2(6) = '6bcdefghijkl' err = nfmpi_begin_indep_data(ncid) err = nfmpi_put_var_text(ncid, varid(1), var1) if (err < NF_NOERR) print*,'Error at nfmpi_put_var_text ', & nfmpi_strerror(err) ! write to the 2nd two columns of the variable in transposed way err = nfmpi_put_var_text(ncid, varid(2), var2) if (err < NF_NOERR) print*,'Error at nfmpi_put_var_text ', & nfmpi_strerror(err) err = nfmpi_end_indep_data(ncid) err = nfmpi_close(ncid) if (err < NF_NOERR) print*,'Error at nfmpi_close ', & nfmpi_strerror(err) CALL MPI_Finalize(err) return end program