Table of Contents

Project-Plan: easy function-based on demand parameter selection

currently moved to interal wiki for discussion https://dokit.met.no/personal/it/heikok/fimex_parameterfunction

Problem

Meteo. input data does not allways contain all parameters since gridded data usually is huge, while it is relatively easy to calculate them from other parameters, e.g. relative humidity ↔ specific humidity. An end user just want to have 'his' parameter, independently if this is stored on disk or calculated on demand. Fimex currently does not support an easily configurable interface to support calculated parameters.

Diana supports on demand parameters in the FieldCompute setup. But FieldCompute can only be used from within diana and is as such restricted to graphical users requirements, i.e. ~2s for display of data. And independent approach would avoid duplication and improve reliability if such on demand parameters could be added to all applications reading data via the fimex.

Hard Requirements

Soft Requirements

List over functions

Constants

FIXME

Basic functions

FIXME

Meteorological functions

FIXME

Data representation

FIXME

Additional Information

Diana field compute:

<FIELD_COMPUTE>

# See diFieldFunctions.h or other documnetation

geopotential_height_pl=divide(geopotential_pl,9.81)

# computations in pressure levels (".plevel_")
air_temperature_pl=tk.plevel_th(air_potential_temperature_pl)
air_potential_temperature_pl=th.plevel_tk(air_temperature_pl:unit=kelvin)
the_pl=the.plevel_tk_rh(air_temperature_pl:unit=kelvin,relative_humidity_pl:unit=0.01)
the_pl=the.plevel_th_rh(air_potential_temperature_pl,relative_humidity_pl:unit=0.01)

thesat_pl=thesat.plevel_th(air_potential_temperature_pl)
thesat_pl=thesat.plevel_tk(air_temperature_pl:unit=kelvin)

relative_humidity_pl=rh.plevel_tk_q(air_temperature_pl:unit=kelvin,specific_humidity_pl:unit=0.01)
relative_humidity_pl=rh.plevel_th_q(air_potential_temperature_pl,specific_humidity_pl:unit=0.01)

dew_point_temperature_pl=tdc.plevel_th_q(air_potential_temperature_pl,specific_humidity_pl:unit=0.01)
dew_point_temperature_pl=tdc.plevel_tk_q(air_temperature_pl,specific_humidity_pl:unit=0.01)
dew_point_temperature_pl=tdc.plevel_th_rh(air_potential_temperature_pl,relative_humidity_pl:unit=0.01)
dew_point_temperature_pl=tdc.plevel_tk_rh(air_temperature_pl,relative_humidity_pl:unit=0.01)

specific_humidity_pl=q.plevel_tk_rh(air_temperature_pl:unit=kelvin,relative_humidity_pl:unit=0.01)
specific_humidity_pl=q.plevel_th_rh(air_potential_temperature_pl,relative_humidity_pl:unit=0.01)

qvx_pl=qvector.plevel_z_th_xcomp(geopotential_height_pl,air_potential_temperature_pl)
qvy_pl=qvector.plevel_z_th_ycomp(geopotential_height_pl,air_potential_temperature_pl)
qvx_pl=qvector.plevel_z_tk_xcomp(geopotential_height_pl,air_temperature_pl:unit=kelvin)
qvy_pl=qvector.plevel_z_tk_ycomp(geopotential_height_pl,air_temperature_pl:unit=kelvin)
qvectorx_pl=multiply(qvx_pl,1.e+11)
qvectory_pl=multiply(qvy_pl,1.e+11)
qvector.divergence_pl=divergence(qvectorx_pl,qvectory_pl)
ug_pl=geostrophic.wind.plevel_z_xcomp(geopotential_height_pl)
vg_pl=geostrophic.wind.plevel_z_ycomp(geopotential_height_pl)
uag_pl=subtract(x_wind_pl,ug_pl)
vag_pl=subtract(y_wind_pl,vg_pl)
</FIELD_COMPUTE>