netcdf_file Derived Type

type, public :: netcdf_file


Contents


Components

Type Visibility Attributes Name Initial
integer, public :: ncid = -1
integer, public :: iverbose
logical, public :: do_transpose_2d = .false.
logical, public :: is_write_mode = .false.
logical, public :: is_define_mode = .true.
logical, public :: is_double_precision = .false.
logical, public :: do_permute_3d = .false.
logical, public :: do_permute_4d = .false.
integer, public :: i_permute_3d(3) = (/1, 2, 3/)
integer, public :: i_permute_4d(4) = (/1, 2, 3, 4/)
character(len=511), public :: file_name

Type-Bound Procedures

procedure, public :: open => open_netcdf_file

  • public subroutine open_netcdf_file(this, file_name, iverbose, is_write_mode, is_hdf5_file)

    Arguments

    Type IntentOptional Attributes Name
    class(netcdf_file) :: this
    character(len=*), intent(in) :: file_name
    integer, intent(in), optional :: iverbose
    logical, intent(in), optional :: is_write_mode
    logical, intent(in), optional :: is_hdf5_file

procedure, public :: create => create_netcdf_file

  • public subroutine create_netcdf_file(this, file_name, iverbose, is_hdf5_file)

    Arguments

    Type IntentOptional Attributes Name
    class(netcdf_file) :: this
    character(len=*), intent(in) :: file_name
    integer, intent(in), optional :: iverbose
    logical, intent(in), optional :: is_hdf5_file

procedure, public :: close => close_netcdf_file

procedure, public :: is_open

  • public function is_open(this)

    Arguments

    Type IntentOptional Attributes Name
    class(netcdf_file) :: this

    Return Value logical

procedure, public :: get_real_scalar

  • public subroutine get_real_scalar(this, var_name, scalar)

    Arguments

    Type IntentOptional Attributes Name
    class(netcdf_file) :: this
    character(len=*), intent(in) :: var_name
    real(kind=jprb), intent(out) :: scalar

procedure, public :: get_int_scalar

  • public subroutine get_int_scalar(this, var_name, scalar)

    Arguments

    Type IntentOptional Attributes Name
    class(netcdf_file) :: this
    character(len=*), intent(in) :: var_name
    integer, intent(out) :: scalar

procedure, public :: get_real_vector

  • public subroutine get_real_vector(this, var_name, vector)

    Arguments

    Type IntentOptional Attributes Name
    class(netcdf_file) :: this
    character(len=*), intent(in) :: var_name
    real(kind=jprb), intent(out), allocatable :: vector(:)

procedure, public :: get_int_vector

  • public subroutine get_int_vector(this, var_name, vector)

    Arguments

    Type IntentOptional Attributes Name
    class(netcdf_file) :: this
    character(len=*), intent(in) :: var_name
    integer, intent(out), allocatable :: vector(:)

procedure, public :: get_real_matrix

  • public subroutine get_real_matrix(this, var_name, matrix, do_transp)

    Arguments

    Type IntentOptional Attributes Name
    class(netcdf_file) :: this
    character(len=*), intent(in) :: var_name
    real(kind=jprb), intent(out), allocatable :: matrix(:,:)
    logical, intent(in), optional :: do_transp

procedure, public :: get_real_array3

  • public subroutine get_real_array3(this, var_name, var, ipermute)

    Arguments

    Type IntentOptional Attributes Name
    class(netcdf_file) :: this
    character(len=*), intent(in) :: var_name
    real(kind=jprb), intent(out), allocatable :: var(:,:,:)
    integer, intent(in), optional :: ipermute(3)

procedure, public :: get_real_scalar_indexed

  • public subroutine get_real_scalar_indexed(this, var_name, scalar, index)

    Arguments

    Type IntentOptional Attributes Name
    class(netcdf_file) :: this
    character(len=*), intent(in) :: var_name
    real(kind=jprb), intent(out) :: scalar
    integer, intent(in) :: index

procedure, public :: get_real_vector_indexed

  • public subroutine get_real_vector_indexed(this, var_name, vector, index)

    Arguments

    Type IntentOptional Attributes Name
    class(netcdf_file) :: this
    character(len=*), intent(in) :: var_name
    real(kind=jprb), intent(out), allocatable :: vector(:)
    integer, intent(in) :: index

procedure, public :: get_real_matrix_indexed

  • public subroutine get_real_matrix_indexed(this, var_name, matrix, index, do_transp)

    Arguments

    Type IntentOptional Attributes Name
    class(netcdf_file) :: this
    character(len=*), intent(in) :: var_name
    real(kind=jprb), intent(out), allocatable :: matrix(:,:)
    integer, intent(in) :: index
    logical, intent(in), optional :: do_transp

procedure, public :: get_real_array3_indexed

  • public subroutine get_real_array3_indexed(this, var_name, var, index, ipermute)

    Arguments

    Type IntentOptional Attributes Name
    class(netcdf_file) :: this
    character(len=*), intent(in) :: var_name
    real(kind=jprb), intent(out), allocatable :: var(:,:,:)
    integer, intent(in) :: index
    integer, intent(in), optional :: ipermute(3)

procedure, public :: get_real_array4

  • public subroutine get_real_array4(this, var_name, var, ipermute)

    Arguments

    Type IntentOptional Attributes Name
    class(netcdf_file) :: this
    character(len=*), intent(in) :: var_name
    real(kind=jprb), intent(out), allocatable :: var(:,:,:,:)
    integer, intent(in), optional :: ipermute(4)

procedure, public :: get_char_vector

  • public subroutine get_char_vector(this, var_name, vector)

    Arguments

    Type IntentOptional Attributes Name
    class(netcdf_file) :: this
    character(len=*), intent(in) :: var_name
    character(len=1), intent(out), allocatable :: vector(:)

procedure, public :: get_char_matrix

  • public subroutine get_char_matrix(this, var_name, matrix, do_transp)

    Arguments

    Type IntentOptional Attributes Name
    class(netcdf_file) :: this
    character(len=*), intent(in) :: var_name
    character(len=1), intent(inout), allocatable :: matrix(:,:)
    logical, intent(in), optional :: do_transp
  • public subroutine get_real_scalar(this, var_name, scalar)

    Arguments

    Type IntentOptional Attributes Name
    class(netcdf_file) :: this
    character(len=*), intent(in) :: var_name
    real(kind=jprb), intent(out) :: scalar
  • public subroutine get_int_scalar(this, var_name, scalar)

    Arguments

    Type IntentOptional Attributes Name
    class(netcdf_file) :: this
    character(len=*), intent(in) :: var_name
    integer, intent(out) :: scalar
  • public subroutine get_real_vector(this, var_name, vector)

    Arguments

    Type IntentOptional Attributes Name
    class(netcdf_file) :: this
    character(len=*), intent(in) :: var_name
    real(kind=jprb), intent(out), allocatable :: vector(:)
  • public subroutine get_int_vector(this, var_name, vector)

    Arguments

    Type IntentOptional Attributes Name
    class(netcdf_file) :: this
    character(len=*), intent(in) :: var_name
    integer, intent(out), allocatable :: vector(:)
  • public subroutine get_real_matrix(this, var_name, matrix, do_transp)

    Arguments

    Type IntentOptional Attributes Name
    class(netcdf_file) :: this
    character(len=*), intent(in) :: var_name
    real(kind=jprb), intent(out), allocatable :: matrix(:,:)
    logical, intent(in), optional :: do_transp
  • public subroutine get_real_array3(this, var_name, var, ipermute)

    Arguments

    Type IntentOptional Attributes Name
    class(netcdf_file) :: this
    character(len=*), intent(in) :: var_name
    real(kind=jprb), intent(out), allocatable :: var(:,:,:)
    integer, intent(in), optional :: ipermute(3)
  • public subroutine get_real_array4(this, var_name, var, ipermute)

    Arguments

    Type IntentOptional Attributes Name
    class(netcdf_file) :: this
    character(len=*), intent(in) :: var_name
    real(kind=jprb), intent(out), allocatable :: var(:,:,:,:)
    integer, intent(in), optional :: ipermute(4)
  • public subroutine get_real_scalar_indexed(this, var_name, scalar, index)

    Arguments

    Type IntentOptional Attributes Name
    class(netcdf_file) :: this
    character(len=*), intent(in) :: var_name
    real(kind=jprb), intent(out) :: scalar
    integer, intent(in) :: index
  • public subroutine get_real_vector_indexed(this, var_name, vector, index)

    Arguments

    Type IntentOptional Attributes Name
    class(netcdf_file) :: this
    character(len=*), intent(in) :: var_name
    real(kind=jprb), intent(out), allocatable :: vector(:)
    integer, intent(in) :: index
  • public subroutine get_real_matrix_indexed(this, var_name, matrix, index, do_transp)

    Arguments

    Type IntentOptional Attributes Name
    class(netcdf_file) :: this
    character(len=*), intent(in) :: var_name
    real(kind=jprb), intent(out), allocatable :: matrix(:,:)
    integer, intent(in) :: index
    logical, intent(in), optional :: do_transp
  • public subroutine get_real_array3_indexed(this, var_name, var, index, ipermute)

    Arguments

    Type IntentOptional Attributes Name
    class(netcdf_file) :: this
    character(len=*), intent(in) :: var_name
    real(kind=jprb), intent(out), allocatable :: var(:,:,:)
    integer, intent(in) :: index
    integer, intent(in), optional :: ipermute(3)
  • public subroutine get_char_vector(this, var_name, vector)

    Arguments

    Type IntentOptional Attributes Name
    class(netcdf_file) :: this
    character(len=*), intent(in) :: var_name
    character(len=1), intent(out), allocatable :: vector(:)
  • public subroutine get_char_matrix(this, var_name, matrix, do_transp)

    Arguments

    Type IntentOptional Attributes Name
    class(netcdf_file) :: this
    character(len=*), intent(in) :: var_name
    character(len=1), intent(inout), allocatable :: matrix(:,:)
    logical, intent(in), optional :: do_transp

procedure, public :: get_real_scalar_attribute

  • public subroutine get_real_scalar_attribute(this, var_name, attr_name, attr)

    Arguments

    Type IntentOptional Attributes Name
    class(netcdf_file) :: this
    character(len=*), intent(in) :: var_name
    character(len=*), intent(in) :: attr_name
    real(kind=jprb), intent(out) :: attr

procedure, public :: get_string_attribute

  • public subroutine get_string_attribute(this, var_name, attr_name, attr_str)

    Arguments

    Type IntentOptional Attributes Name
    class(netcdf_file) :: this
    character(len=*), intent(in) :: var_name
    character(len=*), intent(in) :: attr_name
    character(len=*), intent(inout) :: attr_str

generic, public :: get_attribute => get_real_scalar_attribute, get_string_attribute

  • public subroutine get_real_scalar_attribute(this, var_name, attr_name, attr)

    Arguments

    Type IntentOptional Attributes Name
    class(netcdf_file) :: this
    character(len=*), intent(in) :: var_name
    character(len=*), intent(in) :: attr_name
    real(kind=jprb), intent(out) :: attr
  • public subroutine get_string_attribute(this, var_name, attr_name, attr_str)

    Arguments

    Type IntentOptional Attributes Name
    class(netcdf_file) :: this
    character(len=*), intent(in) :: var_name
    character(len=*), intent(in) :: attr_name
    character(len=*), intent(inout) :: attr_str

procedure, public :: get_global_attribute

  • public subroutine get_global_attribute(this, attr_name, attr_str)

    Arguments

    Type IntentOptional Attributes Name
    class(netcdf_file) :: this
    character(len=*), intent(in) :: attr_name
    character(len=*), intent(inout) :: attr_str

procedure, public :: define_dimension

  • public subroutine define_dimension(this, dim_name, n)

    Arguments

    Type IntentOptional Attributes Name
    class(netcdf_file) :: this
    character(len=*), intent(in) :: dim_name
    integer, intent(in) :: n

procedure, public :: define_variable

  • public subroutine define_variable(this, var_name, dim1_name, dim2_name, dim3_name, dim4_name, long_name, units_str, comment_str, standard_name, is_double, data_type_name, fill_value, deflate_level, shuffle, chunksizes, ndims)

    Arguments

    Type IntentOptional Attributes Name
    class(netcdf_file) :: this
    character(len=*), intent(in) :: var_name
    character(len=*), intent(in), optional :: dim1_name
    character(len=*), intent(in), optional :: dim2_name
    character(len=*), intent(in), optional :: dim3_name
    character(len=*), intent(in), optional :: dim4_name
    character(len=*), intent(in), optional :: long_name
    character(len=*), intent(in), optional :: units_str
    character(len=*), intent(in), optional :: comment_str
    character(len=*), intent(in), optional :: standard_name
    logical, intent(in), optional :: is_double
    character(len=*), intent(in), optional :: data_type_name
    real(kind=jprb), intent(in), optional :: fill_value
    integer, intent(in), optional :: deflate_level
    logical, intent(in), optional :: shuffle
    integer, intent(in), optional, dimension(:) :: chunksizes
    integer, intent(in), optional :: ndims

procedure, public :: put_attribute

  • public subroutine put_attribute(this, var_name, attr_name, attr_str)

    Arguments

    Type IntentOptional Attributes Name
    class(netcdf_file) :: this
    character(len=*), intent(in) :: var_name
    character(len=*), intent(in) :: attr_name
    character(len=*), intent(in) :: attr_str

procedure, public :: put_global_attributes

  • public subroutine put_global_attributes(this, title_str, inst_str, source_str, comment_str, references_str, creator_name, creator_email_str, contributor_name, project_str, conventions_str, prior_history_str)

    Arguments

    Type IntentOptional Attributes Name
    class(netcdf_file) :: this
    character(len=*), intent(in), optional :: title_str
    character(len=*), intent(in), optional :: inst_str
    character(len=*), intent(in), optional :: source_str
    character(len=*), intent(in), optional :: comment_str
    character(len=*), intent(in), optional :: references_str
    character(len=*), intent(in), optional :: creator_name
    character(len=*), intent(in), optional :: creator_email_str
    character(len=*), intent(in), optional :: contributor_name
    character(len=*), intent(in), optional :: project_str
    character(len=*), intent(in), optional :: conventions_str
    character(len=*), intent(in), optional :: prior_history_str

procedure, public :: put_global_attribute

  • public subroutine put_global_attribute(this, attr_name, attr_str)

    Arguments

    Type IntentOptional Attributes Name
    class(netcdf_file) :: this
    character(len=*), intent(in) :: attr_name
    character(len=*), intent(in) :: attr_str

procedure, public :: put_real_scalar

  • public subroutine put_real_scalar(this, var_name, var)

    Arguments

    Type IntentOptional Attributes Name
    class(netcdf_file) :: this
    character(len=*), intent(in) :: var_name
    real(kind=jprb), intent(in) :: var

procedure, public :: put_real_vector

  • public subroutine put_real_vector(this, var_name, var)

    Arguments

    Type IntentOptional Attributes Name
    class(netcdf_file) :: this
    character(len=*), intent(in) :: var_name
    real(kind=jprb), intent(in) :: var(:)

procedure, public :: put_int_vector

  • public subroutine put_int_vector(this, var_name, var)

    Arguments

    Type IntentOptional Attributes Name
    class(netcdf_file) :: this
    character(len=*), intent(in) :: var_name
    integer, intent(in) :: var(:)

procedure, public :: put_real_matrix

  • public subroutine put_real_matrix(this, var_name, var, do_transp)

    Arguments

    Type IntentOptional Attributes Name
    class(netcdf_file) :: this
    character(len=*), intent(in) :: var_name
    real(kind=jprb), intent(in) :: var(:,:)
    logical, intent(in), optional :: do_transp

procedure, public :: put_real_array3

  • public subroutine put_real_array3(this, var_name, var, ipermute)

    Arguments

    Type IntentOptional Attributes Name
    class(netcdf_file) :: this
    character(len=*), intent(in) :: var_name
    real(kind=jprb), intent(in) :: var(:,:,:)
    integer, intent(in), optional :: ipermute(3)

procedure, public :: put_real_scalar_indexed

  • public subroutine put_real_scalar_indexed(this, var_name, index, var)

    Arguments

    Type IntentOptional Attributes Name
    class(netcdf_file) :: this
    character(len=*), intent(in) :: var_name
    integer, intent(in) :: index
    real(kind=jprb), intent(in) :: var

procedure, public :: put_real_vector_indexed

  • public subroutine put_real_vector_indexed(this, var_name, var, index2, index3)

    Arguments

    Type IntentOptional Attributes Name
    class(netcdf_file) :: this
    character(len=*), intent(in) :: var_name
    real(kind=jprb), intent(in) :: var(:)
    integer, intent(in) :: index2
    integer, intent(in), optional :: index3

procedure, public :: put_real_matrix_indexed

  • public subroutine put_real_matrix_indexed(this, var_name, var, index3, index4, do_transp)

    Arguments

    Type IntentOptional Attributes Name
    class(netcdf_file) :: this
    character(len=*), intent(in) :: var_name
    real(kind=jprb), intent(in) :: var(:,:)
    integer, intent(in) :: index3
    integer, intent(in), optional :: index4
    logical, intent(in), optional :: do_transp
  • public subroutine put_real_scalar(this, var_name, var)

    Arguments

    Type IntentOptional Attributes Name
    class(netcdf_file) :: this
    character(len=*), intent(in) :: var_name
    real(kind=jprb), intent(in) :: var
  • public subroutine put_real_vector(this, var_name, var)

    Arguments

    Type IntentOptional Attributes Name
    class(netcdf_file) :: this
    character(len=*), intent(in) :: var_name
    real(kind=jprb), intent(in) :: var(:)
  • public subroutine put_real_matrix(this, var_name, var, do_transp)

    Arguments

    Type IntentOptional Attributes Name
    class(netcdf_file) :: this
    character(len=*), intent(in) :: var_name
    real(kind=jprb), intent(in) :: var(:,:)
    logical, intent(in), optional :: do_transp
  • public subroutine put_real_array3(this, var_name, var, ipermute)

    Arguments

    Type IntentOptional Attributes Name
    class(netcdf_file) :: this
    character(len=*), intent(in) :: var_name
    real(kind=jprb), intent(in) :: var(:,:,:)
    integer, intent(in), optional :: ipermute(3)
  • public subroutine put_real_scalar_indexed(this, var_name, index, var)

    Arguments

    Type IntentOptional Attributes Name
    class(netcdf_file) :: this
    character(len=*), intent(in) :: var_name
    integer, intent(in) :: index
    real(kind=jprb), intent(in) :: var
  • public subroutine put_real_vector_indexed(this, var_name, var, index2, index3)

    Arguments

    Type IntentOptional Attributes Name
    class(netcdf_file) :: this
    character(len=*), intent(in) :: var_name
    real(kind=jprb), intent(in) :: var(:)
    integer, intent(in) :: index2
    integer, intent(in), optional :: index3
  • public subroutine put_real_matrix_indexed(this, var_name, var, index3, index4, do_transp)

    Arguments

    Type IntentOptional Attributes Name
    class(netcdf_file) :: this
    character(len=*), intent(in) :: var_name
    real(kind=jprb), intent(in) :: var(:,:)
    integer, intent(in) :: index3
    integer, intent(in), optional :: index4
    logical, intent(in), optional :: do_transp
  • public subroutine put_int_vector(this, var_name, var)

    Arguments

    Type IntentOptional Attributes Name
    class(netcdf_file) :: this
    character(len=*), intent(in) :: var_name
    integer, intent(in) :: var(:)

procedure, public :: set_verbose

  • public subroutine set_verbose(this, ival)

    Arguments

    Type IntentOptional Attributes Name
    class(netcdf_file) :: this
    integer, optional :: ival

procedure, public :: transpose_matrices

  • public subroutine transpose_matrices(this, do_transpose)

    Arguments

    Type IntentOptional Attributes Name
    class(netcdf_file) :: this
    logical, optional :: do_transpose

procedure, public :: double_precision

  • public subroutine double_precision(this, is_double)

    Arguments

    Type IntentOptional Attributes Name
    class(netcdf_file) :: this
    logical, optional :: is_double

procedure, public :: permute_3d_arrays

  • public subroutine permute_3d_arrays(this, ipermute)

    Arguments

    Type IntentOptional Attributes Name
    class(netcdf_file) :: this
    integer, intent(in) :: ipermute(3)

procedure, public :: get_rank

  • public function get_rank(this, var_name) result(ndims)

    Arguments

    Type IntentOptional Attributes Name
    class(netcdf_file) :: this
    character(len=*), intent(in) :: var_name

    Return Value integer

procedure, public :: exists

  • public function exists(this, var_name) result(is_present)

    Arguments

    Type IntentOptional Attributes Name
    class(netcdf_file) :: this
    character(len=*), intent(in) :: var_name

    Return Value logical

procedure, public :: get_outer_dimension

  • public function get_outer_dimension(this, var_name) result(n)

    Arguments

    Type IntentOptional Attributes Name
    class(netcdf_file) :: this
    character(len=*), intent(in) :: var_name

    Return Value integer

procedure, public :: attribute_exists

  • public function attribute_exists(this, var_name, attr_name, len) result(is_present)

    Arguments

    Type IntentOptional Attributes Name
    class(netcdf_file) :: this
    character(len=*), intent(in) :: var_name
    character(len=*), intent(in) :: attr_name
    integer, intent(in), optional :: len

    Return Value logical

procedure, public :: global_attribute_exists

  • public function global_attribute_exists(this, attr_name, len) result(is_present)

    Arguments

    Type IntentOptional Attributes Name
    class(netcdf_file) :: this
    character(len=*), intent(in) :: attr_name
    integer, intent(in), optional :: len

    Return Value logical

procedure, public :: copy_variable_definition

procedure, public :: copy_variable

  • public subroutine copy_variable(this, infile, var_name)

    Arguments

    Type IntentOptional Attributes Name
    class(netcdf_file) :: this
    class(netcdf_file), intent(in) :: infile
    character(len=*), intent(in) :: var_name