subroutine wrap_create (path, cmode, ncid) implicit none include 'netcdf.inc' character*(*) path integer cmode, ncid integer ret ret = nf_create (path, cmode, ncid) if (ret.ne.NF_NOERR) call handle_error (ret) end subroutine subroutine wrap_open (path, omode, ncid) implicit none include 'netcdf.inc' character*(*) path integer omode integer ncid integer ret ret = nf_open (path, omode, ncid) if (ret.ne.NF_NOERR) then write(6,*)'WRAP_OPEN: nf_open failed for file ',path call handle_error (ret) end if end subroutine subroutine wrap_inq_varid (nfid, varname, varid) implicit none include 'netcdf.inc' integer nfid, varid character*(*) varname integer ret ret = nf_inq_varid (nfid, varname, varid) if (ret.ne.NF_NOERR) then write(6,*)'nf_inq_varid: ',trim(varname),' not found' call handle_error (ret) end if end subroutine wrap_inq_varid subroutine wrap_inq_dimname (nfid, dimid, dimname) implicit none include 'netcdf.inc' integer nfid, dimid character*(*) dimname integer ret ret = nf_inq_dimname (nfid, dimid, dimname) if (ret.ne.NF_NOERR) call handle_error (ret) end subroutine subroutine wrap_inq_dimlen (nfid, dimid, dimlen) implicit none include 'netcdf.inc' integer nfid, dimid, dimlen integer ret ret = nf_inq_dimlen (nfid, dimid, dimlen) if (ret.ne.NF_NOERR) call handle_error (ret) end subroutine wrap_inq_dimlen subroutine wrap_inq_dimid (nfid, dimname, dimid) implicit none include 'netcdf.inc' integer nfid, dimid character*(*) dimname integer ret ret = nf_inq_dimid (nfid, dimname, dimid) if (ret.ne.NF_NOERR) call handle_error (ret) end subroutine wrap_inq_dimid subroutine wrap_inq_var (nfid, varid, varname, xtype, ndims, dimids, natts) implicit none include 'netcdf.inc' integer nfid, varid, xtype, ndims, dimids(nf_max_dims), natts character*(*) varname integer ret ret = nf_inq_var (nfid, varid, varname, xtype, ndims, dimids, natts) if (ret.ne.NF_NOERR) call handle_error (ret) end subroutine wrap_inq_var subroutine wrap_def_dim (nfid, dimname, len, dimid) implicit none include 'netcdf.inc' integer nfid, len, dimid character*(*) dimname integer ret ret = nf_def_dim (nfid, dimname, len, dimid) if (ret.ne.NF_NOERR) call handle_error (ret) end subroutine wrap_def_dim subroutine wrap_def_var (nfid, name, xtype, nvdims, vdims, varid) implicit none include 'netcdf.inc' integer nfid, xtype, nvdims, varid integer vdims(nvdims) character*(*) name integer ret ret = nf_def_var (nfid, name, xtype, nvdims, vdims, varid) ! write(6,*)'WRAP_DEF_VAR: ',name,' has varid ',varid,nvdims, ! $'dimensions of ids ',(vdims(i),i=1,nvdims) if (ret.ne.NF_NOERR) call handle_error (ret) end subroutine subroutine wrap_get_var_double (nfid, varid, arr) implicit none include 'netcdf.inc' integer nfid, varid real*8 arr(*) integer ret ret = nf_get_var_double (nfid, varid, arr) if (ret.ne.NF_NOERR) call handle_error (ret) end subroutine wrap_get_var_double subroutine wrap_get_var_int (nfid, varid, arr) implicit none include 'netcdf.inc' integer nfid, varid integer arr(*) integer ret ret = nf_get_var_int (nfid, varid, arr) if (ret.ne.NF_NOERR) call handle_error (ret) end subroutine wrap_get_var_int subroutine wrap_get_vara_double (nfid, varid, start, count, arr) implicit none include 'netcdf.inc' integer nfid, varid, start(nf_max_dims), count(nf_max_dims) real*8 arr(*) integer ret ret = nf_get_vara_double (nfid, varid, start, count, arr) if (ret.ne.NF_NOERR) call handle_error (ret) end subroutine wrap_get_vara_double subroutine wrap_get_vara_int (nfid, varid, start, count, arr) use shr_kind_mod, only: r8 => shr_kind_r8 implicit none include 'netcdf.inc' integer nfid, varid, start(*), count(*) integer arr(*) integer ret ret = nf_get_vara_int (nfid, varid, start, count, arr) if (ret.ne.NF_NOERR) then write(6,*)'WRAP_GET_VARA8: error reading varid =', varid call handle_error (ret) end if end subroutine subroutine wrap_put_vara_text (nfid, varid, start, count, text) implicit none include 'netcdf.inc' integer nfid, varid integer start(*), count(*) character*(*) text integer ret ret = nf_put_vara_text (nfid, varid, start, count, text) if (ret.ne.NF_NOERR) then write(6,*)'WRAP_PUT_VARA_TEXT: error writing varid =', varid call handle_error (ret) end if end subroutine !------------------------------------------------------------------------------ subroutine wrap_get_vara_text (nfid, varid, start, count, text) implicit none include 'netcdf.inc' integer nfid, varid integer start(*), count(*) character*(*) text integer ret ret = nf_get_vara_text (nfid, varid, start, count, text) if (ret.ne.NF_NOERR) then write(6,*)'WRAP_GET_VARA_TEXT: error writing varid =', varid call handle_error (ret) end if end subroutine subroutine wrap_put_var8 (nfid, varid, arr) implicit none include 'netcdf.inc' integer nfid, varid real*8 arr(*) integer ret ret = nf_put_var_double (nfid, varid, arr) if (ret.ne.NF_NOERR) call handle_error (ret) end subroutine wrap_put_var8 subroutine wrap_put_vara_double (nfid, varid, start, count, arr) use shr_kind_mod, only: r8 => shr_kind_r8 implicit none include 'netcdf.inc' integer nfid, varid integer start(*), count(*) real(r8) arr(*) integer ret ret = nf_put_vara_double (nfid, varid, start, count, arr) if (ret.ne.NF_NOERR) call handle_error (ret) end subroutine subroutine handle_error (ret) implicit none include 'netcdf.inc' integer ret write(6,*) nf_strerror (ret) call abort end subroutine handle_error subroutine wrap_put_vara_int (nfid, varid, start, count, arr) use shr_kind_mod, only: r8 => shr_kind_r8 implicit none include 'netcdf.inc' integer nfid, varid, start(*), count(*) integer arr(*) integer ret ret = nf_put_vara_int (nfid, varid, start, count, arr) if (ret.ne.NF_NOERR) call handle_error (ret) end subroutine subroutine wrap_inq (nfid, ndims, nvars, ngatts, unlimdimid) implicit none include 'netcdf.inc' integer nfid, ndims, nvars, ngatts, unlimdimid integer ret ret = nf_inq (nfid, ndims, nvars, ngatts, unlimdimid) if (ret.ne.NF_NOERR) call handle_error (ret) end subroutine subroutine wrap_inq_dim (nfid, dimid, name, length) implicit none include 'netcdf.inc' integer nfid, dimid, length character*(*) name integer ret ret = nf_inq_dim (nfid, dimid, name, length) if (ret.ne.NF_NOERR) call handle_error (ret) end subroutine subroutine wrap_inq_attname (nfid, varid, num, attname) implicit none include 'netcdf.inc' integer nfid, varid, num character*(*) attname integer ret ret = nf_inq_attname (nfid, varid, num, attname) if (ret.ne.NF_NOERR) call handle_error (ret) end subroutine subroutine wrap_get_att_text (nfid, varid, attname, atttext) implicit none include 'netcdf.inc' integer nfid, varid character*(*) attname, atttext integer ret ret = nf_get_att_text (nfid, varid, attname, atttext) if (ret.ne.NF_NOERR) call handle_error (ret) end subroutine subroutine wrap_copy_att (nfid, varid, attname, nfido, varido) implicit none include 'netcdf.inc' integer nfid, varid, nfido, varido character*(*) attname integer ret ret = nf_copy_att (nfid, varid, attname, nfido, varido) if (ret.ne.NF_NOERR) call handle_error (ret) end subroutine