Custom Query (964 matches)
Results (790 - 792 of 964)
Ticket | Owner | Reporter | Resolution | Summary |
---|---|---|---|---|
#770 | Fixed | Bad values at edge in vorticity fields | ||
Description |
Random junk develops along the i=L and j=M boundaries in the vorticity output. |
|||
#771 | Done | VERY IMPORTANT Update: Reference Time | ||
Description |
ROMS support several date calendars according to the value of the input parameter TIME_REF in ocean.in: time_ref = -2 Truncated Julian day number (Julian/Gregorian) 'time-units since 1968-05-23 00:00:00' origin: Jan 01, 4713 BC (Proleptic Julian Calendar) Nov 24, 4713 BC (Proleptic Gregorian Calendar) time_ref = -1 360 day per year calendar 'time-units since 0000-12-30 00:00:00' origin: Jan 1, 0000 (360_day Calendar) time_ref = 0 Proleptic Gregorian calendar 'time-units since 0001-01-01 00:00:00' origin: Jan 1, 0000 (Proletic gregorian Calendar) time_ref = YYYYMMDD.dd Gregorian or Proleptic Gregorian calendar 'time-units since YYYY-MM-DD hh:mm:ss' origin: Jan 1, 0000 (Proletic gregorian Calendar) Notice that a calendar obtained by extending backward in time from its invention or implementation is called the Proleptic version of the calendar. For example, the Proleptic Gregorian Calendar extends backward the date preceding 15 October 1582 (Gregorian Calendar start) with a year length of 365.2425 days. Until now, the reference date has been used loosely in ROMS, and it is only crucial when using the 360_day calendar. However, from this update on, it will be used strictly to measure the elapsed time since the reference date. It will not affect your current application configuration if the all the datasets have the same reference time coordinates. For example, input NetCDF files usually have the units attribute of the form: double ocean_time(ocean_time) ; ocean_time:long_name = "time since initialization" ; ocean_time:units = "seconds since 1900-01-01 00:00:00" ; ocean_time:calendar = "gregorian" ; or double TIME(TIME) ; TIME:long_name = "time of atmosphere forcing" ; TIME:units = "days since 1900-01-01 00:00:00" ; TIME:time_origin = "01-JAN-1900 00:00:00" ; TIME:standard_name = "time" ; TIME:calendar = "gregorian" ; ROMS only process the units attribute for the time coordinate. So why this change? Because it allows input datasets to have different reference dates than the one specified in ocean.in, provided that:
So, there is no longer a need to modify the input dataset by recomputing the time coordinate to a particular time reference or epoch. ROMS will adjust the data time variable internally to the desired epoch specified by time_ref, hurrah! I know, we all had to manipulate the time in the input dataset NetCDF files. It was very annoying. Two new routines were added to mod_netcdf.F to read time for a dataset: INTERFACE netcdf_get_time MODULE PROCEDURE netcdf_get_time_0d MODULE PROCEDURE netcdf_get_time_1d END INTERFACE netcdf_get_time For example, in get_3dfld.F we now have: CALL netcdf_get_time (ng, model, ncfile, Tname(ifield), & & Rclock%DateNumber, Tval, & & ncid = ncid, & & start = (/Trec/), & & total = (/1/)) instead of CALL netcdf_get_fvar (ng, model, ncfile, Tname(ifield), & & Tval, & & ncid = ncid, & & start = (/Trec/), & & total = (/1/)) Notice that netcdf_get_time has an additional argument (Rclock%DateNumber) when compared with the older call to netcdf_get_fvar. As a consequence, several routines were modified to use netcdf_get_time for reading the dataset time. The dateclock.F module was modified to absorb the new changes. The datenum and its inverse datevec routines now compute the serial date number and date vector, respectively, for all the calendars supported in ROMS. Also, a new routine datestr was added to compute the date string from the serial date number. Warningx:
We provide new Perl script dates in the ROMS/Bin directory that can be used for date manipulation containing the following functions:
Many thanks to Dave Robertson for coding this Perl function. Several dates_test scripts (.bash, .ksh, .sh) are provided as examples for usage. In dates_test.bash, we have: today=`date +"%d-%m-%Y %r"` dn1=`dates datenum` ds1=`dates numdate $dn1` yd1=`dates yday $ds1` dn2=`dates datenum 1900-01-01` ds2=`dates numdate $dn2` yd2=`dates yday $ds2` d21=`dates daysdiff $ds2 $ds1` dn2=`dates datenum 19000101` ds2=`dates numdate $dn2` yd2=`dates yday $ds2` d21=`dates daysdiff $ds2 $ds1` dn3=`dates datenum 1968-05-23` ds3=`dates numdate $dn3` yd3=`dates yday $ds3` d31=`dates daysdiff $ds3 $ds1` echo echo "Testing 'dates' Perl Script on $today" echo echo "Today's Date: $ds1" echo "Today's Date Number: $dn1" echo "Today's Day-of-the-year: $yd1" echo echo "Reference Date: $ds2" echo "Reference Date Number: $dn2" echo "Reference Day-of-the-year: $yd2" echo "Days since Reference date: $d21" echo echo "Truncated Date: $ds3" echo "Truncated Date Number: $dn3" echo "Truncated Day-of-the-year: $yd3" echo "Days since TRuncated date: $d31" echo which yields: Testing 'dates' Perl Script on 20-06-2018 05:18:12 PM Today's Date: 2018-06-20 Today's Date Number: 737231 Today's Day-of-the-year: 171 Reference Date: 1900-01-01 Reference Date Number: 693962 Reference Day-of-the-year: 1 Days since Reference date: 43269 Truncated Date: 1968-05-23 Truncated Date Number: 718941 Truncated Day-of-the-year: 144 Days since TRuncated date: 18290 |
|||
#772 | Fixed | dateclock won't compile with gfortran. | ||
Description |
I got this error from gfortran: dateclock.f90:569:42: IF (DateNumber.ge.REAL(gregorian*86400,r8)) THEN 1 Error: Arithmetic overflow at (1) It compiles with this fix: diff --git a/ROMS/Utility/dateclock.F b/ROMS/Utility/dateclock.F index 55c6da41..6d8d17d4 100644 --- a/ROMS/Utility/dateclock.F +++ b/ROMS/Utility/dateclock.F @@ -586,7 +586,7 @@ MyDateNumber=DateNumber+Rclock%DateNumber(1) END IF ELSE - IF (DateNumber.ge.REAL(gregorian*86400,r8)) THEN + IF (DateNumber.ge.REAL(gregorian,r8)*86400) THEN MyDateNumber=DateNumber/86400.0_r8 ELSE MyDateNumber=(DateNumber+Rclock%DateNumber(2))/86400.0_r8 |