Weather parameter post processing tool
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
doc Code review feedback and some other changes I noticed Oct 17, 2018
example/seaicing Add nodatabase-mode for himan, and some concrete examples how to use it. Apr 5, 2017
himan-bin New release Oct 16, 2018
himan-lib New release Oct 23, 2018
himan-plugins
himan-scripts
.clang-format
.gitignore Added gitignore Jun 29, 2017
Dockerfile
Doxyfile initial import Jan 7, 2013
LICENSE
README.md Add a few new parameters to README Mar 28, 2018
clang-format Added clang-format file as git test Jul 26, 2016
scons_common.py z and bz2 are libs, not libpaths Sep 25, 2018

README.md

Himan

Himan is a weather parameter post processing tool.

Properties

  • Forecast provider agnostic post processing
  • Able to produce several useful weather parameters not produced by the forecasts themselves
  • Main design principles are performance and maintainability
  • Written in C++11
  • Partial support for GPU's through Cuda
  • Actively developed and supported by the Finnish Meteorological Institute
  • yum repository available for RHEL7
  • Licensed under MIT license

Parameter list

Himan is able to produce the following parameters, given required source data:

  • cloud code
  • dewpoint
  • fog type
  • pressure at hybrid level
  • (metric) height of hybrid level
  • icing in the atmosphere
  • icing at sea (sea spray icing)
  • stability indices
    • k-index
    • lifted index
    • vertical totals index
    • cross totals index
    • total totals index
    • showalter index
  • height of 0 and -20 isotherms
  • precipitation form using pressure level information (less accurate)
  • precipitation form using hybrid level information (more accurate)
  • precipitation type (continuous, showers)
  • relative humidity
  • accumulated precipitation and radiation to rates and powers
  • potential temperature
  • pseudo-adiabatic potential temperature
  • equivalent potential temperature
  • vertical velocity in meters per seconds
  • speed and direction from vector components
  • density of dry air
  • liquid and solid precipitation from mixing ratios
  • absolute humidity
  • sounding indices
    • CAPE
    • CIN
    • LPL, LCL, LFC, EL height and temperature
  • weather symbol (two different versions)
  • monin-obukhov length
  • wind gust
  • qnh pressure
  • cloud ceiling in feet
  • probability of thunderstorms
  • snow depth
  • toplink winter weather indices 2 & 3
  • modified clear air turbulence indices 1 & 2
  • lapse rate
  • cloud types
  • visibility
  • fractiles from ensemble
  • probabilities from ensemble
  • probability of precipitation
  • turbulent kinetic energy
  • unstaggering of Arakawa C grids
  • fog intensity
  • wind (bulk) shear
  • effective bulk shear
  • storm relative helicity
  • energy-helicity index
  • bulk richardson number
  • frozen soil depths (bottom and top)
  • growing degree days
  • frost sum
  • tropopause height
  • cloud layers for taf generation
  • smartsymbol (weather symbol)
  • weather number
  • low visibility procedures probability

Architecture

Himan is split into four separate but not independent components:

  • executable (himan-bin)
  • library (himan-lib)
  • plugins (himan-plugins)
  • scripts (himan-scripts)

The binary (himan) is a simple frontend and does little else but parse the command line options and initiate the execution of plugins listed in the configuration file.

The library (libhiman.so) contains common code that is used by the plugins. This common code includes for example interpolation routines, json parser, metadata classes such as parameter and level, meteorological formulas and so forth.

The plugins (libX.so) contain the actual core and idea of Himan. Each plugin is a shared library that exposes only one function that himan executable is calling. Everything else is free game for the plugin. So there is a very large degree of freedom for a plugin to do whatever it needs to do. All plugins share code from a common parent class which reduces the amount of boiler plate code; the common code can be overwritten if needed.

Plugins are split into two types: helper (auxiliary) plugins and core ("compiled") plugins. The helper plugins provide several necessary functions for the other plugins to interact with the environment. These functions are for example fetching and writing data, accessing databases, storing and fetching data from cache and so forth. Two separate but important helper plugins are hitool and luatool. Hitool exposes functions that examine the state of the atmosphere in a certain way. For example it can be used to get minimum/maximum value of some parameter in a given vertical height range. Height can be specified in meters or in Pascals. Luatool plugin is a shallow lua-language wrapper on top of Himan. With luatool one can create lua-language scripts which are much faster to write and more flexible than the C++-based plugins, especially if the given task is light weight.

The purpose of the core plugins is to provide some output data given required input data. The range of operations stretches from very simple (calculate radiation power from accumulation) to more complex algorithms (determine the precipitation form). Certain plugins that operate with hybrid levels are also optimized for Nvidia GPU processors. This an addition to the normal CPU based functionality: Himan does function perfectly without GPU's.

Himan also supports scripting through lua: for some post processing operations building a new cpp-plugin is a too heavyweight operation. For this reason Himan has a plugin that interprets lua-language scripts.

The name

Himan stands for HIlojen MANipulaatio, "grid manipulation" in Finnish.

Getting started

Getting started

Contributing

  • Feel free the submit issues or feature requests
  • Pull requests are accepted
  • CLA is required for code contribution

Communication

You may contact us from following channels:

Our public web pages: http://en.ilmatieteenlaitos.fi/open-source-code