Add files via upload
This commit is contained in:
360
code/NcdfUtil/m_netcdf_io_define.F90
Normal file
360
code/NcdfUtil/m_netcdf_io_define.F90
Normal file
@ -0,0 +1,360 @@
|
||||
! $Id: m_netcdf_io_define.F90,v 1.1 2009/08/04 14:52:04 bmy Exp $
|
||||
!-------------------------------------------------------------------------
|
||||
! NASA/GFSC, SIVO, Code 610.3
|
||||
!-------------------------------------------------------------------------
|
||||
!BOP
|
||||
!
|
||||
! !MODULE: m_netcdf_io_define
|
||||
!
|
||||
! !INTERFACE:
|
||||
!
|
||||
module m_netcdf_io_define
|
||||
!
|
||||
implicit none
|
||||
!
|
||||
! !PUBLIC MEMBER FUNCTIONS:
|
||||
!
|
||||
public NcDef_dimension
|
||||
public NcDef_variable
|
||||
public NcDef_var_attributes
|
||||
public NcDef_glob_attributes
|
||||
public NcSetFill
|
||||
public NcEnd_def
|
||||
!
|
||||
! !DESCRIPTION: Provides netCDF utility routines to define dimensions,
|
||||
! variables and attributes.
|
||||
!\\
|
||||
!\\
|
||||
! !AUTHOR:
|
||||
! Jules Kouatchou
|
||||
!
|
||||
! !REVISION HISTORY:
|
||||
! Initial code.
|
||||
!
|
||||
!EOP
|
||||
!-------------------------------------------------------------------------
|
||||
|
||||
CONTAINS
|
||||
|
||||
!-------------------------------------------------------------------------
|
||||
!BOP
|
||||
!
|
||||
! !IROUTINE: NcDef_dimension
|
||||
!
|
||||
! !INTERFACE:
|
||||
!
|
||||
subroutine NcDef_dimension(ncid,name,len,id)
|
||||
!
|
||||
! !USES:
|
||||
!
|
||||
use m_do_err_out
|
||||
!
|
||||
implicit none
|
||||
!
|
||||
include 'netcdf.inc'
|
||||
!
|
||||
! !INPUT PARAMETERS:
|
||||
!! ncid : netCDF file id
|
||||
!! name : dimension name
|
||||
!! len : dimension number
|
||||
character (len=*), intent(in) :: name
|
||||
integer, intent(in) :: ncid, len
|
||||
!
|
||||
! !OUTPUT PARAMETERS:
|
||||
!! id : dimension id
|
||||
integer, intent(out) :: id
|
||||
!
|
||||
! !DESCRIPTION: Defines dimension.
|
||||
!\\
|
||||
!\\
|
||||
! !AUTHOR:
|
||||
! Jules Kouatchou and Maharaj Bhat
|
||||
!
|
||||
! !REVISION HISTORY:
|
||||
! Initial code.
|
||||
!
|
||||
!EOP
|
||||
!-------------------------------------------------------------------------
|
||||
!BOC
|
||||
!
|
||||
! !LOCAL VARIABLES:
|
||||
character (len=128) :: err_msg
|
||||
integer :: ierr
|
||||
!
|
||||
ierr = Nf_Def_Dim (ncid, name, len, id)
|
||||
|
||||
if (ierr.ne.NF_NOERR) then
|
||||
err_msg = 'Nf_Def_Dim: can not define dimension : '// Trim (name)
|
||||
call Do_Err_Out (err_msg, .true., 0, 0, 0, 0, 0.0d0, 0.0d0)
|
||||
end if
|
||||
|
||||
return
|
||||
end subroutine NcDef_dimension
|
||||
!EOC
|
||||
!-------------------------------------------------------------------------
|
||||
!BOP
|
||||
!
|
||||
! !IROUTINE: NcDef_variable
|
||||
!
|
||||
! !INTERFACE:
|
||||
!
|
||||
subroutine NcDef_variable(ncid,name,type,ndims,dims,var_id)
|
||||
!
|
||||
! !USES:
|
||||
!
|
||||
use m_do_err_out
|
||||
!
|
||||
implicit none
|
||||
!
|
||||
include 'netcdf.inc'
|
||||
!
|
||||
! !INPUT PARAMETERS:
|
||||
!
|
||||
!! ncid : netCDF file id
|
||||
!! name : name of the variable
|
||||
!! type : type of the variable
|
||||
!! (NF_FLOAT, NF_CHAR, NF_INT, NF_DOUBLE, NF_BYTE, NF_SHORT)
|
||||
!! ndims : number of dimensions of the variable
|
||||
!! dims : netCDF dimension id of the variable
|
||||
!! varid : netCDF varid id
|
||||
|
||||
character (len=*), intent(in) :: name
|
||||
integer, intent(in) :: ncid, ndims, var_id
|
||||
integer, intent(in) :: dims(ndims)
|
||||
integer, intent(in) :: type
|
||||
!
|
||||
! !DESCRIPTION: Defines a netCDF variable.
|
||||
!\\
|
||||
!\\
|
||||
! !AUTHOR:
|
||||
! Jules Kouatchou and Maharaj Bhat
|
||||
!
|
||||
! !REVISION HISTORY:
|
||||
! Initial code.
|
||||
!
|
||||
!EOP
|
||||
!-------------------------------------------------------------------------
|
||||
!BOC
|
||||
!
|
||||
! !LOCAL VARIABLES:
|
||||
character (len=128) :: err_msg
|
||||
integer :: ierr
|
||||
!
|
||||
ierr = Nf_Def_Var (ncid, name, type, ndims, dims, var_id)
|
||||
|
||||
if (ierr.ne.NF_NOERR) then
|
||||
err_msg = 'Nf_Def_Var: can not define variable : '// Trim (name)
|
||||
call Do_Err_Out (err_msg, .true., 0, 0, 0, 0, 0.0d0, 0.0d0)
|
||||
end if
|
||||
|
||||
return
|
||||
|
||||
end subroutine NcDef_variable
|
||||
!EOC
|
||||
!-------------------------------------------------------------------------
|
||||
!BOP
|
||||
!
|
||||
! !IROUTINE: NcDef_var_attributes
|
||||
!
|
||||
! !INTERFACE:
|
||||
!
|
||||
subroutine NcDef_var_attributes(ncid,var_id,att_name,att_val)
|
||||
!
|
||||
! !USES:
|
||||
!
|
||||
use m_do_err_out
|
||||
!
|
||||
implicit none
|
||||
include 'netcdf.inc'
|
||||
!
|
||||
! !INPUT PARAMETERS:
|
||||
!! ncid : netCDF file id
|
||||
!! var_id : netCDF variable id
|
||||
!! att_name: attribute name
|
||||
!! att_val : attribute value
|
||||
character (len=*), intent(in) :: att_name, att_val
|
||||
integer, intent(in) :: ncid, var_id
|
||||
!
|
||||
! !DESCRIPTION: Defines netCDF attributes.
|
||||
!\\
|
||||
!\\
|
||||
! !AUTHOR:
|
||||
! Jules Kouatchou and Maharaj Bhat
|
||||
!
|
||||
! !REVISION HISTORY:
|
||||
! Initial code.
|
||||
!
|
||||
!EOP
|
||||
!-------------------------------------------------------------------------
|
||||
!BOC
|
||||
!
|
||||
! !LOCAL VARIABLES:
|
||||
character (len=128) :: err_msg
|
||||
integer :: mylen, ierr
|
||||
!
|
||||
mylen = len(att_val)
|
||||
ierr = Nf_Put_Att_Text (ncid, var_id, att_name, mylen, att_val)
|
||||
|
||||
if (ierr.ne.NF_NOERR) then
|
||||
err_msg = 'Nf_Put_Att_Text: can not define attribute : ' // Trim (att_name)
|
||||
call Do_Err_Out (err_msg, .true., 0, 0, 0, 0, 0.0d0, 0.0d0)
|
||||
end if
|
||||
|
||||
return
|
||||
|
||||
end subroutine NcDef_var_attributes
|
||||
!EOC
|
||||
!-------------------------------------------------------------------------
|
||||
!BOP
|
||||
!
|
||||
! !IROUTINE: NcDef_glob_attributes
|
||||
!
|
||||
! !INTERFACE:
|
||||
!
|
||||
subroutine NcDef_glob_attributes(ncid,att_name,att_val)
|
||||
!
|
||||
! !USES:
|
||||
!
|
||||
use m_do_err_out
|
||||
!
|
||||
implicit none
|
||||
!
|
||||
include 'netcdf.inc'
|
||||
!
|
||||
! !INPUT PARAMETERS:
|
||||
!! ncid : netCDF file id
|
||||
!! att_name: attribute name
|
||||
!! att_val : attribute value
|
||||
!
|
||||
character (len=*), intent(in) :: att_name, att_val
|
||||
integer, intent(in) :: ncid
|
||||
!
|
||||
! !DESCRIPTION: Defines global attributes
|
||||
!\\
|
||||
!\\
|
||||
! !AUTHOR:
|
||||
! Jules Kouatchou
|
||||
!
|
||||
! !REVISION HISTORY:
|
||||
! Initial code.
|
||||
!
|
||||
!EOP
|
||||
!-------------------------------------------------------------------------
|
||||
!BOC
|
||||
!
|
||||
! !LOCAL VARIABLES:
|
||||
character (len=128) :: err_msg
|
||||
integer :: mylen, ierr
|
||||
!
|
||||
mylen = len(att_val)
|
||||
ierr = Nf_Put_Att_Text (ncid, NF_GLOBAL, att_name, mylen, att_val)
|
||||
|
||||
if (ierr.ne.NF_NOERR) then
|
||||
err_msg = 'Nf_Put_Att_Text: can not define attribute : ' // Trim (att_name)
|
||||
call Do_Err_Out (err_msg, .true., 0, 0, 0, 0, 0.0d0, 0.0d0)
|
||||
end if
|
||||
|
||||
return
|
||||
|
||||
end subroutine NcDef_glob_attributes
|
||||
!EOC
|
||||
!-------------------------------------------------------------------------
|
||||
!BOP
|
||||
!
|
||||
! !IROUTINE: NcSetFill
|
||||
!
|
||||
! !INTERFACE:
|
||||
!
|
||||
subroutine NcSetFill(ncid,ifill,omode)
|
||||
!
|
||||
! !USES:
|
||||
!
|
||||
use m_do_err_out
|
||||
!
|
||||
implicit none
|
||||
!
|
||||
include 'netcdf.inc'
|
||||
!
|
||||
! !INPUT PARAMETERS:
|
||||
!
|
||||
integer, intent(in) :: ncid, ifill,omode
|
||||
!
|
||||
! !DESCRIPTION: Sets fill method.
|
||||
!\\
|
||||
!\\
|
||||
! !AUTHOR:
|
||||
! Jules Kouatchou
|
||||
!
|
||||
! !REVISION HISTORY:
|
||||
! Initial code.
|
||||
!
|
||||
!EOP
|
||||
!-------------------------------------------------------------------------
|
||||
!BOC
|
||||
!
|
||||
! !LOCAL VARIABLES:
|
||||
character (len=128) :: err_msg
|
||||
integer :: mylen, ierr
|
||||
!
|
||||
ierr = Nf_Set_Fill (ncid, NF_NOFILL, omode)
|
||||
|
||||
if (ierr.ne.NF_NOERR) then
|
||||
err_msg = 'Nf_Put_Att_Text: Error in omode '
|
||||
call Do_Err_Out (err_msg, .true., 0, 0, 0, 0, 0.0d0, 0.0d0)
|
||||
end if
|
||||
|
||||
return
|
||||
|
||||
end subroutine NcSetFill
|
||||
!EOC
|
||||
!-------------------------------------------------------------------------
|
||||
!BOP
|
||||
!
|
||||
! !IROUTINE: NcEnd_def
|
||||
!
|
||||
! !INTERFACE:
|
||||
!
|
||||
subroutine NcEnd_def(ncid)
|
||||
!
|
||||
! !USES:
|
||||
!
|
||||
use m_do_err_out
|
||||
!
|
||||
implicit none
|
||||
!
|
||||
include 'netcdf.inc'
|
||||
!
|
||||
! !INPUT PARAMETERS:
|
||||
!
|
||||
integer, intent(in) :: ncid
|
||||
!
|
||||
! !DESCRIPTION: Ends definitions of variables and their attributes.
|
||||
!\\
|
||||
!\\
|
||||
! !AUTHOR:
|
||||
! Jules Kouatchou
|
||||
!
|
||||
! !REVISION HISTORY:
|
||||
! Initial code.
|
||||
!
|
||||
!EOP
|
||||
!-------------------------------------------------------------------------
|
||||
!BOC
|
||||
!
|
||||
! !LOCAL VARIABLES:
|
||||
character (len=128) :: err_msg
|
||||
integer :: ierr
|
||||
!
|
||||
ierr = Nf_Enddef (ncid)
|
||||
|
||||
if (ierr.ne.NF_NOERR) then
|
||||
err_msg = 'Nf_Put_Att_Text: Error in closing global attribute'
|
||||
call Do_Err_Out (err_msg, .true., 0, 0, 0, 0, 0.0d0, 0.0d0)
|
||||
end if
|
||||
|
||||
return
|
||||
|
||||
end subroutine NcEnd_def
|
||||
!EOC
|
||||
!------------------------------------------------------------------------
|
||||
end module m_netcdf_io_define
|
Reference in New Issue
Block a user