Home » Surface Water Software » Water Quality Software My Account  |  Cart Contents  |  Checkout   
Free Catalog!
Download Our
Free Catalog!
Featured more
QuickLog, QuickCross/Fence, QuickGIS, QuickSoil
QuickLog, QuickCross/Fence, QuickGIS, QuickSoil
Order & Payment
Shipping & Returns
Privacy Statement
Price Guarantee
SSG Home
Contact Us

Detailed Description




QHM is capable of continuous simulation of:

  • Surface runoff and base flow
  • Detention pond routing
  • Reservoir routing
  • Soil freeze-thaw
  • Snowmelt and snow removal/disposal
  • Evaporation and evapotranspiration
  • Pollutant generation and routing
  • Stream erosion potential

QHM simulation can represent a period of indefinite length (limited only by available disk space). The model can be used on a discrete event or multi-event continuous basis.

QHM Constituents

Constituents that can be simulated are: stormwater runoff (flow rate and volume) and, optionally, one or any combination of: one pollutant exhibiting first-order decay or characteristics simulated using a rating curve; sediments (in up to five size fractions) characterized by discrete particle settling; and instream erosion indices based on cumulative excess boundary shear stress.

Appropriate flow and pollutant records obtained elsewhere (monitoring or other simulation models) can be routed through ponds or river reaches by the model.

QHM System Components

Components of a physical system that can be simulated are:

  • Catchments
  • Detention ponds
  • Reservoirs
  • River reaches which may have junctions and bifurcation (flow splits)

A system comprised of any combination and any number of the above components can be simulated provided that each component of the system and the system as a whole can be described as "one-way" or "non-feedback."

Looping networks, or ponds where outflow depends on water depth in the receiving channel, are examples of situations which might not be well-represented in this model. A typical application appropriate for QHM would be a dendritic river network with channels adequately represented by uniform flow conditions.


When the QHM program opens, the user can select from seven options of which four represent standard Windows utilities. The other three are specific to QHM: HELP, RUN, and UTILITY; these are introduced here and explained in more detail below.

The HELP menu includes, in addition to Windows Help, the complete contents of the user's manual.


The RUN menu includes three commands:

  • RUN QHM starts a simulation run using information provided under UTILITY/SET RUN OPTIONS; if specified by the user, the options will be displayed before the run commences.
  • INPUT INTERFACE, which is described below, allows the user to create a new input file. Some users will prefer to create a new file using the FILE and EDIT commands to modify an existing file.
  • PLOT GRAPH is used to select, view, and print a graph previously created using the UTILITY/CREATE GRAPH command.

UTILITY also includes three commands:

  • CONVERT DATA FORMAT changes standard data formats for precipitation, temperature, and flow into other standard formats. It can also be used to ignore meteorological data that is not needed for a simulation run, and to remove from a file, error codes that will not be recognized by QHM.
  • CREATE GRAPH FILE will identify files and simulation periods for a graph to be viewed and printed by the RUN/PLOT, GRAPH command.
  • SET RUN OPTIONS allows determination of the files to be used in the next simulation run; whether, during a simulation run, the name of the command that is currently being executed will be displayed; and the output to be displayed when a simulation run is complete (this option is not available if the previous one is selected).


The DEFAULT button will display settings that many users prefer.

The QHM program is structured as a series of commands which are summarized in the PROGRAMS COMMAND section herein and described in detail in the user's manual.


This section summarizes information that a user must have at hand before using QHM. Appendix A of the user's manual includes three step-by-step exercises that will guide a first-time user through the basic operation of QHM.

Defining the Problem

It is assumed that the user has identified the problem that the simulation will address:

  • What is to be simulated - flow; quality parameters; stream erosion; snow removal
  • Calibration - flow; quality
  • System components and configuration - a system schematic; identifying sub-watersheds; stream reaches; ponds; and reservoirs

QHM Input Data

qhm_5 qhm_6

Further details about input data requirements and file formats are provided in the INPUT DATA section of the user's manual. Required data includes:

  • Meteorological data as required by the proposed simulation - precipitation file, extension .pre; temperature file, extension .tmp; evaporation data, to be entered in input file
  • Calibration data - flow, extension .flo; quality, extension depends on parameter

Input file formats must be standard formats that are recognized by QHM and must be identified during program setup.

QHM Output


In the input file, the user will specify the nature and form of outputs required after a simulation run: each output file is identified in terms of a Series and ID number. The program, in UTILITY/SET RUN OPTIONS, will ask the user to select the name and extension for the output file and to select output options.

QHM ID and Series Numbers

An ID number is used by QHM to identify a file that contains a time series of flow data that is generated by the program. ID numbers are assigned by the user to identify a flow series at the outlet of a sub-watershed, watershed, pond, reservoir, or channel. Because output quality data, if generated, will be contained in the same file as the flow data, they will also be identified by the same ID number.

The maximum number of flow series files that is retained by the program is 24. If a simulation run creates more than 24 flow series, the user must decide which of the previously created files will be overwritten in order to reassign the ID number to another series; the data in the overwritten files will be lost. In many cases this will not matter, e.g., after flows simulated for two sub-watersheds are combined, the individual files may not be of interest.

If the user wants to retain a record of a flow series before an ID number is reassigned, that series can be recorded by the PRINT SERIES, DUMP PRINT, or DUMP PLOT commands.

In addition to an ID number, each outflow series is also assigned a Series Number. Series Numbers are not recognized by the program; they are intended to allow the user to keep track of files when many files are generated by a single simulation run.

If a simulation run does not generate more than 24 flow series, they will all be identified by their ID numbers; in this case Series Numbers, although they must be entered, will be redundant, and dummy values can be used.

QHM Time Steps

Input data time steps may be 5, 10, 15, 20, 30 or 60 minutes, or 24 hours, for precipitation; monthly for evaporation; or hourly or daily for flow.

The program can be instructed to perform calculations based on any specified time step. If the calculation time step is less than the precipitation time step, the program will use the average precipitation value in each calculation time step. If the calculation time step exceeds the precipitation time step, the latter will be used as the calculation time step.

Time steps for input precipitation data are specified in the START command. Calculation time steps are specified in the GENERATE command. If a flow series not generated by the program is to be provided using the STORE command, the data input time step will be identified under that command. The routing time step for the POND, RESERVOIR, and REACH commands is specified in those commands.


Table 1 lists sample input files that are included with the program, sample data files that are recognized by each input file and indicates the program command that the input file is intended to illustrate. It also indicates the data format of each sample data file.


File Name



Associated Files



Purpose is to test:




File Name


rainfall data
rainfall data
rainfall data
rainfall data
winter precipitation data

temperature data file
flow sample file
flow sample file
rainfall data
rainfall data
rainfall data
rainfall data

Data Period
81-06-10 - 81-06-30
65-05-01 - 66-04-01
85-02-01 - 85-12-31
90-06-01 - 90-10-29
70-11-02 - 71-05-04
83-01-03 - 87-04-10
70-11-01 - 71-05-04
92-05-30 - 92-06-30
92-05-30 - 92-06-30
97-08-07 - 97-08-09
97-08-07 - 97-08-09
97-08-07 - 97-08-09
97-08-07 - 97-08-09

Data Format
AES Hourly
AES Hourly
HEC Hourly
HEC Hourly
AES Hourly
AES Hourly
AES Hourly
IWD Hourly
HEC Hourly
10min. file
15min. file
30min. file
5min. file


QHM Utility

Convert Data Format
This utility converts a precipitation, temperature, or flow file from one format to another. Details about data formats are provided under the INPUT DATA Section above. The user can identify an existing Source file, and the Destination file into which the converted data will be placed. "Omit Period" allows a user to omit a selected period (e.g., Winter months) from every year in the period of record of the Source file. "Remove Missing Date Codes" will replace error code values (e.g., -9999) with zeros.

Create Graph File
This utility allows input of settings for a graph that can be viewed and plotted using the RUN/PLOT GRAPH command. Up to three data series from selected precipitation, flow, or quality files can be plotted for a time period selected by the user. A temperature file can be plotted instead of precipitation (for both AES and HEC files - the data format for these parameters is the same). "Plot Rain File Hyetograph at Top" will instruct the program to plot the identified precipitation or temperature data at the top of the graph for comparison with flow or quality data. The user should assign a name for the Graph File that will be created and can provide a label to be printed above the graph.

If the start and end dates are not specified, the complete file will be plotted. If more than one file is plotted and the time periods of the files to be plotted are not the same, the program will plot the portion of the selected time period that is common to all of the files.

Set Run Options
This utility allows selection of options related to the next QHM simulation run.

The initial screen first allows the user to choose whether the File Setup screen will be displayed here ("No"), or will be displayed when a simulation run is commenced under RUN ("Yes").

Particularly for long simulation runs, the user may wish to follow the progress of the run by a display of the QHM command that is currently being executed. If this choice is selected, the display options allowed by the next set of choices will not be available.

The "Display Output" menu allows a choice of "Utility Commands" which places the output from selected commands identified in the input file in text files which are displayed in the editor at the end of the run.

  • "Primary Output File" which displays this file in the editor at the end of the run.
  • "Plot Graph" which displays the PLOT GRAPH screen at the end of the run.
  • "None" is none of the above.

The save button will save the preceding instructions. If the answer to the initial question was "No," a File Setup screen will appear. Here the user must enter the names of Primary Input and Output files and applicable data files to be used in subsequent simulation runs.

The settings in the Set Run Options screen, once saved, will be retained until this screen is reopened, i.e., if repeated simulations are run using the run command, the same run options will apply for each run.


If the user indicated in the Utility/Set Run Options screen that the File Setup screen was to appear at the beginning of each run, it will appear now, and the user must select the files to be used in the simulation run. The "Run" button will then begin the simulation run.

If the File Setup screen was previously created, the simulation run will begin when "Run QHM" is selected.

Plot Graph


This command will allow a graph created under UTILITY/CREATE GRAPH FILE to be retrieved, viewed, and printed. The following are steps required to plot a graph using the QHM graph program:

  • Create Graph Data File: this may be done from the graph program under the file menu - New Graph Data File or from the QHM main menu under Utility. Creating a graph data file should be done at the end of the QHM run.
  • In the dialog box for creating a new graph data file, the user selects the time series IDs to be plotted. These IDs are corresponding to the IDs that were specified for different commands in the primary input file. Up to three series IDs may be plotted and one rainfall Hyetograph that appears on top of the series ID graphs. The extension of the graph data file to be created must be ".plt." The user may create as many graph data files as are needed and may view or print them at any time.

Input Interface
This menu will create an input file for QHM. Before using the interface, the user should have assembled information about the problem that will be addressed by the QHM simulation (see Getting Started Section above).

The user must begin by opening an input (.inp) file. If an existing file is selected, it will be overwritten.

The Input Interface cannot be used to edit an existing input file; this can be done in a text editor. Note also that once information from an Input Interface screen is written to file it cannot be corrected in this utility; corrections must be made using a text editor. (An option to use of this interface is to edit sample files provided with the program to represent the user's system.)

The Input Interface menu is organized in terms of groups of QHM commands as follows:

  • UTILITY: Utility Commands

The user is expected to invoke these commands in the order in which they will appear or reappear in the input file. The following deals briefly with individual commands which are discussed in detail in the user's manual.

In this screen, the user first enters the limits of the time period to be simulated and the name and format of data files that will be used for precipitation, flow (if an external flow is to be added or for calibration) or temperature. A precipitation file is required unless the simulation involves only routing of a specified flow series. If Evaporation is selected, monthly pan evaporation values must be entered together with correction coefficients that will be applied when watershed evapotranspiration is calculated.

If POLLUTANT RATES is selected, coefficients must be entered, where applicable, for impervious and pervious surfaces and base flow. If SEDIMENT SIMULATION is selected, soil settling velocities and size factors must be provided. In either case, buildup and washoff calculation methods, coefficients, and exponents must be identified.

This command is evoked when the input file is considered to be complete; it will add a FINISH statement to the file. Subsequent modifications to the file must be carried out using a text editor.

If pollutant rates are to be simulated, information must be entered before each GENERATE command. Values entered before the first GENERATE command will be used as defaults if the POLLUTANT RATE command is not reissued prior to subsequent GENERATE commands.

The GENERATE command must be used to describe each sub-watershed in the system. When the information required by the initial screen is entered, "Go" will request additional information. When this information is provided, "Write" will update the input file.

This command will store an external flow file identified in the START command, for simulation, calibration, or plotting.

The User Interface cannot be used in the current version of QHM to include this command in an input file. It can be added, based on Section 3.7 of the user's manual and the sample file, using a text editor.

When all of the information requested in the initial screen is entered, "Go" will request further information.

Information is entered in this screen in accordance with the user's manual. If a trapezoidal channel is selected, channel characteristics will be requested. If another channel configuration is to be used, appropriate information can be provided after "Enter."

This command can be used for hydrologic routing though a straightforward lake or reservoir system. For a more complex system, or if pollutant routing is required, the POND command should be used.

Refer to the OUTPUT and UTILITY Commands below and the user's manual for information about UTILITY commands in this menu. These sections also describe several other UTILITY commands that are not included in this menu; they can be added to an input file using a text editor.


The QHM program is structured as a series of separate commands. These can be invoked as necessary, in any order after the START command, to simulate a particular physical system. The following paragraphs provide a brief overview of these commands and describe the required format for command lines and input data. Chapter 3 of the user's manual provides detailed information about each of these QHM commands.

QHM commands can be grouped into these three categories.

  • Control function commands
  • Hydrologic simulation commands
  • Output and Utility commands

QHM Control Function Commands

These commands (START, FINISH) allow the user to control the simulation run (i.e., initialize the run and terminate it respectively). The START command also allows the user to elect to simulate one, both, or neither of the pollutant types in the model.

These commands also define the type of algorithm that the model will use for pollutant simulation and provide parameters necessary for these algorithms. Subject to certain restrictions noted below, the START command can be issued repeatedly through a run as required to modify generation methods, parameters, or simulation spans.

QHM Hydrologic Simulation Commands

These are the actual functional commands of the model and represent the entire repertory of simulation capability. The commands allow the user to carry out the following operations:

  • Generate a synthetic time series of stormwater runoff from a watershed (GENERATE).
  • The user may route a time series through a channel or river reach (REACH) and/or a detention-type control device (POND or RESERVOIR).
  • Time series can be added (ADD SERIES) or split (SPLIT SERIES). Although most applications of QHM are likely to be in dendritic systems, the flow split is incorporated to allow the user to simulate special system configurations, i.e., a number of control ponds in parallel.
  • The user may assess instream erosion potential at any arbitrary cross section using one of the three shear stress related indices (EROSION INDEX). These indices are based on excess boundary shear stress as defined by instantaneous shear stress minus critical shear stress at up to twelve arbitrary points along the channel perimeter.

QHM Output and Utility Commands

These commands include:

  • CALIBRATE which compares simulated and recorded flow series.
  • SERIES STATS, EXCEEDANCE CURVES, SCAN SERIES and MAX/MIN which will produce statistics about flow and pollutant series.
  • PRINT SERIES, DUMP PRINT, and PRINT SPAN which will print output as on ASCII file or in a tabular format.
  • DUMP PLOT and PLOT SPAN which can be used as alternatives to the PRINT GRAPH command in the Main Menu to plot all or part of a flow or water quality series.


QHM Data Formats

Format of Command Lines
All of the QHM commands are formatted in the following manner:


1................................... 20/21..................................................................79

COMMAND NAME ((text) (parameter)) ((text) (parameter))...


COMMAND NAME is the exact string of characters representing the command to be invoked (see RUN section above) beginning in column 1 of the record and extending to column 20.

The (text) is arbitrary and may be omitted. It allows the user to annotate the file to identify variables.

Each (parameter) must be provided according to the requirements of the command. All required parameters must be provided, in the correct order but parameters are otherwise in free format. The program will only read the number of parameters it needs for any command; extra values at the end of the command group will be ignored.

The ((text)(parameter)) list must occupy only columns 21 to 79 of any record but may occur on as many lines following the COMMAND NAME as necessary.

The sequence of commands is entirely up to the user except that the first command must always be a START, and the last command must always be a FINISH.

Any line beginning with an asterisk is treated as a comment and is not interpreted by the model. A comment line cannot occur within a command line series. It must occur between command lines. Any non-comment line with an asterisk in column 80 causes a page feed to be generated after the line is read but before it is echoed.

Format of Rainfall Lines
The model reads rainfall data files in either Atmospheric Environment Service (AES) condensed format for microcomputers or HEC "STORM" model (Rosener et al., 1976) format as described below:

A) AES Format:
Eight leading blank or character spaces followed by three two-byte ASCII integer values (year, month, day), and three blank or character spaces followed by either (1) 24 four-byte ASCII values of hourly rainfall volumes in tenths of millimeters - Format: (8X,3I2,3X,24I4) or (2) 96 four-byte ASCII values of 15-minute rainfall volumes in tenths of millimeters.

B) HEC "STORM" Format:
Two leading blank or character spaces followed by three two-byte ASCII integer values (year, month, day), followed by 24 three-byte ASCII values of hourly rainfall volumes in millimeters. Format: (2X,3I2,24I3)

Rainfall data must be supplied if the GENERATE command is used but is otherwise not required. Rainfall lines must be supplied for days where rain occurs but may be supplied for all days during a simulation span including dry days. Note that the time step (DTINC) in the GENERATE Command must be equal to or less than the precipitation time step.

As noted below, the file number for rainfall data to be used in the simulation is specified in the START command (typically described as device 9). GENERATE commands only read rainfall data specified in the most recent START command. The reissue of a START command during a run therefore allows the user to change rainfall records applied in the simulation.

Format of Temperature Lines
The model reads temperature data, one line of 113 characters per day, based on either AES condensed format for microcomputers or HEC "STORM" format.

A) AES Format:
Eight leading blank or character spaces followed by three two-byte ASCII integer values (year, month, day), and three blank or character spaces followed by 24 four-byte ASCII values describing hourly temperature in tenths of a degree Celsius. Format: (8X,3I2,3X,24I4)

B) HEC "STORM" Format:
Two leading blank or character spaces, followed by three two-byte ASCII integer values (year, month, day), and twenty-four three-byte ASCII values describing temperature in degrees Celsius. Format: (2X,3I2,24I3)

The GENERATE command looks for the temperature data on device 8. Hourly temperature must be supplied if snowmelt is requested. Otherwise temperature data may be omitted.

To save file space, temperature data is only read from November 1st to May 31st inclusive. The temperature file must correspond to this interval with no records occurring in the interval from June 1st to October 31st inclusive.

Format of Flow Lines
The user is provided with the option of reading hourly- or daily-formatted WSC daily or HEC flow records when the STORE command is invoked. This section provides summary information on the data used by the STORE command. Details of this operation are presented in the description of the STORE command provided in the manual.

A) USGS Flow Records
USGS daily streamflow values, in CFS, are listed by days of the month for each year, i.e., 31 records per year. Information is provided in the following order: station number, blank, year, blank, day of month, and flow. Format: (I8,1X,14,1X,12,12F8.x)

The number of decimal places for the streamflow values is variable depending on the magnitude of the streamflow. The field is always eight columns wide. The value is given to two decimal places for flow less than 1 CFS, one decimal place for flow of 1 CFS or greater but less than 10 CFS, and no decimal places for flow of 10 CFS or greater. There is a decimal point only if there are decimal places. The field for a nonexistent day, for example, November 31 or September 31, is blank.

B) WSC Hourly Flow Records
A sequence of four flow lines (lines) is expected per day of data input. Each of the four lines contains six hours of flow data as follows:

Eight leading blank or character spaces followed by three two-byte ASCII integer values (year, month, day), and two blank or character spaces followed by six ten-byte ASCII values of hourly flow rates in cubic feet per second or cubic meters per second. Format: (8A1,3I2,2X,6F10.3)

C) WSC Daily Flow Records
A sequence of three flow lines is expected per month of record. The format is consistent with WSC records as described below:

line 1: Nine leading blank or character spaces followed by two two-byte ASCII integer values (year and month) and a blank or character space and ten five-byte ASCII values separated by a space or character value describing flow rate in either cubic feet or cubic meters per second, then four blank or character spaces and one two-byte ASCII integer value for the number of days per month (NDYMO). Format: (9X,2I2,1X,10(I5,1X),4X,I2)

line 2: The format is as described above except that the last variable, number of days per month (NDYMO), is excluded. Format: (9X,2I2,1X,10(I5,1X))

line 3: The format is as specified for line 2 except that eleven flow values are read rather than ten if NDYMO=31. Otherwise line 2 is repeated. Format: (9X,2I2,1X,11(I5,1X))

Flow data must be supplied if the STORE command is used but is otherwise not required. Flow lines must be supplied for all days during the time span indicated by the user on the STORE command.

As noted below, the FORTRAN file number for flow data to be input is specified in the START command (typically assign to device 10). The STORE commands only read flow data specified in the most recently preceding START command. The reissue of a START command during a run therefore allows the user to change flow records stored by the model.

Copyright © 2018 Scientific Software Group