! ------- function nf90_inq_libvers() character(len = 80) :: nf90_inq_libvers nf90_inq_libvers = nf_inq_libvers() end function nf90_inq_libvers ! ------- function nf90_strerror(ncerr) integer, intent( in) :: ncerr character(len = 80) :: nf90_strerror nf90_strerror = nf_strerror(ncerr) end function nf90_strerror ! ------- ! ! File level control routines: ! function nf90_inq_base_pe(ncid, pe) integer, intent( in) :: ncid integer, intent(out) :: pe integer :: nf90_inq_base_pe nf90_inq_base_pe = nf_inq_base_pe(ncid, pe) end function nf90_inq_base_pe ! ------- function nf90_set_base_pe(ncid, pe) integer, intent( in) :: ncid, pe integer :: nf90_set_base_pe nf90_set_base_pe = nf_set_base_pe(ncid, pe) end function nf90_set_base_pe ! ------- function nf90_create(path, cmode, ncid, initialsize, chunksize) character (len = *), intent(in ) :: path integer, intent(in ) :: cmode integer, intent( out) :: ncid integer, optional, intent(in ) :: initialsize integer, optional, intent(inout) :: chunksize integer :: nf90_create integer :: fileSize, chunk if(.not. (present(initialsize) .or. present(chunksize)) ) then nf90_create = nf_create(path, cmode, ncid) else ! Default values per man page filesize = 0; chunk = nf90_sizehint_default if(present(initialsize)) filesize = initialsize if(present(chunksize )) chunk = chunksize nf90_create = nf__create(path, cmode, filesize, chunk, ncid) ! Pass back the value actually used if(present(chunksize )) chunksize = chunk end if end function nf90_create ! ------- function nf90_create_mp(path, cmode, initalsz, basepe, chunksizehint, ncid) character (len = *), intent( in) :: path integer, intent( in) :: cmode, initalsz, basepe, chunksizehint integer, intent(out) :: ncid integer :: nf90_create_mp nf90_create_mp = nf__create_mp(path, cmode, initalsz, basepe, chunksizehint, ncid) end function nf90_create_mp ! ------- function nf90_open(path, mode, ncid, chunksize) character (len = *), intent(in ) :: path integer, intent(in ) :: mode integer, intent( out) :: ncid integer, optional, intent(inout) :: chunksize integer :: nf90_open if(present(chunksize)) then nf90_open = nf__open(path, mode, chunksize, ncid) else nf90_open = nf_open(path, mode, ncid) end if end function nf90_open ! ------- function nf90_open_mp(path, mode, basepe, chunksizeint, ncid) character (len = *), intent( in) :: path integer, intent( in) :: mode, basepe, chunksizeint integer, intent(out) :: ncid integer :: nf90_open_mp nf90_open_mp = nf__open_mp(path, mode, basepe, chunksizeint, ncid) end function nf90_open_mp ! ------- function nf90_set_fill(ncid, fillmode, old_mode) integer, intent( in) :: ncid, fillmode integer, intent(out) :: old_mode integer :: nf90_set_fill nf90_set_fill = nf_set_fill(ncid, fillmode, old_mode) end function nf90_set_fill ! ------- function nf90_redef(ncid) integer, intent( in) :: ncid integer :: nf90_redef nf90_redef = nf_redef(ncid) end function nf90_redef ! ------- function nf90_enddef(ncid, h_minfree, v_align, v_minfree, r_align) integer, intent( in) :: ncid integer, optional, intent( in) :: h_minfree, v_align, v_minfree, r_align integer :: nf90_enddef integer :: hMinFree, VAlign, VMinFree, RAlign if(.not. any( (/ present(h_minfree), present(v_align), & present(v_minfree), present(r_align) /) ) )then nf90_enddef = nf_enddef(ncid) else ! Default values per the man page hMinFree = 0; VMinFree = 0 VAlign = 4; RAlign = 4 if(present(h_minfree)) HMinFree = h_minfree if(present(v_align )) VAlign = v_align if(present(v_minfree)) VMinFree = v_minfree if(present(r_align )) RAlign = r_align nf90_enddef = nf__enddef(ncid, hMinFree, VAlign, VMinFree, RAlign) end if end function nf90_enddef ! ------- function nf90_sync(ncid) integer, intent( in) :: ncid integer :: nf90_sync nf90_sync = nf_sync(ncid) end function nf90_sync ! ------- function nf90_abort(ncid) integer, intent( in) :: ncid integer :: nf90_abort nf90_abort = nf_abort(ncid) end function nf90_abort ! ------- function nf90_close(ncid) integer, intent( in) :: ncid integer :: nf90_close nf90_close = nf_close(ncid) end function nf90_close ! ------- function nf90_delete(name) character(len = *), intent( in) :: name integer :: nf90_delete nf90_delete = nf_delete(name) end function nf90_delete ! ! A single file level inquiry routine ! function nf90_inquire(ncid, nDimensions, nVariables, nAttributes, unlimitedDimId, formatNum) integer, intent( in) :: ncid integer, optional, intent(out) :: nDimensions, nVariables, nAttributes, unlimitedDimId, formatNum integer :: nf90_inquire integer :: nDims, nVars, nGAtts, unlimDimId, frmt nf90_inquire = nf_inq(ncid, nDims, nVars, nGAtts, unlimDimId) if(present(nDimensions)) nDimensions = nDims if(present(nVariables)) nVariables = nVars if(present(nAttributes)) nAttributes = nGAtts if(present(unlimitedDimId)) unlimitedDimId = unlimDimId if(present(formatNum)) then nf90_inquire = nf_inq_format(ncid, frmt) formatNum = frmt endif end function nf90_inquire