0.6.2-dev0
FORCES
FORtran lib for Comp. Env. Sys.
Loading...
Searching...
No Matches
mo_ncwrite::var2nc Interface Reference

Extended dump_netcdf for multiple variables. More...

Public Member Functions

subroutine var2nc_1d_i4 (f_name, arr, dnames, v_name, dim_unlimited, long_name, units, missing_value, attributes, create, ncid, nrec)
 
subroutine var2nc_1d_sp (f_name, arr, dnames, v_name, dim_unlimited, long_name, units, missing_value, attributes, create, ncid, nrec)
 
subroutine var2nc_1d_dp (f_name, arr, dnames, v_name, dim_unlimited, long_name, units, missing_value, attributes, create, ncid, nrec)
 
subroutine var2nc_2d_i4 (f_name, arr, dnames, v_name, dim_unlimited, long_name, units, missing_value, attributes, create, ncid, nrec)
 
subroutine var2nc_2d_sp (f_name, arr, dnames, v_name, dim_unlimited, long_name, units, missing_value, attributes, create, ncid, nrec)
 
subroutine var2nc_2d_dp (f_name, arr, dnames, v_name, dim_unlimited, long_name, units, missing_value, attributes, create, ncid, nrec)
 
subroutine var2nc_3d_i4 (f_name, arr, dnames, v_name, dim_unlimited, long_name, units, missing_value, attributes, create, ncid, nrec)
 
subroutine var2nc_3d_sp (f_name, arr, dnames, v_name, dim_unlimited, long_name, units, missing_value, attributes, create, ncid, nrec)
 
subroutine var2nc_3d_dp (f_name, arr, dnames, v_name, dim_unlimited, long_name, units, missing_value, attributes, create, ncid, nrec)
 
subroutine var2nc_4d_i4 (f_name, arr, dnames, v_name, dim_unlimited, long_name, units, missing_value, attributes, create, ncid, nrec)
 
subroutine var2nc_4d_sp (f_name, arr, dnames, v_name, dim_unlimited, long_name, units, missing_value, attributes, create, ncid, nrec)
 
subroutine var2nc_4d_dp (f_name, arr, dnames, v_name, dim_unlimited, long_name, units, missing_value, attributes, create, ncid, nrec)
 
subroutine var2nc_5d_i4 (f_name, arr, dnames, v_name, dim_unlimited, long_name, units, missing_value, attributes, create, ncid, nrec)
 
subroutine var2nc_5d_sp (f_name, arr, dnames, v_name, dim_unlimited, long_name, units, missing_value, attributes, create, ncid, nrec)
 
subroutine var2nc_5d_dp (f_name, arr, dnames, v_name, dim_unlimited, long_name, units, missing_value, attributes, create, ncid, nrec)
 

Detailed Description

Extended dump_netcdf for multiple variables.

Write different variables including attributes to netcdf file. The attributes are restricted to long_name, units, and missing_value. It is also possible to append variables when an unlimited dimension is specified.

Example

Let <field> be some three dimensional array

dnames(1) = 'x'
dnames(2) = 'y'
dnames(3) = 'time'

The simplest call to write <field> to a file is

call var2nc('test.nc', field, dnames, 'h')

With attributes it looks like

call var2nc('test.nc', field, dnames, 'h', &
long_name = 'height', units = '[m]', missing_value = -9999)

or alternatively

character(256), dimension(3,2) :: attributes
attributes(1,1) = 'long_name'
attributes(1,2) = 'precipitation'
attributes(2,1) = 'units'
attributes(2,2) = '[mm/d]'
attributes(3,1) = 'missing_value'
attributes(3,2) = '-9999.'
call var2nc('test.nc', field, dnames, 'h', attributes = attributes, create = .true. )

To be able to dynamically write <field>, an unlimited dimension needs to be specified (in this example field could also be only two dimensional)

call var2nc('test.nc', field(:,:,1), dnames, 'h', dim_unlimited=3)

Now one can append an arbitrary number of time steps, e.g., the next 9 and the time has to be added again before

call var2nc('test.nc', (/20,...,100/), dnames(3:3), 'time',
dim_unlimited = 1 )
call var2nc('test.nc', field(:,:,2:10, dnames, 'h', dim_unlimited=3)

You can also write another variable sharing the same dimensions

call var2nc('test.nc', field_2, dnames(1:2), 'h_2')

The netcdf file can stay open after the first call and subsequent calls can use the file unit

ncid = -1_i4
call var2nc('test.nc', field_1, dnames(1:1), 'h_1', ncid=ncid) ! opens file
call var2nc('test.nc', field_2, dnames(1:2), 'h_2', ncid=ncid) ! uses ncid from last call
call close_netcdf(ncid)

One can also give the start record number (on the unlimited dimension)

ncid = -1_i4
call var2nc('test.nc', time1, dnames(3:3), 'time', dim_unlimited=1_i4, ncid=ncid, create=.true.)
do i=1, n
call var2nc('test.nc', field_2(:,:,i), dnames(1:3), 'h_2', dim_unlimited=3_i4, ncid=ncid, nrec=i)
end do
call close_netcdf(ncid)

That's it, enjoy!

Literature

The manual of the used netcdf fortran library can be found in Robert Pincus & Ross Rew, The netcdf Fortran 90 Interface Guide

Parameters
[in]character(*) :: f_namefilename
[in]integer(i4)/real(sp,dp) :: arr(:[,:[,:[,:[,:]]]])array to write
[in]character(*) :: dnames(:)dimension names
[in]character(*) :: v_namevariable name
[in]integer(i4), optional :: dim_unlimitedindex of unlimited dimension
[in]character(*), optional :: long_nameattribute
[in]character(*), optional :: unitsattribute
[in]integer(i4)/real(sp,dp), optional :: missing_valueattribute
[in]character(256), dimension(:,:), optional :: attributestwo dimensional array of attributes size of first dimension equals number of attributes first entry of second dimension equals attribute name (e.g. long_name)
second entry of second dimension equals attribute value (e.g. precipitation)
every attribute is written as string with the exception of missing_value
[in]logical, optional :: createflag - specify whether a output file should be created, default
[in,out]integer(i4)/real(sp,dp), optional :: ncidif not given filename will be opened and closed if given and <0 then file will be opened and ncid will return the file unit. if given and >0 then file is assumed open and ncid is used as file unit.
[in]integer(i4), optional :: nrecif given: start point on unlimited dimension.
Note
It is not allowed to write the following numbers for the indicated type
number | kind
-2.1474836E+09 | integer(i4)
9.9692100E+36 | real(sp)
9.9692099683868690E+36 | real(dp)
These numbers are netcdf fortran 90 constants! They are used to determine the chunksize of the already written variable. Hence, this routine cannot append correctly to variables when these numbers are used. Only five dimensional variables can be written, only one unlimited dimension can be defined.
Author
Stephan Thober & Matthias Cuntz
Date
May 2014
  • created
Jun 2014
  • added deflate, shuffle, and chunksizes
  • automatically append variable at the end, renamed _FillValue to missing_value
Jul 2014
  • add attributes array, introduced unlimited dimension that is added to the dimensions of the given array
Jan 2015
  • changed chunk_size convention to one chunk per unit in unlimited dimension (typically time)
Feb 2015
  • d_unlimit was not set in 5d cases
  • use ne from mo_utils for fill value comparisons
  • dummy(1) was sp instead of i4 in var2nc_1d_i4
May 2015
  • ncid for opening the file only once
  • nrec for writing a specific record

Definition at line 303 of file mo_ncwrite.f90.

Member Function/Subroutine Documentation

◆ var2nc_1d_dp()

subroutine mo_ncwrite::var2nc::var2nc_1d_dp ( character(len = *), intent(in)  f_name,
real(dp), dimension(:), intent(in)  arr,
character(len = *), dimension(:), intent(in)  dnames,
character(len = *), intent(in)  v_name,
integer(i4), intent(in), optional  dim_unlimited,
character(len = *), intent(in), optional  long_name,
character(len = *), intent(in), optional  units,
real(dp), intent(in), optional  missing_value,
character(256), dimension(:, :), intent(in), optional  attributes,
logical, intent(in), optional  create,
integer(i4), intent(inout), optional  ncid,
integer(i4), intent(in), optional  nrec 
)

Definition at line 3103 of file mo_ncwrite.f90.

◆ var2nc_1d_i4()

subroutine mo_ncwrite::var2nc::var2nc_1d_i4 ( character(len = *), intent(in)  f_name,
integer(i4), dimension(:), intent(in)  arr,
character(len = *), dimension(:), intent(in)  dnames,
character(len = *), intent(in)  v_name,
integer(i4), intent(in), optional  dim_unlimited,
character(len = *), intent(in), optional  long_name,
character(len = *), intent(in), optional  units,
integer(i4), intent(in), optional  missing_value,
character(256), dimension(:, :), intent(in), optional  attributes,
logical, intent(in), optional  create,
integer(i4), intent(inout), optional  ncid,
integer(i4), intent(in), optional  nrec 
)

Definition at line 2762 of file mo_ncwrite.f90.

◆ var2nc_1d_sp()

subroutine mo_ncwrite::var2nc::var2nc_1d_sp ( character(len = *), intent(in)  f_name,
real(sp), dimension(:), intent(in)  arr,
character(len = *), dimension(:), intent(in)  dnames,
character(len = *), intent(in)  v_name,
integer(i4), intent(in), optional  dim_unlimited,
character(len = *), intent(in), optional  long_name,
character(len = *), intent(in), optional  units,
real(sp), intent(in), optional  missing_value,
character(256), dimension(:, :), intent(in), optional  attributes,
logical, intent(in), optional  create,
integer(i4), intent(inout), optional  ncid,
integer(i4), intent(in), optional  nrec 
)

Definition at line 2933 of file mo_ncwrite.f90.

◆ var2nc_2d_dp()

subroutine mo_ncwrite::var2nc::var2nc_2d_dp ( character(len = *), intent(in)  f_name,
real(dp), dimension(:, :), intent(in)  arr,
character(len = *), dimension(:), intent(in)  dnames,
character(len = *), intent(in)  v_name,
integer(i4), intent(in), optional  dim_unlimited,
character(len = *), intent(in), optional  long_name,
character(len = *), intent(in), optional  units,
real(dp), intent(in), optional  missing_value,
character(256), dimension(:, :), intent(in), optional  attributes,
logical, intent(in), optional  create,
integer(i4), intent(inout), optional  ncid,
integer(i4), intent(in), optional  nrec 
)

Definition at line 3633 of file mo_ncwrite.f90.

◆ var2nc_2d_i4()

subroutine mo_ncwrite::var2nc::var2nc_2d_i4 ( character(len = *), intent(in)  f_name,
integer(i4), dimension(:, :), intent(in)  arr,
character(len = *), dimension(:), intent(in)  dnames,
character(len = *), intent(in)  v_name,
integer(i4), intent(in), optional  dim_unlimited,
character(len = *), intent(in), optional  long_name,
character(len = *), intent(in), optional  units,
integer(i4), intent(in), optional  missing_value,
character(256), dimension(:, :), intent(in), optional  attributes,
logical, intent(in), optional  create,
integer(i4), intent(inout), optional  ncid,
integer(i4), intent(in), optional  nrec 
)

Definition at line 3273 of file mo_ncwrite.f90.

◆ var2nc_2d_sp()

subroutine mo_ncwrite::var2nc::var2nc_2d_sp ( character(len = *), intent(in)  f_name,
real(sp), dimension(:, :), intent(in)  arr,
character(len = *), dimension(:), intent(in)  dnames,
character(len = *), intent(in)  v_name,
integer(i4), intent(in), optional  dim_unlimited,
character(len = *), intent(in), optional  long_name,
character(len = *), intent(in), optional  units,
real(sp), intent(in), optional  missing_value,
character(256), dimension(:, :), intent(in), optional  attributes,
logical, intent(in), optional  create,
integer(i4), intent(inout), optional  ncid,
integer(i4), intent(in), optional  nrec 
)

Definition at line 3453 of file mo_ncwrite.f90.

◆ var2nc_3d_dp()

subroutine mo_ncwrite::var2nc::var2nc_3d_dp ( character(len = *), intent(in)  f_name,
real(dp), dimension(:, :, :), intent(in)  arr,
character(len = *), dimension(:), intent(in)  dnames,
character(len = *), intent(in)  v_name,
integer(i4), intent(in), optional  dim_unlimited,
character(len = *), intent(in), optional  long_name,
character(len = *), intent(in), optional  units,
real(dp), intent(in), optional  missing_value,
character(256), dimension(:, :), intent(in), optional  attributes,
logical, intent(in), optional  create,
integer(i4), intent(inout), optional  ncid,
integer(i4), intent(in), optional  nrec 
)

Definition at line 4174 of file mo_ncwrite.f90.

◆ var2nc_3d_i4()

subroutine mo_ncwrite::var2nc::var2nc_3d_i4 ( character(len = *), intent(in)  f_name,
integer(i4), dimension(:, :, :), intent(in)  arr,
character(len = *), dimension(:), intent(in)  dnames,
character(len = *), intent(in)  v_name,
integer(i4), intent(in), optional  dim_unlimited,
character(len = *), intent(in), optional  long_name,
character(len = *), intent(in), optional  units,
integer(i4), intent(in), optional  missing_value,
character(256), dimension(:, :), intent(in), optional  attributes,
logical, intent(in), optional  create,
integer(i4), intent(inout), optional  ncid,
integer(i4), intent(in), optional  nrec 
)

Definition at line 3813 of file mo_ncwrite.f90.

◆ var2nc_3d_sp()

subroutine mo_ncwrite::var2nc::var2nc_3d_sp ( character(len = *), intent(in)  f_name,
real(sp), dimension(:, :, :), intent(in)  arr,
character(len = *), dimension(:), intent(in)  dnames,
character(len = *), intent(in)  v_name,
integer(i4), intent(in), optional  dim_unlimited,
character(len = *), intent(in), optional  long_name,
character(len = *), intent(in), optional  units,
real(sp), intent(in), optional  missing_value,
character(256), dimension(:, :), intent(in), optional  attributes,
logical, intent(in), optional  create,
integer(i4), intent(inout), optional  ncid,
integer(i4), intent(in), optional  nrec 
)

Definition at line 3993 of file mo_ncwrite.f90.

◆ var2nc_4d_dp()

subroutine mo_ncwrite::var2nc::var2nc_4d_dp ( character(len = *), intent(in)  f_name,
real(dp), dimension(:, :, :, :), intent(in)  arr,
character(len = *), dimension(:), intent(in)  dnames,
character(len = *), intent(in)  v_name,
integer(i4), intent(in), optional  dim_unlimited,
character(len = *), intent(in), optional  long_name,
character(len = *), intent(in), optional  units,
real(dp), intent(in), optional  missing_value,
character(256), dimension(:, :), intent(in), optional  attributes,
logical, intent(in), optional  create,
integer(i4), intent(inout), optional  ncid,
integer(i4), intent(in), optional  nrec 
)

Definition at line 4718 of file mo_ncwrite.f90.

◆ var2nc_4d_i4()

subroutine mo_ncwrite::var2nc::var2nc_4d_i4 ( character(len = *), intent(in)  f_name,
integer(i4), dimension(:, :, :, :), intent(in)  arr,
character(len = *), dimension(:), intent(in)  dnames,
character(len = *), intent(in)  v_name,
integer(i4), intent(in), optional  dim_unlimited,
character(len = *), intent(in), optional  long_name,
character(len = *), intent(in), optional  units,
integer(i4), intent(in), optional  missing_value,
character(256), dimension(:, :), intent(in), optional  attributes,
logical, intent(in), optional  create,
integer(i4), intent(inout), optional  ncid,
integer(i4), intent(in), optional  nrec 
)

Definition at line 4354 of file mo_ncwrite.f90.

◆ var2nc_4d_sp()

subroutine mo_ncwrite::var2nc::var2nc_4d_sp ( character(len = *), intent(in)  f_name,
real(sp), dimension(:, :, :, :), intent(in)  arr,
character(len = *), dimension(:), intent(in)  dnames,
character(len = *), intent(in)  v_name,
integer(i4), intent(in), optional  dim_unlimited,
character(len = *), intent(in), optional  long_name,
character(len = *), intent(in), optional  units,
real(sp), intent(in), optional  missing_value,
character(256), dimension(:, :), intent(in), optional  attributes,
logical, intent(in), optional  create,
integer(i4), intent(inout), optional  ncid,
integer(i4), intent(in), optional  nrec 
)

Definition at line 4536 of file mo_ncwrite.f90.

◆ var2nc_5d_dp()

subroutine mo_ncwrite::var2nc::var2nc_5d_dp ( character(len = *), intent(in)  f_name,
real(dp), dimension(:, :, :, :, :), intent(in)  arr,
character(len = *), dimension(:), intent(in)  dnames,
character(len = *), intent(in)  v_name,
integer(i4), intent(in), optional  dim_unlimited,
character(len = *), intent(in), optional  long_name,
character(len = *), intent(in), optional  units,
real(dp), intent(in), optional  missing_value,
character(256), dimension(:, :), intent(in), optional  attributes,
logical, intent(in), optional  create,
integer(i4), intent(inout), optional  ncid,
integer(i4), intent(in), optional  nrec 
)

Definition at line 5244 of file mo_ncwrite.f90.

◆ var2nc_5d_i4()

subroutine mo_ncwrite::var2nc::var2nc_5d_i4 ( character(len = *), intent(in)  f_name,
integer(i4), dimension(:, :, :, :, :), intent(in)  arr,
character(len = *), dimension(:), intent(in)  dnames,
character(len = *), intent(in)  v_name,
integer(i4), intent(in), optional  dim_unlimited,
character(len = *), intent(in), optional  long_name,
character(len = *), intent(in), optional  units,
integer(i4), intent(in), optional  missing_value,
character(256), dimension(:, :), intent(in), optional  attributes,
logical, intent(in), optional  create,
integer(i4), intent(inout), optional  ncid,
integer(i4), intent(in), optional  nrec 
)

Definition at line 4900 of file mo_ncwrite.f90.

◆ var2nc_5d_sp()

subroutine mo_ncwrite::var2nc::var2nc_5d_sp ( character(len = *), intent(in)  f_name,
real(sp), dimension(:, :, :, :, :), intent(in)  arr,
character(len = *), dimension(:), intent(in)  dnames,
character(len = *), intent(in)  v_name,
integer(i4), intent(in), optional  dim_unlimited,
character(len = *), intent(in), optional  long_name,
character(len = *), intent(in), optional  units,
real(sp), intent(in), optional  missing_value,
character(256), dimension(:, :), intent(in), optional  attributes,
logical, intent(in), optional  create,
integer(i4), intent(inout), optional  ncid,
integer(i4), intent(in), optional  nrec 
)

Definition at line 5072 of file mo_ncwrite.f90.


The documentation for this interface was generated from the following file: