nc_def_var_3d Subroutine

public subroutine nc_def_var_3d(ncid, name, dimids, varid, deflate_level, xtype, ierr)

Define a 3D variable (x, y, time) with working precision type

Arguments

Type IntentOptional 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 => 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).


Calls

proc~~nc_def_var_3d~~CallsGraph proc~nc_def_var_3d nc_def_var_3d nf90_def_var nf90_def_var proc~nc_def_var_3d->nf90_def_var nf90_def_var_deflate nf90_def_var_deflate proc~nc_def_var_3d->nf90_def_var_deflate proc~nc_check nc_check proc~nc_def_var_3d->proc~nc_check nf90_strerror nf90_strerror proc~nc_check->nf90_strerror proc~fail fail proc~nc_check->proc~fail error error proc~fail->error proc~error_ring_push error_ring_push proc~fail->proc~error_ring_push

Called by

proc~~nc_def_var_3d~~CalledByGraph proc~nc_def_var_3d nc_def_var_3d proc~open_stream open_stream proc~open_stream->proc~nc_def_var_3d proc~engine_configure_diag engine_configure_diag proc~engine_configure_diag->proc~open_stream proc~engine_setup engine_setup proc~engine_setup->proc~engine_configure_diag proc~complete_ocean_create complete_ocean_create proc~complete_ocean_create->proc~engine_setup proc~driver_run_ocean driver_run_ocean proc~driver_run_ocean->proc~engine_setup proc~driver_validate driver_validate proc~driver_validate->proc~engine_setup proc~driver_run driver_run proc~driver_run->proc~driver_run_ocean proc~rdb_ocean_create_finalize rdb_ocean_create_finalize proc~rdb_ocean_create_finalize->proc~complete_ocean_create proc~rdb_ocean_create_from_string rdb_ocean_create_from_string proc~rdb_ocean_create_from_string->proc~complete_ocean_create

Variables

Type Visibility Attributes Name Initial
integer, private :: xt

Source Code

   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