The hwrf
Python package implements the individual pieces of the HWRF system, and provides means by which they can be connected to one another. This represents the HWRF Layer in the Layered System of the Python HWRF. This page documents the various pieces of the hwrf
package at a high level. It does not aim to provide detailed, low-level documentation: that can be found in the documentation automatically generated from the Python docstrings.
FIXME: Fill in this page with information.
Modules for Utilities and Abstract Base Classes
This section describes low-level modules in the hwrf
package. These modules do not implement the HWRF itself, instead they implement common functionality missing from the Python standard library specific to the way the hwrf
is designed. Their purpose is to simplify the rest of this package by collecting commonly reocurring code into functions or base classes.
Module hwrf.exceptions
: Exceptions Thrown By hwrf
This module contains all Exception
subclasses thrown by the hwrf
package, except for excpetions in the standard library or produtil
package. The number of exceptions is quite large, so the reader is directed towards the docstring documentation. However, the module defines a tree of exception classes, so calling code only needs to be aware of the higher-level classes unless very specific error handling is desired.
Module hwrf.numerics
: Time and Numerics Utilities
This module defines a number of numerical utilities to simplify the rest of the hwrf
package. The hwrf
package performs a large amount of date and time manipulation to, for example, compute file output names based on WRF timestep settings or determine the valid time of a forecast hour, given its analysis time. The Python standard library can be used to do all of this work, but results in very verbose code. This module provides utilities to simplify that code. In addition, there are a number of non-time-related utilities to perform simple numerical computing tasks such as, for example, computing the great arc length between two points.
There are two classes defined in this package that bear further mentioning:
hwrf.numerics.TimeArray
– an array-like object that maps an equally spaced list of times each to an object.
hwrf.numerics.TimeMapping
– an object that acts similar to the standard library map
class, but mapping times to an object. Times within some epsilon of a known time are treated as that time.
Module hwrf.namelist
: Fortran Namelist Utilities
This module contains code to generate Fortran namelists from in-memory Python objects. It knows how to convert certain Python objects, such as strings or datetime.datetime
to a fortran namelist expression of the same, and back again. The hwrf
package this module to generate namelists from the parm/hwrf.conf
file in the Experiment Layer.