Define a 3D variable (x, y, time) with working precision type
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer, | intent(in) | :: | ncid | |||
| character(len=*), | intent(in) | :: | name | |||
| integer, | intent(in) | :: | dimids(3) | |||
| integer, | intent(out) | :: | varid | |||
| integer, | intent(in), | optional | :: | deflate_level |
Compression level (0=none, 1-9=deflate). Enables shuffle when > 0. |
|
| integer, | intent(in), | optional | :: | xtype |
NetCDF element type. Absent => |
|
| integer, | intent(out), | optional | :: | ierr |
Non-zero on failure when present; absent behaves as today
( |
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| integer, | private | :: | xt |
subroutine nc_def_var_3d(ncid, name, dimids, varid, deflate_level, xtype, ierr) !! Define a 3D variable (x, y, time) with working precision type integer, intent(in) :: ncid character(len=*), intent(in) :: name integer, intent(in) :: dimids(3) integer, intent(out) :: varid integer, intent(in), optional :: deflate_level !! Compression level (0=none, 1-9=deflate). Enables shuffle when > 0. integer, intent(in), optional :: xtype !! NetCDF element type. Absent => `NC_WP` (working precision), so !! every legacy call site is unchanged. The ocean diagnostic !! stream passes `NC_R4` when single-precision output is requested; !! the caller is then responsible for handing `nf90_put_var` real32 !! data (see `nc_put_var_3d_slice_r4`). integer, intent(out), optional :: ierr !! Non-zero on failure when present; absent behaves as today !! (`error stop`). integer :: xt xt = NC_WP if (present(xtype)) xt = xtype call nc_check(nf90_def_var(ncid, name, xt, dimids, varid), & "defining variable "//trim(name), ierr) if (present(ierr)) then if (ierr /= nf90_noerr) return end if if (present(deflate_level)) then if (deflate_level > 0) then call nc_check(nf90_def_var_deflate(ncid, varid, & shuffle=1, deflate=1, deflate_level=deflate_level), & "enabling compression for "//trim(name), ierr) end if end if end subroutine nc_def_var_3d