Q.1. Where can I obtain a copy/license of CORMIX?
CORMIX software is licensed and distributed solely by MixZon Inc
The evaluation/demo of the new windows version of CORMIX is available for internet download from MixZon Inc
after completing a site registration.
The first step to licensing CORMIX on your computer is to install the free evaluation version. The latest software release contains new tools for mixing zone analysis, updated hydrodynamics and mixing zone decision support.
The downloads page contains links to the free evaluation
version CORMIX v9.0E. The evaluation version can then be activated/unlocked to commercial
versions after buying appropriate license/s from MixZon Inc.
The feature comparion table between various versions of CORMIX v9.0 is published at:
The current licensing and pricing options are published at:
The hydrodynamic models of CORMIX v1.x, CORMIX v2.x CORMIX v3.x (DOS versions), CORMIX-GI v4.x, CORMIX v5.x, CORMIX v6.x, CORMIX v7.x and CORMIX v8.x have been extensively updated over the last 20 years.
Therefore, commercial engineering analysis of mixing zones using LEGACY versions (versions less than CORMIX v9.0) is not recommended nor supported.
Please refer to the website for a list of improvements, new features, updates, upgrades and bug fixes at:
Q.2. Where can I obtain a copy of the latest CORMIX User Manual?
A. The complete CORMIX User Manual (in Adobe Acrobat - PDF format) is available for download, using your MixZon account information from the downloads site (approximately 25.0 Mb).
The User Manual is also part of the CORMIX installation. If you have installed CORMIX v9.0 on your system, the User Manual is located in the installation directory under the ..\docs sub-directory as the file "User_Manual.pdf".
The manual can also be accessed from within the CORMIX UI by clicking on the "User Manual" button.
Q.3. Where and how do I seek additional CORMIX Technical Assistance/Support?
A. Check the technical support page for additional details.
MixZon Inc also offers extended tehnical support (CorSupport Subscription) and consulting for CORMIX sofware, mixing zone analysis, and outfall design.
The general procudeure is as follows. If you are using CORMIX you will need to locate the corresponding input data file(s) (fileid.cmx) for each
and every case under consideration. You should send this file(s) as an email attachment (no need to compress or alter) with specific questions in
regards to each case to the contact listed below. When making inquiries, please refer to specific cases and flow
module regions within your prediction file(s) (fileid.prd) .
Please send help requests within email text or as Adobe Acrobat attachments. Attachments such as Word documents are not
accepted because of security risks in opening these files.
Legacy DOS/Windows versions of CORMIX and versions less than the current verion, CORMIX v9.0, are NOT supported.
Q.4. Is CORMIX applicable to my problem?
Q.5. What type of training/background do I need to understand and use the CORMIX model?
A. Most successful CORMIX model users have a background in physical sciences and/or engineering. Many people apply the
model successfully after carefully reading the User Manual and closely following
the case study example problems presented in Appendices B, C, D, and E.
Also, touring the links on this web site may be useful!
Please check the training page for schedlued
PSU-MixZon sponsored CORMIX training workshops.
Q.6. Troubleshoot CORMIX installation issues?
Q.7. How do I get the print function to work?
The save and print features have been DISABLED in the evaluataion/demo version of CORMIX. You will need a valid licensed version of CORMIX to save and print CORMIX output under Windows reliably.
You can save and print the output from the visualization tools like CorVue and CorSpy, directly, from within their respective UIs, using the Save As and Print toolbar buttons.
CorVue, CorSpy visualizations can be directly saved in JPEG, GIF, BMP, TIFF, and PostScript (*.ps) formats, using the toolbar buttons in the UI.
You can also use the Copy (Ctrl + C) and Paste (Ctrl + V) clipboard functionality to copy and paste the current visualizations into any document editor like MS-Word.
Q.8. Have the hydrodynamic simulation models changed from previous versions?
A. Yes, updated hydrodynamic models are used in all software release versions.
Specifically CORMIX1 and CORMIX2 simulation algorithms were modified
for terminal level behavior in density stratified crossflow
and for representation of the following asymptotic flow regimes: pure jet, pure plume, pure wake, and
advected line puff. Additional details about the asymptotic flow regimes can be found in a paper by Jirka, 1999.
The CORMIX3 simulation models were extensively revised replacing many near-field analytic
solutions with an integral model approach.
Also, CORMIX predictions are within +/- 50% of one standard deviation of available data.
When comparing predictions, dilution S should be used for comparison not concentration. Furthermore,
when comparing dilution S values, use the Logarithm of dilution S. All Log10(S) are well
within the scatter of associated field and laboratory data.
The CORMIX software is continuously updated with new and improved features, updated hydrodyhnamics, rulebases and fixes for reported bugs.
These are documented as part of the CORMIX Quality Assurance - New Features, Updates & Fixed Bug List, published in the MixZon webstie at
Q.9. How do I interpret plume dimension values and how can I compute/plot plume concentration isoline profiles?
A. The CORMIX User Manual shows plume width and profile definitions
on Figure 5.5, and additional advice on plotting isoline concentrations
appears on page 76 (New User Manual - 2007 v5.4).
The FORTRAN prediction files (e.g. fileid.prd) list the plume profile definitions used within each module at
the beginning of the output for each module.
Plume horizontal width values (BH) are reported as half-widths until bank contact, after which they are reported as
full widths. After bank contact, the plume centerline coordinates switch to the contacted bank, which then becomes
a plane of symmetry.
Also, in most mixing zone analysis, minimum centerline dilution is often the only acceptable
parameter to determine regulatory compliance. The CorVue visualization tool available
in CORMIX gives 3-D and 2-D visualizations of minimum centerline concentration,
flow dimensions, and regulatory mixing zone compliance.
Q.10. How do I account for an ambient background concentration of a pollutant in the receiving water?
A. As a mixing zone model, CORMIX assumes that sufficient ambient water is available to dilute the effluent to levels
which approach the background concentration. Thus it is assumed that the volume flux (m3/s) of the
discharge Q0 is much less than the volume flux of the ambient Qa ( i.e. Q0 << Qa).
If the above volume and mass flux assumptions hold true, then advice for simulating cases with ambient background
concentrations as excess concentrations appears in the CORMIX User Manual as an example
on page 61 (New User Manual - 2007 v5.4).
Q.11. How do I calibrate parameters in the CORMIX model?
A. CORMIX does not have any user-adjustable parameters. However, it is suggested that you
run a sensitivity analysis with representing a range of discharge (velocity, density) and/or
environmental conditions (depth, velocity, density stratification) likely to
occur at your site.
The advanced post-processing tool CorSens available in CORMIX v9.0GT can automatically
create input files and execute batch simulations for sensitivity study analysis and outfall design.
This tool allows the analyst to quickly assess boundary interaction and stability as
well as regulatory mixing zone properties including CCC compliance for a range of discharge
and ambient conditions.
Q.12. Why does CORMIX stop predictions before the region in which I need a dilution value?
A. In cases with steady ambient flows, check the prediction file
(fileid.prd) for warning messages about limiting dilutions and/or low ambient velocities.
If the ambient velocity is very small (or zero), unsteady ambient flow processes may cause
pollutant build-up in the near-field. Therefore the flow behavior and thus dilution
will be highly dependent on local ambient geometry. There are no general modeling approaches to
determine far-field mixing zones in these low ambient
velocity cases. However detailed numerical models may be applied, but the time and expense involved often makes these
numerical modeling approaches impractical.
In cases with unsteady ambient environments, CORMIX is a steady-state model,
whereas tidal cycles are an inherently unsteady ambient environment.
In tidal mode, CORMIX accounts for re-entrainment of the historic plume remaining from the previous tidal cycle.
Because it takes time for the historic plume to develop, there is a limited region/time over which this re-entrainment
Q.13. How does CORMIX simulate tidal
A. CORMIX is a steady-state model, whereas tidal environments are
inherently unsteady. Because most regulatory mixing zone analysis
requires "worst case" dilution analysis, analysts sometimes consider conditions at
slack tide (often zero ambient velocity) as representative of the "worst case". However, minimum initial
dilution generally will not occur at slack tide, but shortly after slack tide when the plume re-entrains material remaining
from the previous tidal cycle. In tidal mode, CORMIX considers the reduction in
initial dilution due re-entrainment of material remaining from the previous cycle. It does not consider unsteady build-up
of material over several tidal cycles, it assumes a complete flushing of
the historic plume in the near-field, will occur within a tidal cycle.
If unsteady build-up in the near-field or far-field
over multiple tidal cycles is likely at your site, additional methods of analysis
may be necessary. Section 8.6 in Technical Guidance Manual for Performing
Waste Load Allocations Book III: Estuaries Part 3 Use of Mixing Zone Models in Estuarine Waste Load
Allocations (EPA 823-R92-004) discusses calculation of pollutant build-up over multiple tidal cycles.
Q.14. What do I do if the CORMIX application crashes?
A. If you are using CORMIX v9.0, a pop up window will appear stating that you should e-mail your input file to email@example.com. If you get a message that
says "traceback error", "what is the FLOAT value for GPO . .", or "what is the value of . . .".
In such cases, please send the corresponding data input file (fileid.cmx) as an attached file to technical support with a note
about the case.
A vast majority of simulations will execute within seconds, however, depending on the flow classification and
you computer configuration, some simulations may take up several hours.
For "INPDATA" error - please refer to our FAQ at:
Q.15. Where can I obtain related CORMIX technical documents?
A. The CORMIX1 and CORMIX2 Technical Reports are currently available in
hard copy format only through NTIS.
Scanned PDF copies of the CORMIX1, CORMIX2 and CORMIX3 Technical reports are available form MixZon Inc. for immediate download.
However, a complete CORMIX documentation set is available from MixZon Inc in online hypertext format. This product - CorDocs- is available
in CORMIX v9.0G/GT/GTH/GTS/GTD/GTR and contains the CORMIX1 and CORMIX2 USEPA technical reports as well as the CORMIX3 technical report from the DeFrees Hydraulics lab.
Please, check the CORMIX downloads page for additional
Q.16. How does CORMIX account for wind direction on plume trajectory and mixing?
A. In CORMIX, wind velocity specification is used for two purposes:
- Wind velocity is used to adjust the heat exchange transfer rates for positively buoyant surface density current mixing
for heated discharges.
- Wind velocity is used to adjust the turbulence in the surface layer to account for increased mixing for positively buoyant surface density currents.
Therefore, in general, wind is not a directional quantity within CORMIX, but is used to adjust density current mixing properties.
The required CORMIX ambient schematization assumes a surface velocity field in only one direction.
If winds affect the ambient velocity field direction, that information should be captured by your schematization, where the wind-induced
ambient velocity direction is specified as the positive the x-axis direction.
However, if you have directionally non-uniform ambient velocity profile and a stable CORMIX flow classification, then CorJet may be applied
for detailed near-field turbulent buoyant jet mixing in
such a directionally non-uniform velocity field. This application is specified by
using a skewed velocity profiles. See Appendix E of the CORMIX User Manual for an example
application of near-field mixing analysis with a directionally skewed ambient velocity
Q.17. Does CORMIX really give a jump in dilution if I add one port to a multiport diffuser?
A. No. This simply reflects a misunderstanding about the mechanisms controlling multiport diffuser mixing.
Mixing in multiport diffusers after plume merging is primarily controlled by the flux
of momentum and buoyancy per unit of diffuser length in
relation to the local layer depth Hs. Thus, CORMIX uses the primary controlling variable of flux per length of
the diffuser, not the number ports to determine mixing behavior. Changing the number of ports will not effect CORMIX flow classification
or dilution estimates of near-field mixing after plume merging occurs.
However, changing the diffuser length can sometimes have a strong influence on mixing behavior. For instance in density-stratified ambients,
changing the diffuser length can effect flow trapping behavior and density current terminal level formation. CORMIX will alert the analyst
to a flow class change when altering diffuser length.
Q.18 Does a discontinuous CORMIX prediction mean that the model is not reliable?
A. No, most certainly not and in fact just the opposite. CORMIX is just reflecting the fact that mixing processes
themselves do not always behave in a continuous manner. These phenomena are well supported by experimental data, and
CORMIX simply reflects their occurrence.
Flow processes can be unsteady because mixing is a turbulent and often chaotic
process, where small changes in initial conditions can affect mixing behavior. Since CORMIX (like all other models)
assumes steady-state discharge conditions, some jumps in dilution prediction may occur
when changing ambient or discharge variables that force a transition from one flow class to another flow class.
Therefore, some jumps in dilution may occur in sensitivity analysis when a change in discharge or
ambient conditions causes a change in flow classification, i.e. a flow class transition.
In reality, such a flow class transition in nature will tend to be an unsteady process.
In such an unsteady transition, the observed flow process (e.g. a density current upstream
intrusion) may appear, dissipate, and then reappear again over time in an unsteady manner.
However, within a given flow class simulation, CORMIX will always give continuous dilution
predictions between flow module regions. However, sometimes flow width predictions will experience a jump between flow
module regions. This is largely an artifact based upon the definition of the plume width (i.e. concentration profiles based upon
maximum centerline versus flux averaged). Concentration profile definition is largely an arbitrary quantity selected for
mathematical convenience rather than for significance of some underlying physical effect.
The most important points are that i) changes in mixing behavior are supported by available data,
and ii) CORMIX alerts the analyst to the change in mixing behavior with its extensive program documentation.
Thus, the savvy analyst will view this as evidence of the robust nature of CORMIX and should consider it carefully in
Other available models would not even indicate the possibility of a change in physical mixing behavior when changing
discharge or ambient variables (e.g. when changing diffuser length or discharge density), and therefore may give "
comforting" but misleading continuous dilution
Q.19. What is the difference between CORMIX and the USEPA PLUMES (Visual Plumes) models?
A. There are a host of distinct differences in usability, range of application, physical processes simulation, and modeling
philosophy. A few of them are listed below.
CORMIX places emphasis on boundary interaction as it affects mixing processes. Boundary interaction will control discharge stability in the discharge vicinity and is well documented in peer-reviewed scientific literature. Determination of stable versus unstable flow is particularly important for near-field mixing of riverine discharges, or wherever mixing zone boundary interaction information is desired.
CORMIX accounts for both vertical and lateral boundaries through a process called schematization. Schematization allows the analyst to predict flow behavior on shorelines, benthic regions, and other biologically important and chemically reactive regions. The schematization process does not imply that CORMIX requires a rectangular cross-section (as one publication mistakenly suggests) for successful application. Schematization should encourage the analyst to consider the finite space into which a discharge typically occurs, and the boundaries the flow is likely to interact with.
PLUMES does not address the effects of vertical or horizontal boundaries on mixing or on discharge stability. This is indicated by the absence of any schematization process within PLUMES. It simply assumes the ambient water body is infinite. The issues of flow stability and/or boundary interaction are never addressed.
CORMIX simulates density current mixing in the far-field. Density currents are gravity driven flows that collapse into thin horizontal layers and resist the transition to passive diffusion. Sometimes density currents intrude upstream. CORMIX uses length scale methods to simulate upstream buoyant intrusions while density current flows are simulated with an integral model approach. The transition from density current to passive diffusion mixing is computed by a local flux Richardson stability criteria.
PLUMES does not even consider the existence of this important physical process. For instance, density currents with upstream intrusion stagnation points are not simulated. Instead PLUMES incorrectly assumes passive diffusion always occurs after the completion of near-field mixing. Whereas a density current will vertically collapse within a thin layer, a passive diffusion process can only increase in vertical plume dimension. Thus PLUMES incorrectly simulates the underlying physics.
CORMIX simulates near-field wake and Coanda dynamic attachments. Such attachments can cause high pollutant concentrations on the bottom in the vicinity of the discharge. Because of the biological importance benthic regions, such bottom impact assessment is required in most regulatory mixing zone analysis.
PLUMES has no mechanisms to check for or simulate dynamic plume attachments in the near-field. Because there is no schematization, an infinite water body is assumed with no local boundary near the discharge port. Thus PLUMES has no mechanisms to determine or report near-field benthic impacts.
CORMIX uses a collection of jet-integral, length scale, integral, and passive diffusion approaches to simulate mixing zones. The CORMIX system contains a collection of about 30 regional flow modules to simulate the physics of mixing zones. In application, CORMIX selects one of several hundred possible combinations of these regional flow modules in sequence to construct a simulation model (i.e. flow class) for a complete site-specific mixing zone analysis. Thus in practical application, CORMIX provides a rule-verified interface to several hundred mixing zone mathematical models. The resulting flow processes simulated and corresponding design considerations are extensively supported by program documentation.
PLUMES uses jet-integral, length scale, and passive diffusion approaches. It contains three jet-integral models (UM, UDKHG, PDS) and one length scale model (RSB) for near-field mixing. These models should only be applied to a stable near-field without dynamic attachments. But there are no methods or guidance within PLUMES to assess discharge stability. Furthermore, there are no peer-reviewed methods within PLUMES to simulate unstable (where all jet-integral models do not apply) or attached discharge cases, or to model density currents before passive diffusion.
CORMIX provides a rigorous flow classification to determine discharge stability and assure correct model application. CORMIX uses the techniques of artificial intelligence to enforce data consistency, provide assessment of mixing zone characteristics, and guide in model application. CORMIX contains a rule-base contains over 2000 rules to assess discharge and ambient conditions and to evaluate model selection. These rules are extensively documented by the system and are supported by scientific peer-reviewed literature. The CORMIX rules and mathematical models of mixing are developed from over 200 years of historical knowledge gained from laboratory and field experiments on mixing processes. Simulation model selection with CORMIX occurs only after all data is checked for consistency, flow parameters are calculated, and the flow classification has been determined and thoroughly documented.
PLUMES does not have any documented procedure for model selection. There is absolutely no guidance within PLUMES in regards to what model (Um, UDKHG, RSB) is applicable, or even if the input data given is consistent within internal model assumptions. In fact, the very first question asked within the Visual Plumes interface is "What model do you want to run?"
Astute analysts understand that only after thorough evaluation of discharge and ambient conditions can the correct choice of model be made. The selection of a particular model before one has evidence to support its applicability may be viewed as a risky engineering practice.
CORMIX and PLUMES both use similar jet-integral approaches to simulate near-field mixing zones in a stable environment without dynamic attachments. In these cases, both methods will give similar near-field dilution estimates, well within each other and the scatter of available field and laboratory data. However, the only way to assure that both models can be compared and applied is to:
- Determine that discharge stability is assured.
- Determine that there is no near-field dynamic attachment.
- Determine that information desired is needed only in the near-field, and that density current mixing is not important within the regulatory mixing zone.
In these cases, both CORMIX and PLUMES can be applied. CORMIX will use the jet-integral model CorJet for near-field predictions. In PLUMES, the models Um, UDKHG, or RSB may be applied.
But the only way to ensure correct model application, is to use a methodology that explicitly evaluates A), B), and C) as shown above. Presently, only CORMIX gives the analyst this assurance, delivered by the system documentation and rule base.
In unstable discharge cases, CORMIX uses length scale analytic techniques for near-field predictions. All jet integral models (including CorJet, Um, UDKHG) do not apply for unstable discharges. The issue of discharge stability and CORMIX techniques for modeling unstable discharges are thoroughly documented within CORMIX and in peer-reviewed scientific literature.
PLUMES will provide predictions using jet-integral models (UM or UDKHG) for unstable discharge cases. However there is absolutely no evidence in any scientific peer-reviewed journal to support this approach. Moreover, application of these jet-integral models in unstable cases leads to unreliable results.
CORMIX uses the CorJet jet-integral model for detailed predictions of stable near-field mixing. CorJet can be used for any arbitrary stable density profile. It can simulate variable ambient current speed and direction as a function of depth. It can even simulate the so-called "nascent density" effect. CorJet is fully 3-dimensional for both single port and multiport diffusers. Furthermore, CorJet correctly simulates the following 4 asymptotic flow regimes: a) Pure jet, b) pure plume, c) pure wake, and d) advected line puff.
PLUMES contains two jet-integral models, Um and UDKHG. Um predicts 3-dimensional flows for single port discharges, but is only 2-D for multiport diffusers. Um can not be used in cases with zero ambient velocity. UDKHG predicts 3-dimensional flows for single port and multiport diffuser discharges, but assumes unidirectional ambient flow or zero ambient flow velocity.
In summation, situations where both CORMIX and PLUMES can be applied would typically be deep ocean outfalls where near-field mixing is of interest only, and there is no possibility of dynamic bottom attachments. However, there is no procedure within PLUMES to test for the possibility of bottom attached flows. In addition, if mixing zone information after the near-field is desired, then the possibility of a density current in the far-field must be considered. Again, there is no procedure within PLUMES to model density current mixing.
Only CORMIX contains rule-based documentation of procedures to test for bottom attached flows and density current mixing.
Q.20. Is CORMIX applicable for modeling oil spills in rivers and streams?
A. YES, CORMIX can be used to model river mixing of oil emulsions. However, CORMIX does not simulate mixing of multiphasic
liquids consisting of two or more immiscible liquid phases.
Please download the free evaluation version of CORMIX, CORMIX v9.0E, from the downloads page
at MixZon Inc to determine if CORMIX is applicable to your case/study.
Q.21. Is CORMIX applicable to "submerged but elevated discharges"?
A. YES, CORMIX can be used to model "submerged but elevated discharges" where the port is NOT Deeply Submerged (H0 <= 1/3HD) nor is it Near Surface (H0 >= 2/3HD). i.e.
the port elevation (H0) is such that 1/3HD < H0 < 2/3HD.
However, CORMIX1 and CORMIX2 are applicable to either a Deeply Submerged Discharge where, (H0 <= 1/3HD) or
a Slightly Submerged, Near Surface Discharge (H0 >= 2/3HD) as shown in the figure.
When we try to enter a "submerged but elevated discharge" in CORMIX, we get a validation error indicating that the input data do not meet the CORMIX1/2 applicability criterion related to H0 and HD.
This model applicability criterion has been mistakenly construed as CORMIX not being applicable to model "submerged but elevated discharges".
Special advice on this limitation and modeling approach to work around this criterion is available in Section 7.4 of the CORMIX1 Technical Report (Doneker and Jirka, 1990)
and Section 5.3 of the CORMIX2 Technical Report (Akar and Jirka, 1991)
Basically, the above applicability criterion of port height (H0) and the depth at discharge (HD) in CORMIX is needed to assure a valid test for discharge stability
in the flow classification scheme.
If discharge is well submerged but 1/3HD < H0 < 2/3HD (i.e. a "submerged but elevated discharge"); CORMIX can still be used in the following iterative fashion
by the process of proper analysis and schematization
For a strongly, positively buoyant jet that tends to quickly rise to the surface, assume that the bottom lies higher so that the port elevation (H0)
relative to the "reduced depth" meets the H0 <= 1/3 HD criterion. The CORMIX predictions with this new schematization will be valid if they indicate
a stable flow
class for this "reduced depth" condition without any unstable recirculation
or bottom attachments
If the model predicts an attached flow class
, try to re-schematize the bottom, while meeting the above criterion.
For a strongly negatively buoyant jet that tends to rapidly sink towards the bottom, assume the water surface is "sufficiently higher" so that the port elevation (H0)
meets the H0 <= 1/3 HD criterion. Evaluate the CORMIX predictions to check for stable discharge
that would not interact with the actual water surface
If the model predicts surface interaction with the schematized water surface
, try to re-schematize the water surface, while meeting the above criterion.
If unstable discharge
conditions are expected or predicted (this would be indicated if
the above assumptions are violated) then the actual port
elevation (H0) is frequently of secondary importance, while water depth (HD) is the primary parameter.
In this case, a reduced port elevation meeting the H0 <= 1/3HD limits can be specified for modeling purposes.
Clearly, the experienced user will proceed with careful, iterative
evaluation of such complex, and perhaps unusual, "submerged but elevated discharge" cases.
Q.22. The water quality of the effluent is better
than that of the river. The discharge concentration input to CORMIX is the concentration above the ambient level.
Is there a way to use CORMIX in this situation?
A. YES, CORMIX can be used to such scenarios.
This is the rare case where the effluent discharge would "improve" ambient water quality! In such scenarios:
Enter discharge concentration (C0) as the absolute value of the concentration deficit below ambient background.
So if ambient concentration CA = 100 mg/l and effluent discharge concentration C0 = 10 mg/l; the concentration deficit would be 90 mg/l and this is the concentration
entered into the CORMIX UI. Interpret the CORMIX results as the deficit below ambient background.
Q.23. How do I convert CORMIX precdicted plume centerline dilutions (Sc) to flux averaged (bulk) dilutions (Sf) and vice versa?
Please use the following conversions to convert between CORMIX predicted flux-averaged and plume centerline dilutions:
Sc = Minimum centerline dilution, assumes a Gaussian profile
Sf = Bulk dilution (flux averaged), generally assumes a top-hat profile
Sf = Sc * 1.7 for point source/surface discharges;
Sf = Sc * 1.3 for line source discharges;
You can also refer to CORMIX User Manual, Section 5.2.2, page 74 for this information.