= INIFOR - Mesoscale Interface for Initializing and Forcing PALM = [https://palm.muk.uni-hannover.de/trac/browser/palm/trunk/UTIL/inifor INIFOR] provides the meteorological fields of the velocity components, specific humidity and potential temperature required to initialize PALM as well as boundary data required for the [wiki:doc/tec/nesting#offl offline nesting] of PALM into larger-scale models. The required meteorological fields are interpolated from output data of the mesoscale model COSMO. == Compilation == INIFOR is being compiled automatically whenever you compile PALM using `palmbuild`. == Minimal Usage Example == - Customize `./namelist` (number or grid points and spacings, end_time) - Run `current_version/trunk/SCRIPTS/inifor --path --date --elevation ` == Usage == After compilation, the `inifor` binary resides in the `$PALM_BIN` path, i.e. in `/current_version/trunk/SCRIPTS/`. In order to run, INIFOR requires three kinds of inputs: 1. hourly COSMO model output, 2. a steering namelist file, and 3. command-line options. In addition, a static driver file may be supplied (see `--static-driver` option below) in order to pass the coordinates of the PALM origin to INIFOR. If no static driver is passed to INIFOR, origin coordinates are read from the namelist file. A typical `inifor` call looks like this: {{{ inifor --path /data/evaluation/20170729 --date 2017073006 \ --init-mode profile -n namelist -o dynamic_driver.nc \ --elevation 110 --input-prefix lff0_ }}} == Input data: COSMO model output == === Overview === INIFOR processes COSMO model output which it requires to be stored in a set of netCDF files located in a user-specified path (see `--path` option). These are: - hhl.nc: This file provides the COSMO numerical grid. (''hhl'' abbreviates ''height of half layers'', i.e. the heights of the vertical cell boundaries.) - soil.nc: This file provides the COSMO soil map and is used to destinguish land from water cells. - `YYYYMMDDHH-.nc`: Each of these files contains COSMO model of one time step at the given time in UTC (Y..year, M..month, D..day, H..hour). - The `` distinguishes different DWD products, for instance COSMO analyses (`laf`) or forecasts (`lff`). - The `` distinguishes thee kinds of COSMO model output data, namely - `flow` (atmospheric fields) - `soil` (soil moisture and temperature) - `precip` (surface precipitation rates, optional) - For example, laf2016010100-flow.nc contains the atmospheric fields of the COSMO analysis of January 1st, 2016 for 0:00 UTC. How to download COSMO model output from the DWD data portal Pamore is described in this [https://palm.muk.uni-hannover.de/trac/attachment/wiki/doc/app/iofiles/inifor/manual_data_preparation_using_pamore_Jan2020.pdf manual]. === Required netCDF variables === Variables in `hhl.nc` {{{ double rlon(rlon) ; rlon:standard_name = "grid_longitude" ; rlon:long_name = "longitude in rotated pole grid" ; rlon:units = "degrees" ; rlon:axis = "X" ; double rlat(rlat) ; rlat:standard_name = "grid_latitude" ; rlat:long_name = "latitude in rotated pole grid" ; rlat:units = "degrees" ; rlat:axis = "Y" ; char rotated_pole ; rotated_pole:grid_mapping_name = "rotated_latitude_longitude" ; rotated_pole:grid_north_pole_latitude = 40. ; rotated_pole:grid_north_pole_longitude = -170. ; float HHL(time, height, rlat, rlon) ; HHL:long_name = "Geometric Height of the layer limits above sea level(NN)" ; HHL:units = "m" ; HHL:param = "6.3.0" ; HHL:grid_mapping = "rotated_pole" ; }}} Variables in `soil.nc` {{{ float SOILTYP(time, rlat, rlon) ; SOILTYP:long_name = "soil type of grid (1...9, local soilType.table)" ; SOILTYP:units = "Numeric" ; SOILTYP:param = "196.3.2" ; SOILTYP:grid_mapping = "rotated_pole" ; }}} Variables in `YYYYMMDDHH-flow.nc` files: {{{ float W(time, height, rlat, rlon) ; W:long_name = "Vertical Velocity (Geometric) (w)" ; W:units = "m s-1" ; W:param = "9.2.0" ; W:grid_mapping = "rotated_pole" ; float U(time, height_2, rlat, rlon_2) ; U:standard_name = "eastward_wind" ; U:long_name = "U-Component of Wind" ; U:units = "m s-1" ; U:param = "2.2.0" ; U:grid_mapping = "rotated_pole" ; float V(time, height_2, rlat_2, rlon) ; V:standard_name = "northward_wind" ; V:long_name = "V-Component of Wind" ; V:units = "m s-1" ; V:param = "3.2.0" ; V:grid_mapping = "rotated_pole" ; float T(time, height_2, rlat, rlon) ; T:standard_name = "air_temperature" ; T:long_name = "Temperature" ; T:units = "K" ; T:param = "0.0.0" ; T:grid_mapping = "rotated_pole" ; float P(time, height_2, rlat, rlon) ; P:long_name = "Pressure" ; P:units = "Pa" ; P:param = "192.3.0" ; P:grid_mapping = "rotated_pole" ; float QV(time, height_2, rlat, rlon) ; QV:standard_name = "specific_humidity" ; QV:long_name = "Specific Humidity" ; QV:units = "kg kg-1" ; QV:param = "0.1.0" ; QV:grid_mapping = "rotated_pole" ; }}} Variables in `YYYYMMDDHH-soil.nc` files: {{{ double depth_2(depth_2) ; depth_2:long_name = "depth_below_land" ; depth_2:units = "m" ; depth_2:positive = "down" ; depth_2:axis = "Z" ; depth_2:bounds = "depth_2_bnds" ; float T_SO(time, depth, rlat, rlon) ; T_SO:long_name = "Soil Temperature (multilayer model)" ; T_SO:units = "K" ; T_SO:param = "18.3.2" ; T_SO:grid_mapping = "rotated_pole" ; float W_SO(time, depth_2, rlat, rlon) ; W_SO:long_name = "Column-integrated Soil Moisture (multilayers)" ; W_SO:units = "kg m-2" ; W_SO:param = "20.3.2" ; W_SO:grid_mapping = "rotated_pole" ; }}} === Optional variabels === Variables in `YYYYMMDDHH-flow.nc` files (will be interpolated automatically if present in input files): {{{ float QC(time, height_2, rlat, rlon) ; QC:long_name = "Cloud Mixing Ratio" ; QC:units = "kg kg-1" ; QC:param = "22.1.0" ; QC:grid_mapping = "rotated_pole" ; float QI(time, height_2, rlat, rlon) ; QI:long_name = "Cloud Ice Mixing Ratio" ; QI:units = "kg kg-1" ; QI:param = "82.1.0" ; QI:grid_mapping = "rotated_pole" ; float QR(time, height_2, rlat, rlon) ; QR:long_name = "Rain mixing ratio" ; QR:units = "kg kg-1" ; QR:param = "24.1.0" ; QR:grid_mapping = "rotated_pole" ; float QS(time, height_2, rlat, rlon) ; QS:long_name = "Snow mixing ratio" ; QS:units = "kg kg-1" ; QS:param = "25.1.0" ; QS:grid_mapping = "rotated_pole" ; float QG(time, height_2, rlat, rlon) ; QG:long_name = "Grauple" ; QG:units = "kg kg-1" ; QG:param = "32.1.0" ; QG:grid_mapping = "rotated_pole" ; }}} Variables in `YYYYMMDDHH-precip.nc` files (can be added to INIFOR processing with the `--precipitation` option): {{{ float RAIN_GSP(time, rlat, rlon) ; RAIN_GSP:long_name = "Large scale rain (Accumulation)" ; RAIN_GSP:units = "kg m-2" ; RAIN_GSP:param = "77.1.0" ; RAIN_GSP:grid_mapping = "rotated_pole" ; float SNOW_GSP(time, rlat, rlon) ; SNOW_GSP:long_name = "Large-Scale snowfall - water equivalent (Accumulation)" ; SNOW_GSP:units = "kg m-2" ; SNOW_GSP:param = "56.1.0" ; SNOW_GSP:grid_mapping = "rotated_pole" ; float GRAU_GSP(time, rlat, rlon) ; GRAU_GSP:long_name = "Graupel (snow pellets) precipitation (Accumulation)" ; GRAU_GSP:units = "kg m-2" ; GRAU_GSP:param = "75.1.0" ; GRAU_GSP:grid_mapping = "rotated_pole" ; }}} == Namelist parameters == INIFOR mirrors a subset of the PALM's Fortran namelists `initialization_parameters` and `runtime_parameters` and supports the following parameters. Note that, at the moment, INIFOR uses the old namelist descriptors `inipar` and `d3par` instead, which are the descriptors used in previous versions of PALM. === `inipar` === ||='''Parameter name''' =||='''Default value''' =||='''Description''' =|| || nx, ny, nz || None || Number of PALM grid points in x, y, and z direction || || dx, dy, dz(10) || None || PALM grid spacings in x, y, and z direction [m] || || dz_stretch_level || -9999999.9 || Height above which the grid will be stretched [m] || || dz_stretch_factor || 1.08 || Factor by which the grid will be stretched || || dz_max || 1000.0 || Maximum vertical grid spacing [m] || || dz_stretch_level_start(9) || -9999999.9 || Array of height levels above which the grid is to be stretched vertically [m] || || dz_stretch_level_end(9) || 9999999.9 || Array of height levels until which the grid is to be stretched vertically [m] || || longitude, latitude || 0.0 || Geographical coordinates of the PALM origin [deg]. Both will be ignored if the command-line option --static-driver is used (see below). || === `d3par` === ||='''Parameter name''' =||='''Default value''' =||='''Description''' =|| || end_time || 0.0 || PALM simulation time. INIFOR will produce hourly forcing data from the start date (see -d command-line option) to end_time seconds thereafter. [s] || === Example namelist file === {{{ &inipar nx = 4679, ny = 3939, nz = 360 dx = 10., dy = 10., dz = 10. dz_stretch_level = 2500.0, dz_stretch_factor = 1.08, dz_max = 100.0 longitude = 13.082744, latitude = 52.325079 / &d3par end_time = 86400.0 / }}} == Command-line options == === INIFOR configuration === ||='''Option''' =||='''Default value''' =||='''Description''' =|| |----------- || --averaging-mode || level || Selects how averaged quantities (large-scale forcing terms) are computed. INIFOR supports averaging along input model levels ('level') and along constant heights ('height'). || || -a, --averaging-angle || 2.0 || Width of the averaging box in longitudal and latitudal direction in the source coordinate system (COSMO rotated-pole) [deg]. || || -d, --date || 20130721 || Start date of the simulation in the form YYYYMMDD or YYYYMMDDHH. If no hours (HH) are given, INIFOR assumes that the simulation starts at O UTC on that day. || || -i, --init-mode || profile || Set the PALM initialization mode. INIFOR can provide initial conditions as either profiles or three-dimensional fields. The corresponding modes are 'profile' and 'volume'. || || -i, --forcing-mode || hetero || Set the PALM forcing mode. INIFOR can supply heterogeneous boundary conditions spatially interpolated from the mesoscale model ('hetero') or homogenous boundary conditions horizontally averaged over the PALM domain ('homo'). || || -i, --soil-init-mode || volume || Set the PALM soil initialization mode. INIFOR can provide initial soil data as either profiles or three-dimensional fields. The corresponding modes are 'profile' and 'volume'. || || -r, --surface-pressure || 1e5 || Manually set the pressure at z=0 in the PALM domain [Pa]. If not given, the surface pressure is computed from the COSMO pressure field. || || -u, --geostrophic-u || 0 || Manually specify the geostrophic wind in x direction [m/s]. If not given, the geostrophic wind is computed from the COSMO pressure field. || || -v, --geostrophic-v || 0 || Manually specify the geostrophic wind in y direction [m/s]. If not given, the geostrophic wind is computed from the COSMO pressure field. || || -z, --elevation || 35 || Specifies the elevation of the PALM domain above sea level [m]. || || --precipitation || -- || Turn on surface precipitation output, requires COSMO precipitation output (*-precip.nc files) || === I/O === ||='''Option''' =||='''Default value''' =||='''Description''' =|| || -l, --hhl-file || /hhl.nc || Location of the netCDF file containing the vertical COSMO-DE grid levels, specifically the heights of half levels (hhl, i.e. vertical cell faces). || || -n, --namelist || ./namelist || Location of the PALM namelist file. INIFOR expects the file to contain two namelists, initialization_parameters and runtime_parameters, from which it will read grid parameters and the simulation time. || || -o, --output || ./palm-4u-input.nc || Name of the INIFOR output file, i.e. the PALM dynamic driver. || || -p, --path || ./ || Scenario path, i.e. the path of the meteorological input data. || || -s, --soil-file || /soil.nc || Location of the netCDF file containing the COSMO-DE soil type map. || || -t, --static-driver || None || Location of the netCDF file containing the static driver file for the case to be simulated with PALM. If given, INIFOR will ignore the namelist parameters `longitude` and `latitude` and will instead read the geographical coordinates for PALM's origin from the static driver attributes `origin_lon`, `origin_lat`, and `origin_z`. === File prefixes === ||='''Option''' =||='''Default value''' =||='''Description''' =|| || --input-prefix || laf || Set the file prefixes for all input files. Individual prefixes can be overwritten with the options below. || || --flow-prefix || laf || Set the file prefix of flow input files. || || --precipitation-prefix || laf ||Set the file prefix of precipitation input files. || || --soil-prefix || laf ||Set the file prefix of soil input files. || === Non-argument options === ||='''Option''' =||='''Description''' =|| || --debug || Enable additional terminal messages and netCDF output for debugging. || || --version || Output version number and exit. ||