subroutine check(err, message) implicit none include 'mpif.h' include 'pnetcdf.inc' integer err character(len=*) message ! It is a good idea to check returned value for possible error if (err .NE. NF_NOERR) then write(6,*) trim(message), trim(nfmpi_strerror(err)) call MPI_Abort(MPI_COMM_WORLD, -1, err) end if end subroutine check program main implicit none include 'mpif.h' include 'pnetcdf.inc' character(LEN=128) filename integer err, ncid, varid(3), dimid(5) integer(kind=MPI_OFFSET_KIND) cols, rows, lays, vars integer(kind=MPI_OFFSET_KIND) start(4), count(4) integer NCOLS, NROWS, NLAYS, NVARS PARAMETER(NCOLS=423, NROWS=594, NLAYS=14, NVARS=142) real buf(NCOLS, NROWS, NLAYS) call MPI_Init(err) filename = "testfile.nc" ! create file, truncate it if exists err = nfmpi_create(MPI_COMM_WORLD, filename, NF_CLOBBER, + MPI_INFO_NULL, ncid) call check(err, 'In nfmpi_create: ') ! define dimensions cols = NCOLS err = nfmpi_def_dim(ncid, "cols", cols, dimid(1)) call check(err, 'In nfmpi_def_dim cols: ') rows = NROWS err = nfmpi_def_dim(ncid, "rows", rows, dimid(2)) call check(err, 'In nfmpi_def_dim rows: ') lays = NLAYS err = nfmpi_def_dim(ncid, "lays", lays, dimid(3)) call check(err, 'In nfmpi_def_dim lays: ') err = nfmpi_def_dim(ncid, "time", NFMPI_UNLIMITED, dimid(4)) call check(err, 'In nfmpi_def_dim time: ') vars = NVARS err = nfmpi_def_dim(ncid, "vars", vars, dimid(5)) call check(err, 'In nfmpi_def_dim vars: ') ! define variables of float type err = nfmpi_def_var(ncid, "NO2", NF_FLOAT, 4, dimid, varid(1)) call check(err, 'In nfmpi_def_var NO2:') err = nfmpi_def_var(ncid, "NO", NF_FLOAT, 4, dimid, varid(2)) call check(err, 'In nfmpi_def_var NO:') err = nfmpi_def_var(ncid, "O", NF_FLOAT, 4, dimid, varid(3)) call check(err, 'In nfmpi_def_var O:') err = nfmpi_enddef(ncid) call check(err, 'In nfmpi_enddef: ') start = 1 count(1) = 423 count(2) = 50 count(3) = 14 count(4) = 1 err = nfmpi_put_vara_real_all(ncid, varid(1), start, count, + buf) call check(err, 'In nfmpi_put_vara_real_all: ') err = nfmpi_close(ncid) call check(err, 'In nfmpi_close: ') 999 call MPI_Finalize(err) end program main