Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 45 Next »

CFU (Climate Fortran Utilities)

Several functions of the CFU package are need in the subchain scripts. CFU contains functions that are not covered by neither CDO nor NCO functions .


 add_hours

add_hours

Purposeadd a number of hours to a date
Call cfu add_hours < ystartdate > < hours > [< itype_calendar >]
Result YYYYMMDDHH[mmss]
Meanings ystartdate has the form YYYYMMDDHH[mmss]
itype_calendar 0 = 365 days (plus taking into account for leap years) a year
1  =  climatological calendar (360 days per year)
2  =  climatological calendar (365 days per year)
add a number of hours to a date
 add_lonlat

add_lonlat

Purposeadds 2D geographical latitude and longitude to a netCDF file containing rotated coordinates
Call cfu add_lonlat < ncfile >
Result < ncfile > with two additional 2D fields (lon and lat)
Meanings ncfile name of netCDF file to which the coordinates should be added
adds 2D geographical latitude and longitude to a netCDF file containing rotated coordinates
 add_months

add_months

Purposeadd a number of hours to a date
Call cfu add_months < ystartdate > < months >
Result YYYYMMDDHH[mmss]
Meanings ystartdate has the form YYYYMMDDHH[mmss]
add a number of hours to a date
 add_vertices

add_vertices

Purposeadds geographical latitude and longitude vertices to a netCDF file
Call cfu add_vertices < ncfile >
Result < ncfile > with two additional fields (lon_bnds and lat_bnds) with the dimensions (4,lon,lat)
Meaningsncfilename of netCDF file to which the vertices should be added
Remark

The counting of the 4 vertices goes like this

4 --- 3
|     |
1 --- 2
adds geographical latitude and longitude vertices to a netCDF file
 check_files

check_files

Purposecheck whether all required files in a date range are in a certain directory
Call cfu check_files < ystartdate > < yenddate > < hh:mm:ss > < prefix12 > < prefix2 > < suffix >< input directory > < last output > [< itype_calendar >]
Result 0=success, 1=error. In case of error the file check_files.log contains the names of the missing files. The file check_files.log is written to the directory where the program check_files is called.
Meanings







ystartdate start date in the form YYYYMMDDHH[mmss]
yenddate end date the form YYYYMMDDHH[mmss]
hh:mm:ss time increment of the files in the date range
prefix1 primary prefix to be checked (e.g. caf, laf, …), i.e. the characters preceding the YYYYMMDDHH[mmss] sequence
prefix2 secondary prefix to be checked (e.g. cas, lbfd, …), if prefix1 gives errors.In case only one prefix should be checked set prefix1=prefix2
suffix suffix to be checked (e.g. .nc, c.nc, …), i.e. the characters following the YYYYMMDDHH[mmss] sequence
input directory full path to directory holding the files to be checked
last output should be set to true T in case the yenddate should be included in the check, otherwise it should be set to false F
itype_calendar

0 = 365 days (plus taking into account for leap years) a year
1  = climatological calendar (360 days per year)
2  = climatological calendar (365 days per year)

check whether all required files in a date range are in a certain directory
 check_files_iso

check_files_iso

Purposecheck whether all required files in a date range are in a certain directory (uses ISO time stamp: YYYYMMDDHHTmmssZ)
Call cfu check_files_iso < ystartdate > < yenddate > < hh:mm:ss > < prefix12 > < prefix2 > < suffix >< input directory > < last output > [< itype_calendar >]
Result 0=success, 1=error. In case of error the file check_files.log contains the names of the missing files. The file check_files.log is written to the directory where the program check_files_iso is called.
Meanings







ystartdate start date in the form YYYYMMDDHHmmss
yenddate end date the form YYYYMMDDHHmmss
hh:mm:ss time increment of the files in the date range
prefix1 primary prefix to be checked (e.g. caf, laf, …), i.e. the characters preceding the YYYYMMDDHH[mmss] sequence
prefix2 secondary prefix to be checked (e.g. cas, lbfd, …), if prefix1 gives errors.In case only one prefix should be checked set prefix1=prefix2
suffix suffix to be checked (e.g. .nc, c.nc, …), i.e. the characters following the YYYYMMDDHHTmmssZ sequence
input directory full path to directory holding the files to be checked
last output should be set to true T in case the yenddate should be included in the check, otherwise it should be set to false F
itype_calendar

0 = 365 days (plus taking into account for leap years) a year
1  = climatological calendar (360 days per year)
2  = climatological calendar (365 days per year)

check whether all required files in a date range are in a certain directory   (uses ISO time stamp: YYYYMMDDHHTmmssZ)

 create_rotgrid

create_rotgrid 

Purpose

creates lon/lat grid values and lon/lat grid vertices for a rotated g rid

Callcfu create_rotgrid   <startrlon> <startrlat> <rlon> < drlat>  < nrlon >< nrlat > < pollon > < polat > < polgam > < gridfile >  
Result <gridfile> in netCDF format containing the grid information
Meanings







startrlon longitude of lower left corner in rotated coordinates
startrlat latitude of lower left corner in rotated coordinates
drlon longitudinal grid with in rotated coordinates
drlat latitudinal grid with in rotated coordinates
nrlon number of grid points in longitudinal direction
nrlat number of grid points in latitudinal direction
pollon rotated coordinates of longitude of geographical North Pole
pollat rotated coordinates of latitude of geographical North Pole
polgam

rotated longitude shift of North Pole

gridfileoutput file  in netCDF format containing the grid information
creates lon/lat grid values and lon/lat grid vertices for a rotated g rid
 get_attval

get_attval

Purposeget the value of an attribute 
Call cfu get_attval <ncfile> <varname> <attribute name>
Resultvalue of the attribute or -- in case the attribute is not found  
Meanings ncfile name of the netCDF file
varname name of the variable with the requested attribute
attribute name name of the attribute
get the value of an attribute 
 get_hours

get_hours

Purposedetermine the number of hours between two dates
Call cfu get_hours < ystartdate >< enddate > [< itype_calendar >]
Result number of hours
Meanings ystartdate start date in the form the form YYYYMMDDHH[mmss]

yenddate end date in the form the form YYYYMMDDHH[mmss]

itype_calendar 0 = 365 days (plus taking into account for leap years) a year
1  =  climatological calendar (360 days per year)

2  =  climatological calendar (365 days per year)
determine the number of hours between two dates
 get_next_dates

get_next_dates

Purposedetermines the next two dates for a given time increment
Call cfu get_next_dates < ystartdate >< MM:DD:HH[:mm:ss] > [< itype_calendar >]
Result YYYYMMDDHH[mmss]YYYYMMDDHH[mmss]
Meanings ystartdate startdate in the form YYYYMMDDHH[mmss] 

MM:DD:HH[:mm:ss] time increment

itype_calendar 0 = 365 days (plus taking into account for leap years) a year
1  =  climatological calendar (360 days per year)

2  =  climatological calendar (365 days per year)
Remark presently this function is especially for calculating the next dates when running the CCLM in the subchain. This includes a restriction of maximum 28 for DD . Note that the DD restriction only applies for sub monthly chunks.
determines the next two dates for a given time increment
 get_prev_date

get_prev_date

Purposedetermines the previous two dates for a given time increment
Callcfu get_prev_date  < ystartdate >< MM:DD:HH[:mm:ss] > [< itype_calendar >]
ResultYYYYMMDDHH
Meaningsystartdatestartdate in the form YYYYMMDDHH[mmss] 

MM:DD:HH[:mm:ss]time increment

itype_calendar0 = 365 days (plus taking into account for leap years) a year
1  = climatological calendar (360 days per year)

2  = climatological calendar (365 days per year)
RemarkPresently this version takes monthly intervals only.
itype_calendar is not used in this version.
determines the previous two dates for a given time increment
 icon_domain

icon_domain

Purposeprovide helpful input for the   ICON Grid Generator + ExtPar Web Frontend  
Callcfu icon_domain <input file> [<nbound> [<nudge_zone_width> <Rn> <Bk>] ]
Result

an example output looks as follows

 write parent grid: (tick box)
center: longitude (degrees)   -5.11000
center: latitude (degrees)    -0.77000
half width:    24.42000
half height:   23.76000
 rotate: (tick box) 
north pole: longitude (degrees) -162.00000   latitude (degrees)   39.25000
Meaningsinput fileFile that contains the rotated coordinates of the domain to which the ICON results in the post processing script of SPICE will be remapped

nbound

If only nbound is given as argument: Number of grid points by which the domain given by the input file is extended. This is to keep the rotated domain out of the boundary zone of the regional ICON.

If nbound, nudging_zone_width, Rn and Bk are given: Number of extra safety grid points

Default: 0


nudge_zone_widthThe number you are going to use in the namelist interpol_nml settings of your ICON simulations

Rn and BkThe n and k values for your chosen ICON grid
Remark

If all parameters are given the number of grid points for the boundaries are calculated as

nboundaries = nbound +  nudge_zone_width + grf_bdywidth_c

where grf_bdywidth_c=4 as described in the ICON Tutorial.

The Rn and Bn are used in case the grid width of the rotated grid is smaller than the ICON grid. In this case the number of boundaries are extended to make sure that the boundary width is not too small.

provide helpful input for the ICON Grid Generator + ExtPar Web Frontend  
 shellpp

shellpp

Purpose"pre-compiles" a shell script
Call cfu shellpp < input file > < output file > < name >
Result precompiled file output file
Meanings input file input file containing the precompile commands

output file "precompiled" output file

name name of the ifdef clauses that should be used
Remark

This is a very rudimentary pre-compiler version like the one for e.g. FORTRAN programs. It can only handle the two commands:
#ifdef name
#endif

If you are interested in a more sophisticated bash pre-processor please check the one on bashpp GitHub. 

"pre-compiles" a shell script

 p2sec

p2sec

Purpose

Converts ISO 8601 duration in the form PThhHmmMssS into seconds

Call cfu p2sec <PThhHmmMssS>
Result seconds on standard output
Meanings PThhHmmMssS

ISO 8601 duration

converts ISO 8601 duration in the form PThhHmmMssS into seconds
 tbtimestamp

tbtimestamp

PurposePrints the time stamp of the time bounds variable time_bnds
Call cfu tbtimestamp <input file> [<itype_calendar>]
Result YYYY-MM-DDThh:mm:ss as loop over bounds (=2) and time steps
Meanings input file  File containing the time bounds 

itype_calendar 0 = 365 days (plus taking into account for leap years) a year
1  =  climatological calendar (360 days per year)

2  =  climatological calendar (365 days per year)
prints the time stamp of the time bounds variable time_bnds
  • No labels