You are here: Home / Services / Data Analysis and Visualization / Visualization / Software / NCL / DKRZ NCL time conversion Julian to standard calendar

DKRZ NCL time conversion Julian to standard calendar

As a result of several user requests, this script converts a variable with the julian calendar time to the standard calendar time. The variable and the associated coordinate variables will be written to a new netCDF file.

Example script:

;---------------------------------------------------------------
; DKRZ NCL example script:  convert_julian_calendar.ncl
;---------------------------------------------------------------
begin

;-- open file
  f = addfile("data.nc","r") ;-- contains only variable prcp

;-- read variable and time
  var        = f->prcp                              ;-- read variable
  time       = f->T                                 ;-- read time

;-- proof if units are in days;
;-- the date of the time units must be equal or earlier than the first time step
;-- ncdump -v T data.nc  --> time(0) = 2444606 then use the Julian Calendar Converter
;-- http://aa.usno.navy.mil/data/docs/JulianDate.php

  rest = time(0) - floor(time(0))
  print("--> First timestep: "+time(0)+"  rest: "+rest)
  if(rest .eq. 0) then
     print("--> days")
     time@units = "days since -4712-1-1 12:00"  ;-- set correct units of julian calendar
  new_units = "days since 1981-01-01 12:00"         ;-- = time(0): 2444606
  else
     print("--> anything else")
     time@units = "hours since -4712-1-1 12:00" ;-- set correct units of julian calendar
  new_units = "hours since 1981-01-01 00:00"         ;-- = time(0): 2444606
  end if
 
;-- convert time to standard calendar; t1 = 2444606 is 1981-01-01 12:00
  t = cd_convert( time, new_units )

;-- define a correct time coordinate variable
  t!0                = "time"
  t&time             =  t
  t@units            =  t@units
  t@standard_name    = "time"
  t@long_name        = "time"
  t@calendar         = "standard"
  t@axis             = "T"

;-- overwrite time of variable
  var&T := t

;-- create new netCDF file and write variable and its associated dimension variables to file
  system("rm -rf prcp_julian_calendar.nc")          ;-- delete file if existing
  outf = addfile("prcp_julian_calendar.nc","c")     ;-- create file
  outf->prcp = var                                  ;-- write var to file

end

Document Actions