In terms of terrain following coordinates (x, y, σ ), these are the equations for the nonhydrostatic model's basic variables excluding moisture.
![]() |
(8.1) |
The above equations are finite differenced on the B grid mentioned in Chapter 1. Second-order centered finite differences represent the gradients except for the precipitation fall term which uses a first-order upstream scheme for positive definiteness. Often horizontal averaging is required to determine the gradient in the correct position. Vertical interpolations allow for the variable vertical grid size. More details are in Grell et al. (1994), NCAR Tech. Note 398.
A second-order leapfrog time-step scheme is used for these equations, but some terms are handled using a time-splitting scheme. Note that Equations 8.1-8.4 contain extra terms on the left of the equals sign. This designates so-called fast terms that are responsible for sound waves that have to be calculated on a shorter time step. In the leapfrog scheme, the tendencies at time n are used to step the variables from time n-1 to n+1. This is used for most of the right-hand terms (advection, coriolis, buoyancy). A forward step is used for diffusion and microphysics where the tendencies are calculated at time n-1 and used to step the variables from n-1 to n+1. Some radiation and cumulus options use a constant tendency over periods of many model timesteps and are only recalculated every 30 minutes or so.
However for certain terms the model timestep is too long for stability and these have to be predicted with a shorter step. Examples of this are the sound-wave terms shown in the equations, the precipitation fall term and the PBL tendencies which also may be split in certain situations. When the timestep is split, certain variables and tendencies are updated more frequently. For sound waves u, v, w and p′ all need to be updated each short step using the tendency terms on the left of 8.1-8.4 while the terms on the right are kept fixed. For sound waves there are usually four of these steps between n-1 and n+1, after which u, v, w and p′ are up to date.
Certain processes are treated implicitly for numerical stability. An implicit time scheme is one in which the tendencies of variables depend not only on the present and past values, but also the future values. These schemes are often numerically stable for all timesteps, but usually require a matrix inversion to implement them. In MM5 implicit schemes are used only in 1-d column calculations for vertical sound waves and vertical diffusion, so that the matrix is tridiagonal making it straightforward to solve directly.
Based on moisture convergence, mostly applicable to larger grid sizes > 30 km. Tends to produce much convective rainfall, less resolved-scale precip, specified heating profile, moistening dependent upon relative humidity.
Based on rate of destabilization or quasi-equilibrium, simple single-cloud scheme with updraft and downdraft fluxes and compensating motion determining heating/moistening profile. Useful for smaller grid sizes 10-30 km, tends to allow a balance between resolved scale rainfall and convective rainfall. Shear effects on precipitation efficiency are considered. See Grell et al. (1994).
Multi-cloud scheme that is otherwise likeGrell scheme. Based on a cloud population, allowing for entrainment into updrafts and allows for downdrafts. Suitable for larger scales, > 30 km grid sizes, possibly expensive compared to other schemes. Shear effects on precipitation efficiency are considered. Also see Grell et al. (1994).
Based on relaxation to a profile due to updraft, downdraft and subsidence region properties. The convective mass flux removes 50% of available buoyant energy in the relaxation time. Fixed entrainment rate. Suitable for 20-30 km scales due to single-cloud assumption and local subsidence. See Fritsch and Chappell (1980) for details. This scheme predicts both updraft and downdraft properties and also detrains cloud and precipitation. Shear effects on precipitation efficiency are also considered.
Similar to Fritsch-Chappell, but using a sophisticated cloud-mixing scheme to determine entrainment/detrainment, and removing all available buoyant energy in the relaxation time. See Kain and Fritsch (1993) for details. This scheme predicts both updraft and downdraft properties and also detrains cloud and precipitation. Shear effects on precipitation efficiency are also considered.
Based on relaxation adjustment to a reference post-convective thermodynamic profile over a given period. This scheme is suitable for > 30 km, but no explicit downdraft, so may not be suitable for severe convection. See Betts (1986), Betts and Miller (1986), Betts and Miller (1993) and Janjic (1994) for details.
Suitable for coarse vertical resolution in boundary layer, e.g. > 250 m vertical grid sizes. Two stability regimes.
Suitable for high resolution PBL, e.g. 5 layers in lowest km, surface layer < 100 m thick. Four stability regimes, including free convective mixed layer. Uses split time steps for stability.
Suitable for coarse and high-resolution PBL. Predicts turbulent kinetic energy for use in vertical mixing, based on Mellor-Yamada formulas. See Burk and Thompson (1989) for details. This is the only PBL option that does not call the SLAB scheme, as it has its own force-restore ground temperature prediction
This is the Mellor-Yamada scheme as used in the Eta model, Janjic (1990, MWR) and Janjic (1994, MWR). It predicts TKE and has local vertical mixing. The scheme calls the SLAB routine or the LSM for surface temperature and has to use ISOIL=1 or 2 (not 0) because of its long time step. Its cost is between the MRFPBL and HIRPBL schemes. Before SLAB or the LSM the scheme calculates exchange coefficients using similarity theory, and after SLAB/LSM it calculates vertical fluxes with an implicit diffusion scheme.
or Hong-Pan PBL, suitable for high-resolution in PBL (as for Blackadar scheme). Efficient scheme based on Troen-Mahrt representation of countergradient term and K profile in the well mixed PBL, as implemented in the NCEP MRF model. See Hong and Pan (1996) for details. This scheme either calls the SLAB routine or the LSM and should have ISOIL=1 or 2. Vertical diffusion uses an implicit scheme to allow longer time steps.
This is also based on Mellor-Yamada TKE prediction. It is distinguished from others by the use of liquid-water potential temperature as a conserved variable, allowing the PBL to operate more accurately in saturated conditions (Ballard et al., 1991; Shafran et al. 2000). Its cost is comparable with the Blackadar scheme's because it uses split time steps.
This scheme only works with ISOIL=3 (see later). The PBL scheme is a derivative of the Blackadar PBL scheme called the Asymmetric Convective Model (Pleim and Chang, 1992, Atm. Env.), using a variation on Blackadar's non-local vertical mixing.
IBLTYP = 2, 5 and 7 have this option. It allows diffusion in cloudy air to mix toward a moist adiabat by basing its mixing on moist stability instead of the dry stability. From Version 3.5 it can mix cloudy air upwards into clear air in addition to just internally in cloudy layers.
IBLTYP =2 and 5 have the option of using a different roughness length for heat/moisture than that used for momentum. This is the thermal roughness length. IZ0TOPT=0 is the default (old) scheme, IZ0TOPT=1 is the Garratt formulation, and IZ0TOPT=2 is the Zilitinkevich formulation (used by the Eta model). Changing the thermal roughness length affects the partitioning of sensible and latent heat fluxes, and affects the total flux over water.
ITPDIF=0,1 are two methods of doing horizontal temperature diffusion. ITPDIF=1 (default) is to only horizontally diffuse the perturbation from the base-state temperature. This partially offsets the effect of the coordinate slope over topography which is needed due to the fact that the diffusion is along model levels. ITPDIF=0 diffuses the full temperature (like all other fields) instead. In Version 3.7, a new option is ITPDIF=2. This applies to temperature, moisture and cloud water, and is a purely horizontal diffusion accounting more accurately for coordinate slope and valley walls (Zangl, 2002 MWR).
Nonconvective precipitation. Large scale saturation removed and rained out immediately. No rain evaporation or explicit cloud prediction.
Cloud and rain water fields predicted explicitly with microphysical processes. No ice phase processes.
Adds ice phase processes to above without adding memory. No supercooled water and immediate melting of snow below freezing level. This also can be run with a look-up table (MPHYSTBL=1) version for efficiency.
Adds supercooled water to above and allows for slow melting of snow. Memory added for cloud ice and snow. No graupel or riming processes. See Reisner et al. (1998) for details. Since version 3.7 an optimized version of this code is also available (MPHYSTBL=2). This also can be run with a look-up table (MPHYSTBL=1) version for efficiency.
Includes additional equation for prediction of graupel. Suitable for cloud-resolving models. See Lin et al. (JCAM, 1983), Tao et al. (1989, 1993) for details. Scheme was updated for Version 3.5 to include graupel or hail properties.
Based on mixed-phase scheme but adding graupel and ice number concentration prediction equations. Also suitable for cloud-resolving models. Scheme was updated significantly between Version 3.4 and 3.5, and again between 3.5 and 3.6. 3.6 also has a capability for calling the scheme less frequently than every time-step, but this is not standard and requires code editing to implement (Web pages will show the procedure).
No mean tendency applied to atmospheric temperature, unrealistic in long-term simulations.
Atmospheric cooling rate depends just on temperature. No cloud interaction or diurnal cycle.
This is used with the above two options. It provides diurnally varying shortwave and longwave flux at the surface for use in the ground energy budget. These fluxes are calculated based on atmospheric column-integrated water vapor and low/middle/high cloud fraction estimated from relative humidity.
Sophisticated enough to account for longwave and shortwave interactions with explicit cloud and clear-air. As well as atmospheric temperature tendencies, this provides surface radiation fluxes. May be expensive but little memory requirement. In Version 3.7 namelist switches LEVSLP and OROSHAW can be used with this option. LEVSLP enables slope effects on solar radiation, and OROSHAW allows shadowing effects on nearby grid-cells.
Multiple spectral bands in shortwave and longwave, but cloud treated based on either resolved clouds (ICLOUD=1) or RH-derived cloud fraction (ICLOUD=2). Suitable for larger grid scales, and probably more accurate for long time integrations. Also provides radiative fluxes at surface. See Hack et al. (1993) for details. As with other radiation schemes ICLOUD=0 can be used to remove cloud effects on the radiation. Up until Version 3.5, this scheme was only able to interact with RH-derived clouds.
This is combined with the cloud-radiation shortwave scheme when IFRAD=4 is chosen. This longwave scheme is a new highly accurate and efficient method provided by AER Inc. (Mlawer et al. 1997). It is the Rapid Radiative Transfer Model and uses a correlated-k model to represent the effects of the detailed absorption spectrum taking into account water vapor, carbon dioxide and ozone. It is implemented in MM5 to also interact with the model cloud and precipitation fields in a similar way to IFRAD=2.
Single slab and fixed-temperature substrate. Slab temperature based on energy budget and depth assumed to represent depth of diurnal temperature variation (~ 10-20 cm).
Temperature predicted in 1,2,4,8,16 cm layers (approx.) with fixed substrate below using vertical diffusion equation. Thermal inertia same as force/restore scheme, but vertically resolves diurnal temperature variation allowing for more rapid response of surface temperature. See Dudhia (1996 MM5 workshop abstracts) for details. Cannot be used with Burk-Thompson PBL (IBLTYP=3).
[Note: this was the OSU LSM until MM5 Version 3.5, and from 3.6 it is updated and renamed as the Noah LSM, a unified model between NCAR, NCEP and AFWA].
The land-surface model is capable of predicting soil moisture and temperature in four layers (10, 30, 60 and 100 cm thick), as well as canopy moisture and water-equivalent snow depth. It also outputs surface and underground run-off accumulations. The LSM makes use of vegetation and soil type in handling evapotranspiration, and has effects such as soil conductivity and gravitational flux of moisture. In MM5 it may be called instead of the SLAB model in the MRF and Eta PBL schemes, taking surface-layer exchange coefficients as input along with radiative forcing, and precipitation rate, and outputting the surface fluxes for the PBL scheme. This scheme uses a diagnostic equation to obtain a skin temperature, and the exchange coefficients have to allow for this by use of a suitable molecular diffusivity layer to act as a resistance to heat transfer. See Chen and Dudhia (2001). It also handles sea-ice surfaces. All the aforementioned processes were in the OSU LSM. The Noah LSM has some modifications, and additional processes to better handle snow cover, predict physical snow depth, and frozen soil effects. In addition to soil moisture, soil water is a separate 4-layer variable, and soil moisture is taken to be the total of soil water and soil ice. Physical snow height is also diagnosed and output. The Noah LSM can also optionally use satellite-derived climatological albedo, supplied by REGRID, instead of relating albedo to land-use type. See Appendix D for practical guidance on setting up the modeling system to use the LSM.
This is coupled to the Pleim-Xiu PBL (IBLTYP=7). It is a combined land-surface and PBL model. It represents soil moisture and temperature in two layers (surface layer at 1 cm, and root zone at 1 m) as well as canopy moisture. It handles soil surface, canopy and evapotranspiration moisture fluxes. It also makes use of percentage land-use and soil data from Terrain to aggregatesoil and vegetation properties, rather than using a single dominant type. Soil moisture can be initialized from land-use moisture availability, a soil moisture input grid (as with the Noah LSM), or via nudging using model minus observed surface temperature error to correct soil moisture. The model also has optional plant-growth and leaf-out algorithms making it suitable for long-term simulations. See Xiu and Pleim (2000).
This can be run with ISOIL=0 or 1. It keeps a budget of soil moisture allowing moisture availability to vary with time, particularly in response to rainfall and evaporation rates. The soil moisture can be initialized from land-use type and season (LANDUSE.TBL) as before (IMOIAV=1), or a 10-cm soil moisture input as with the Noah LSM (IMOIAV=2).
When the LSM is not used this switch determines how snow cover is handled. IFSNOW=0 means snow cover is ignored. IFSNOW=1 uses the input snow-cover (0/1) flag to determine the land-surface properties such as albedo and soil moisture. These stay fixed in the simulation. Since Version 3.5 there is an option (IFSNOW=2) to predict snow cover using an input water-equivalent snow depth. It updates water-equivalent snow depth according to a heat and moisture budget in the SLAB routine, and accumulates snow from the microphysical schemes (currently IMPHYS=4,5, or 7). In Version 3.7 this can be used with IMOIAV=1 or 2, the bucket soil moisture.
The so-called Polar Mods were developed by the Byrd Polar Research Center at Ohio State Univerisity to better handle Antarctic conditions for forecasting purposes. IPOLAR=1 is a compile-time option, therefore it is in the configure.user file. The use of the Polar Mods has several effects, and should be applied only with ISOIL=1. The main changes are (i) to increase the number of prognostic soil layers from 5 to 7, and (ii) to allow for sea-ice fraction effects on the heat and moisture fluxes and mean ground temperature. Sea-ice fraction can either be diagnosed from sea-surface temperature (IEXSI=1), or read in from a dataset (IEXSI=2). It is also recommended that the Eta PBL is used with this option, as that has been modified to account for ice-surface fluxes. The soil model is modified to account for snow and ice properties for heat conduction. The Polar Mods also slightly modify the Simple Ice and Reisner 1 microphysics schemes to use the Meyers formula for ice number concentration. In release 3.7 the MRF PBL also has modifications to work with this option.
This will not allow time variation at lateral boundaries. Not recommended for real-data applications.
Outer two rows and columns have specified values of all predicted fields. Recommended for nests where time-dependent values are supplied by the parent domain. Not recommended for coarse mesh where only one outer row and column would be specified.
Outer row and column is specified by time-dependent value, next four points are relaxed towards the boundary values with a relaxation constant that decreases linearly away from the boundary.
Recommended for coarse mesh where boundary values are supplied by the BDYOUT_DOMAIN1 file. Fields without boundary values (such as some moisture variables) are specified zero on inflow and zero-gradient on outflow boundaries.
The LOWBDY_DOMAINx file provides sea-surface temperature, substrate temperature, and optionally snow cover and sea-ice. The switch ISSTVAR allows multiple times in this file (created by INTERPF) to be read in as the model runs, which is the method of updating these fields in long-term simulations.
Rigid lid with no vertical motion at the model top. This may be preferable for very coarse mesh simulations (50 km or more grids).
Top vertical motion calculated to reduce reflection of energy from the model top preventing some spurious noise or energy build-up over topography. This is recommended for grid-lengths below 50 km. It works better for hydrostatic gravity wave scales, rather than inertial or nonhydrostatic
When a single-domain or multiple-domain run completes, its domain output can be put into NESTDOWN to create an input file with higher resolution (any integer ratio in dx) and new lateral and lower boundary files. See NESTDOWN chapter. NESTDOWN allows the addition of higher resolution elevation and land-use data. This is known as a one-way nest because it is forced purely by the coarse mesh boundaries, and obviously has no feedback on the coarse-mesh run.
When INTERPB becomes available, it will be possible to put model output on pressure levels and reanalyze with observations as well as choosing different vertical levels for the nest by using INTERPF and NESTDOWN.
Multiple domains can be run in MM5 at the same time. Up to nine domains on four levels of nest are allowed with each nest level one third of its parent domain's grid-length. Each domain takes information from its parent domain every timestep, and runs three timesteps for each parent step before feeding back information to the parent domain on the coincident interior points. Figure 1.3 illustrates the staggering with the 3:1 ratio. The feedback distinguishes two-way nesting from one-way nesting, and allows nests to affect the coarse mesh solution, usually leading to better behavior at outflow boundaries. However there is significant overhead cost associated with the boundary interpolation and feedback at every timestep, particularly with distributed-memory machines.
IOVERW is the overwrite switch that determines whether a nested input file is used to replace coarse mesh information or whether the coarse domain is just interpolated to start the nest.
No nested input file is required. All the information including topography is interpolated from the coarse mesh to start the nest. This is suitable for nests that start later than the coarse mesh or for
moving and overlapping nests. This could be used in situations where improved topography is not essential such as over water or smooth terrain.
This requires an MMINPUT file to be read in for the nest. The input file contains all the meteorological and terrain fields at a higher resolution, and so may provide a more accurate initial analysis. This should only be applied when the coarse mesh and nest both start at the same time, because an analysis at a later time is unlikely to match the coarse-mesh boundary conditions.
This only requires the TERRAIN file for the nest. The meteorological fields are interpolated from the coarse mesh, but the terrain and land-use are replaced with the higher resolution fields from
TERRAIN. A vertical adjustment is carried out to put the interpolated fields on terrain-following levels consistent with the new nest terrain. This has the benefit of allowing fine-topography nests to start later than the coarse mesh.
These options determine how a nest feeds back its interior information to its parent domain.
Feedback is turned off, similar to one-way nests except boundary conditions are updated by parent domain every timestep. Not recommended except for tests.
Feedback uses a weighted average of nest points onto coarse mesh point, not just coincident value. Not the primary recommended choice because terrain elevation is not consistent with this
Coincident point is fed back. Not recommended except for tests.
Coincident point is fed back, and coarse mesh fields are then filtered using smoother-desmoother to remove two-grid-length noise. Recommended option.
Coincident point is fed back, and coarse mesh fields are then smoothed with a 1-2-1 smoother that
removes two-grid-length noise, and damps other short wavelengths strongly. Could be used if nest region appears excessively noisy when viewing coarse mesh output.
FDDA is a method of running a full-physics model while incorporating observations. Thus the model equations assure a dynamical consistency while the observations keep the model close to the true conditions and make up for errors and gaps in the initial analysis and deficiencies in model physics. The MM5 model uses the Newtonian-relaxation or nudging technique.
There are two distinct nudging methods. The model can use these individually or combined.
Newtonian relaxation terms are added to the prognostic equations for wind, temperature, and water vapor. These terms relax the model value towards a given analysis. The technique is implemented by obtaining analyses on the model grid over the data assimilation period and these are fed to the model in its standard input format. The model linearly interpolates the analyses in time to determine the value towards which the model relaxes its solution. The user defines the time scale of the relaxation constants for each variable.
In situations where analysis-nudging is not practical, such as at high resolution or with asynoptic data, obs-nudging is a useful alternative. This method again uses relaxation terms, but the method is similar to objective analysis techniques where the relaxation term is based on the model error at observational stations. The relaxation is such as to reduce this error. Each observation has a radius of influence, a time window and a relaxation time scale to determine where, when and how much it affects the model solution. Typical model grid points may be within the radius of influence of several observations and their contributions are weighted according to distance. To implement this method an observation input file is required that chronologically lists the 3D positions and values of each observation in a specific format.
Four-Dimensional Data Assimilation has three basic uses -
Note: For scientific case studies and forecasts the model should have no data assimilation terms as these represent non-physical terms in the equations.
When doing three-dimensional analysis nudging, no additional input data files are required. MM5 can use the same MMINPUT file or a copy of MMINPUT to MMINPUT2 file. If surface FDDA is desired, a user must set F4D = TRUE in the namelist of RAWINS job deck, which enables the job to create (typically) a 3-hourly surface analysis file to be used in MM5. FDDA now works with all the boundary layer options except 0, 1, and 3. It needs information on the boundary-layer top from these schemes.
There is no standard software available to create input data file for observational nudging. The input file is a binary file containing 9 real numbers per record and in order of increasing time. The READ statement in the model is the following:
READ (NVOL,END=111) TIMEOB,RIO,RJO,RKO,(VAROBS(IVAR),IVAR=1,5)
where NVOL is the input fortran unit number, and
TIMEOB: Julian date in dddhh. Example: 16623.5 - Julian day 166 and hour 2330 UTC
RIO: y-location - I dot-point location on coarse mesh (may be a fraction of a grid)
RJO: x-location - J dot-point location on coarse mesh (may be a fraction of a grid)
RKO: z-location - K half-σ level (must be on half σ levels)
IVAR(1): u wind - in m/sec rotated to model grid
IVAR(2): v wind - in m/sec rotated to model grid
IVAR(3): temperature - in Kelvin
IVAR(4): water vapor mixing ratio - in kg/kg
IVAR(5): Pstar - in cb (only used in hydrostatic model)
A user may include more information at the end of a record which are not read by the model but can be used to identify the station and data type. The no-data value is 99999.. If running the model in nonhydrostatic mode, 99999. can be used to fill up the Pstar spot.
Get the source code. The current MM5 release resides on NCAR's anonymous ftp site, ftp.ucar.edu:mesouser/MM5V3/MM5.TAR.gz. You may download MM5.TAR.gz to your working directory from the web page, ftp://ftp.ucar.edu/mesouser/MM5V3. Or you can copy it from ~mesouser/MM5V3/MM5.TAR.gz on NCAR's SCD machines.
There are 2 steps to compiling and running the MM5 system:
(see 8.8.3 for running batch job on NCAR's IBM.)
The user chooses those compilation options appropriate to his/her system by editing the "configure.user" file. This file is included in every Makefile used in compiling the model so it contains many rules, but the user need only concern with 3 things:
If you wish to compile and run the model on a distributed-memory machine (such as IBM SP2, Cray T3E, SGI Origin 2000 with MPI, and Linux clusters),
More information is provided for this topic in README.MPP in the MM5 tar file, Appendix D in this document, and on Web page: http://www2.mmm.ucar.edu/mm5/mpp.html
Need to set at least these namelist variables in mm5.deck:
Note: The mmlif (namelist file) for running MM5 is now generated from both your configure.user file (section 6 of the configure.user) and mm5.deck.
This removes all generated files and returns the code to its original state. Use it before doing recompilation.
This creates *.f files from *.F files and places them in directory pick/. Useful for looking at code in a single directory. All files related to options selected in configure.user file will be created.
Files from INTERPF program for a basic run:
Files from MM5 program, if it is a restart run:
Files from RAWINS/LITTLE_R, if running gridded 4DDA option with surface analysis
Files generated by user, if running observational nudging option
mmlif: a namelists file containing user-specified options; created when mm5.deck is executed.
LANDUSE.TBL: user-modifiable landuse characteristics (in ASCII), provided.
RRTM_DATA: RRTM radiation scheme data file, provided.
BUCKET.TBL: user-modifiable constants used in bucket soil moisture model, provided.
VEGPARM.TBL: user-modifiable constants used in Noah LSM, provided.
SOILPARM.TBL: user-modifiable constants used in Noah LSM, provided.
GENPARM.TBL: user-modifiable constants used in Noah LSM, provided.
Note that the workstation mm5.deck expects all input files (named as above) to be present in the Run/ directory. See the mm5.deck for details.
A number of files are written out during MM5 integration. These are
Output from each domain will be written to different files. For example, domain 1's history file is written to MMOUT_DOMAIN1, and its restart file to SAVE_DOMAIN1. Each output file contains data for all output times for that domain. On NCAR's IBMs, we recommend that one uses BUFFRQ to limit output file sizes not exceeding 6,000 Mb (which is the file size limit for MSS).
For each time period the model history output includes:
3D forecast fields dimensioned by (IX, JX, KX or KX+1) for that domain include (note that the variables are NO LONGER coupled in Version 3):
1 |
U: U-wind (m/s) |
dot |
2 |
V: V-wind (m/s |
dot |
3 |
T: Temperature (K) |
cross |
4 |
Q: Water vapor mixing ratio (kg/kg) (if IMPHYS .ge. 2) |
cross |
5 |
CLW: Cloud water mixing ratio (kg/kg) (if IMPHYS .ge. 3) |
cross |
6 |
RNW: Rain water mixing ratio (kg/kg) (if IMPHYS .ge. 3) |
cross |
7 |
ICE: Ice cloud mixing ratio (kg/kg) (if IMPHYS .ge. 5) |
cross |
8 |
SNOW: Snow mixing ratio (kg/kg) (if IMPHYS .ge. 5) |
cross |
9 |
GRAUPEL: Graupel (kg/kg) (if IMPHYS .ge. 6) |
cross |
10 |
NCI: Number concentration of ice (if IMPHYS = 7) |
cross |
11 |
TKE: Turbulent k.e. (J/kg) (if IBLTYP = 3,4,6) |
cross |
12 |
RAD TEND: Atmospheric radiation tendency (K/day)(if FRAD .ge. 2) |
cross |
13 |
W: Vertical velocity (m/s) (on full s -levels) |
cross |
14 |
PP: Perturbation pressure (Pa) |
cross |
2D forecast fields dimensioned
(IX, JX) include:
1 |
PSTARCRS: Pstar (mb) |
cross |
2 |
GROUND T: Ground temperature (K) |
cross |
3 |
RAIN CON: Accum. convective rainfall (cm) |
cross |
4 |
RAIN NON: Accum. nonconv. rainfall (cm) |
cross |
5 |
PBL HGT: PBL height (m) |
cross |
6 |
REGIME: PBL regime (catagory, 1-4) |
cross |
7 |
SHFLUX: Surface sensible heat flux (W/m2) |
cross |
8 |
LHFLUX: Surface latent heat flux (W/m2) |
cross |
9 |
UST: Frictional velocity (m/s) |
cross |
10 |
SWDOWN: Surface downward shortwave radiation (W/m2) |
cross |
11 |
LWDOWN: Surface downward longwave radiation (W/m2) |
cross |
12 |
MAVAIL: Surface moisture availability (if IMOIAV=1,2) |
cross |
13 |
SOIL T x: Soil temperature in a few layers (K) (if ISOIL=1,2) |
cross |
14 |
SOIL M x: Soil moisture in a few layers (m3/m3) (if ISOIL=2) |
cross |
15 |
SOIL W x: Soil water in a few layers (m3/m3) (if ISOIL=2) |
cross |
16 |
SFCRNOFF: Surface runoff (mm) (if ISOIL=2) |
cross |
17 |
UGDRNOFF: Underground runoff (mm) (if ISOIL=2) |
cross |
18 |
SNOWCOVR: Snow cover (variable if ISOIL=2) |
cross |
19 |
SNOWH: physical snow height (m) (if ISOIL=2, or IFSNOW=2) |
cross |
20 |
WEASD: Water-equivalent snow depth (mm) (if ISOIL=2, or IFSNOW=2) |
cross |
21 |
CANOPYM: Canopy moisture (m) (if ISOIL=2) |
cross |
22 |
GRNFLX: ground head flux (W/m2) (if ISOIL=2, 3) |
cross |
23 |
ALB: albedo (fraction) (if ISOIL=2) |
cross |
24 |
ALBSNOMX: maximum snow albedo (%) (if ISOIL=2, and RDMAXALB=T) |
cross |
25 |
MONALBnn: monthly albedo (%) (if ISOIL=2, or RDBRDALB=T) |
cross |
26 |
ALBEDO: background albedo (%) (if IFSOIL=2, RDBRDALB=T) |
cross |
27 |
VEGFRC: Vegetation coverage (if ISOIL = 2) |
cross |
28 |
SWOUT: top outgoing shortwave radiation (if FRAD>=2) |
cross |
29 |
LWOUT: top outgoing longwave radiation (if FRAD>=2) |
cross |
30 |
T2: 2 m temperature (K) (if IBLTYP=2, 4, 5) |
cross |
31 |
Q2: 2 m mixing ratio (kg/kg) (if IBLTYP=2, 4, 5) |
cross |
32 |
U10: 10 m u component of wind (m/sec) (if IBLTYP=2,4,5) |
cross |
33 |
V10: 10 m v component of wind (m/sec) (if IBLTYP=2,4,5) |
cross |
34 |
M-O LENG: Monin-Obukov length (m) (if ISOIL=3) |
cross |
35 |
NET RAD: surface net radiation (W/m2) (if ISOIL=3) |
cross |
36 |
ALBEDO: surface albedo (fraction) (if ISOIL=3) |
cross |
37 |
RA: aerodynamic resistance (s/m) (if ISOIL=3) |
cross |
38 |
RS: surface resistance (s/m) (if ISOIL=3) |
cross |
39 |
LAI: leaf area index (area/area) (if ISOIL=3) |
cross |
40 |
VEGFRC: vegetation fraction (fraction) (if ISOIL=3) |
cross |
41 |
ZNT: roughness length (m) (if ISOIL=3) |
cross |
42 |
ISLTYP: soil texture type (if ISOIL=3) |
cross |
43 |
SUMFB: mass flux updraft (if ICUPA=8) |
cross |
44 |
SPSRC: source layer updraft (if ICUPA=8) |
cross |
45 |
SEAICEFR: seaice fraction (if IPOLAR=1) |
cross |
46 |
TGSI: seaice temperature (if IPOLAR=1) |
cross |
2D constant fields dimensioned (IX, JX) include:
47 |
TERRAIN: Terrain elevation (m) |
cross |
48 |
MAPFACCR: Map scale factor |
cross |
49 |
MAPFACDT: Map scale factor |
dot |
50 |
CORIOLIS: Coriolis parameter (/s) |
cross |
51 |
RES TEMP: Substrate temperature (K) |
cross |
52 |
LATITCRS: Latitude (deg) |
cross |
53 |
LONGICRS: Longitude (deg) |
cross |
54 |
LANDUSE: Land-use category |
cross |
55 |
SNOWCOVR: Snow cover (if ISOIL < 2) |
cross |
56 |
TSEASFC: Sea surface temperature (K) |
cross |
57 |
SEAICE: Seaice (dimensionless) (if ISOIL=2) |
cross |
58 |
SIGMAH: Model half-sigma levels |
|
59 |
ALBD: Surface albedo from LANDUSE.TBL |
|
60 |
SLMO: Surface moisture availability from LANDUSE.TBL |
|
61 |
SFEM: Surface emissivity from LANDUSE.TBL |
|
62 |
SFZ0: Surface roughness from LANDUSE.TBL |
|
63 |
THERIN: Surface thermal inertia from LANDUSE.TBL |
|
64 |
SFHC: Soil heat capacity from LANDUSE.TBL |
|
65 |
SCFX: Snow cover effect from LANDUSE.TBL |
If one sets IFTSOUT = .TRUE., and defines TSLAT and TSLON for the time-series locations, one will obtain time-series output in fort.26 for domain 1, fort.27 for domain 2 and so on for serial runs (for MPI runs, the time series is (unfortunately) scattered in various rsl.out.* files. The time-series output contains the following data:
xtime, time-step, its, jts, t-sfc, q-sfc, u-sfc, v-sfc,
pstar, pp-sfc, rainc, rainnc, clw, glw, hfx, qfx, gsw, t-ground
xtime : model time (unit minutes)
time-step : the nth time series
its, jts : I, J locations in model grid for time-series points
t-sfc : 2-m or lowest σ level temperature (unit K)
q-sfc : 2-m or lowest σ level mixing ratio (unit kg/kg)
u-sfc, v-sfc : the 10-m or lowest-σ level winds (unit m s-1), rotated to earth coordinates
pstar : reference p* (unit cb, or 10*hPa)
pp-sfc : perturbation pressure at the lowest-σ level (unit Pa)
rainc, rainnc : accumulative convective and non-convective surface precipitation (unit cm)
clw : column integrated cloud liquid/ice (unit mm)
glw, gsw : surface downward long-wave and shortwave radiation (unit W m-2)
hfx, qfx : surface sensible and latent heat (* latent heat of vaporization) fluxes (unit W m-2)
t-ground : ground or skin temperature (if ISOIL = 2) temperature (unit K).
MM5 accesses most files by referring to the file names. Fortan unit numbers associated with the files are assigned as follows:
Table 8.1 File names, fortran unit numbers, and their description for MM5.
Initial condition files created by program INTERPF (or NESTDOWN); |
||
Surface analysis nudging files created by program LITTLE_R/RAWINS |
||
The `configure.user' is the first file one needs to edit (if one is running Cray batch job, one would need to edit the mm5.deck only and these variables appear inside the deck). Except for the first variable, the rest are used for setting up model's memory - these variables are referred to as pre-compilation variables. Sections 1, 4 and make rules will be explained in Chapter 9.
RUNTIME_SYSTEM |
computer system to run model on. |
FDDAGD |
=1, for 4DDA grid analysis nudging; =0, no 4DDA. |
FDDAOB |
=1, for 4DDA observation nudging; =0, no obs 4DDA. |
MAXNES |
maximum number of domains in simulation. Note though, there are only 4 default nest levels (i.e. 1 coarse domain and 3 nests) |
MIX,MJX,MKX |
maximum number of grid points in I, J, and K. |
IMPHYS |
options for explicit schemes: |
MPHYSTBL |
=0, not using look-up table version; |
ICUPA |
options for cumulus parameterization schemes: =1, none; =2, Anthes-Kuo; =3, Grell; =4, Arakawa-Schubert; =5, Fritsch-Chappell; =6, Kain-Fritsch; =7, Betts-Miller; =8, Kain-Fritsch 2 (with shallow convection). |
IBLTYP |
options for planetary boundary
layer schemes: |
FRAD |
options for atmospheric radiation
schemes: |
IPOLAR |
=0, none; |
ISOIL |
=1, use the multi-layer soil model
(require IBLTYP=2, 4, 5, 6); |
ISHALLO |
=1, use shallow convective
scheme; |
ExpName |
experiment name used in setting MSS pathname for output. |
InName |
input MSS pathname. |
RetPd |
mass store retention period (days). |
compile |
=yes, compile the mm5 code; |
execute |
=yes, execute the model; |
UseMySource |
=yes, use your own source code;
|
CaseName |
MSS pathname for this run. |
STARTsw |
= NoReStart: start model run at
hour zero (initialize). |
FDDAsw |
= NoFDDA, no FDDA input files,
|
InBdy |
MSS name of lateral boundary file. |
InLow |
MSS name for lower boundary condition file. |
InMM |
MSS name(s) of model input files. |
InRst |
MSS name(s) of model restart files. |
In4DSfc |
MSS name of surface analysis used for 4DDA. |
In4DObs |
MSS name of fdda obs files. |
Host |
= username@host.domain:/usr/tmp/username,
|
OutMM |
MSS name for output. |
A namelist file, called mmlif, is created when mm5.deck is executed. In MM5, this file is created partially from the configure.user file, and partially from mm5.deck.
TIMAX |
= forecast length in minutes. |
TISTEP |
= time step in seconds for the coarsest domain (recommend 3*dx(km)). |
IFREST |
=TRUE, for restart, |
IXTIMR |
= integer time in minutes for restart. |
IFSAVE |
=TRUE, if saving data for restart, |
SVLAST |
= TRUE, if only saving the last time; |
SAVFRQ |
= frequency of restart output in minutes. |
IFTAPE |
= 1, for model output; =0, no model output. |
TAPFRQ |
= frequency of model history file output in minutes. |
BUFFRQ |
= how frequency to split model output files in minutes (ignored if < TAPFRQ). |
INCTAP |
= multipliers of TAPFRQ for outputting. |
IFRSFA |
= TRUE, if it is a restart run, using FDDA and multiple input files. Use with CDATEST. |
IFSKIP |
= TRUE, skip input files to start the model - DO NOT use this when restart. |
CDATEST |
= DATE (yyyy-mm-dd_hh:mm:ss) of the start file, used with IFSKIP/IFRSFA. |
IFPRT |
= 1, for printed output fields; = 0, for no printed output fields |
PRTFRQ |
= frequency of printed output fields in minutes |
MASCHK |
= integer frequency in number of time steps for budget/rainfall prints (coarsest mesh) - may not give correct answer on parallel computers. |
IFTSOUT |
= TRUE, if output time series; |
TSLAT |
= latitudes of time series output locations |
TSLON |
= longitudes of time series output locations |
RADFRQ |
= frequency in minutes of radiation calculations (surface and atmospheric) |
IMVDIF |
=1, for moist vertical diffusion in clouds
(requires IMPHYS>2, and IBLTYP=2, 5 or 7), |
IVQADV |
= 0, vertical moisture advection uses log
interpolation (old method), |
IVTADV |
= 0, vertical temperature advection uses
log interpolation (old method), |
ITHADV |
= 0, temperature advection and adiabatic
term use temperature (old method), |
ITPDIF |
= 1, for diffusion using perturbation temperature
in NH model; |
TDKORR |
=2, temperature gradient correction fo horizontal
diffusion (ITPDIF=2) at ground level uses ground temperature;
|
ICOR3D |
= 1, for full 3D Coriolis force (requires
INHYD=1), |
IEXSI |
= 0, no seaice |
IFUPR |
= 1, for upper radiative boundary
condition (NH run only). |
LEVSLP |
nest level (corresponding to LEVIDN) at which solar radiation starts to account for orography (to switch off, set to a large value). Only available for SWRAD (IFRAD=2,4). |
OROSHAW |
=1, include the effect of orography shadowing.
This only has an effect if LEVSLP is also set. This option is
not available for MM5 MPP runs.Only available for SWRAD (IFRAD=2,4).
|
ITADVM |
=1, use instability limiter for temperature
advection. |
IQADVM |
=1, use instability limiter for QV/CLW advection. |
IBOUDY |
Boundary condition options: |
IFDRY |
= 1, for fake dry run with no latent heating release (requires IMPHYS>1, and ICUPA=1) |
ISSTVAR |
= 1, update SST during a simulation
(and snow cover and sea ice, if they are available). Must have
at least SST field in the input; |
IMOIAV |
used for bucket moisture scheme. |
IFSNOW |
= 1, snow cover effects (requires input SNOWC field from REGRID)
= 2, snow-cover prediction (requires input WEASD field from REGRID, and use of IMPHYS = 4,5, and 7) |
ISFMTHD |
method for calculation of 2m/10m diagnostics
|
IZ0TOPT |
Thermal roughness length option for IBLTYP
= 2 and 5 only. |
ISFFLX |
= 1, compute surface heat and moisture fluxes; =0, no fluxes. |
ITGFLG |
= 1, ground temperature predicted; = 3, constant ground temperature. |
ISFPAR |
= 1, use TERRAIN-generated land-use categories;
|
ICLOUD |
= 1, consider cloud effects on surface radiation
when FRAD=0,1 ; consider clouds in both surface and atmospheric
radiation when FRAD=2,3,4; |
IEVAP |
= 1, normal evaporative cooling; |
ISMRD |
Soil moisture initialization method for IBLTYP
= 7 (Pleim-Xiu scheme) only. |
ISTLYR |
bottom of soil layers expected as input for SOIL=2,3 |
ISMLYR |
bottom of soil layers expected as input for SOIL=2,3 |
RDMAXALB |
whether to read in max snow albedo for ISOIL
= 2 (Noah LSM) only. |
RDBRDALB |
whether to read in climatological month albedo
for ISOIL = 2 (Noah LSM). |
2) Defined in configure.user, or internally produced:
IFRAD |
see `Configure.user variables' |
ICUPA |
see `Configure.user variables' |
IBLTYP |
see `Configure.user variables' |
ISHALLO |
see `Configure.user variables' |
ISOIL |
see `Configure.user variables' |
IPOLAR |
see `Configure.user variables' |
LEVIDN |
= level of nest for each domain (0 for domain 1 - default valid values are 0-3) |
NUMNC |
= id number of parent domain for each domain (1 for domain 1) |
NESTIX |
= I-dimension of each domain. |
NESTJX |
= J-dimension of each domain. |
NESTI |
= south-west corner point I for each domain. |
NESTJ |
= south-west corner point J for each domain. |
XSTNES |
= starting time in minutes for each domain. |
XENNES |
= ending time in minutes for each domain. |
IOVERW |
= 1, for initializing a nest from the nest
input file, usually at model starting time; |
IACTIV |
= 1, if this domain is active when restart;
|
IMOVE |
= 0, if domain does not move; |
IMOVCO |
= number of first move (always 1 at beginning, may change for restarts). |
IMOVEI |
= increment in I (parent domain grids) of this move for this domain. |
IMOVEJ |
= increment in J (parent domain grids) of this move for this domain. |
IMOVET |
= time in minutes of this move for this domain
(relative to beginning of the coarse mesh run). |
IFEED |
feedback from nest to coarse mesh in 2-way
nests: |
ZZLND |
= roughness length over land (m) (if ISFPAR=0) |
ZZWTR |
= roughness length over water (m) (if ISFPAR=0) |
ALBLND |
= albedo over land (if ISFPAR=0) |
THILND |
= thermal inertia of land (cal-1 cm-2 K-1 s-0.5, if ISFPAR=0) |
XMAVA |
= moisture availability over land (if ISFPAR=0) |
CONF |
= non-convective precip saturation criterior (fraction ≤ 1 for IMPHYS=1) |
SOILFAC |
= a factor to make 5-layer soil model time step more conservative. Higher number makes soil timestep shorter (range typically 1.0 - 2.0). Used in IBLTYP=1, 2, 4 ,5, and 6. |
CZO,OZO |
= constants in Charnock relation for water roughness length. Used in IBLTYP = 2, 5 and 6. |
CKH |
= factor to control background diffusion coefficient used in the model. Default value is 1., which gives the same diffusion as versions before 3.5 if one uses 3xDX as the time step. |
FDASTA |
(MAXSES); time (min) for initiation of FDDA. |
FDAEND |
(MAXSES); time (min) for termination of FDDA. |
I4D |
(MAXSES, 2); will FDDA analysis nudging be employed, (0=no; 1=yes). |
DIFTIM |
(MAXNES, 2); time (min) between input analyses for analysis nudging. |
IWIND |
(MAXSES, 2); will the wind field be nudged from analyses, (0=no; 1=yes). |
GV |
(MAXSES, 2); analysis-nudging coefficient (s-1) for wind. |
ITEMP |
(MAXSES, 2); will the temperature be nudged from analyses, (0=no; 1=yes). |
GT |
(MAXSES, 2); analysis-nudging coefficient (s-1) for temperature. |
IMOIS |
(MAXSES, 2); will the mixing ratio be nudged from analyses, (0=no; 1=yes). |
GQ |
(MAXSES, 2); analysis-nudging coefficient (s-1) for mixing ratio. |
IROT |
(MAXSES); will vorticity be nudged from analyses, (0=no; 1=yes). |
GR |
(MAXSES, 2); analysis-nudging coefficient (m2 s-1) for vorticity. |
INONBL |
(MAXSES, 4); will PBL fields be nudged from 3-D analyses when not using surface-analysis nudging within PBL. (0=yes; 1=exclude certain variables depending on integer value of second index). |
RINBLW |
radius of influence (km) for surface-analysis nudging where the horizontal weighting function depends on surface data density. |
NPFG |
coarse-grid time-step frequency for select diagnostic print of analysis nudging. |
I4DI |
(MAXSES); will FDDA observation nudging be employed, (0=no; 1=yes). |
ISWIND |
(MAXSES); will the wind field be nudged from observations, (0=no; 1=yes). |
GIV |
(MAXSES); observation-nudging coefficient (s-1) for wind. |
ISTEMP |
(MAXSES); will the temperature be nudged from observations, (0=no; 1=yes). |
GIT |
(MAXSES); observation-nudging coefficient (s-1) for temperature. |
ISMOIS |
(MAXSES); will the mixing ratio be nudged from observations, (0=no; 1=yes). |
GIQ |
(MAXSES); observation-nudging coefficient (s-1) for mixing ratio. |
RINXY |
default horizontal radius of influence (km) for distance-weighted nudging corrections (for observation nudging). |
RINSIG |
vertical radius of influence (on sigma) for distance -weighted nudging corrections (for observationnudging). |
TWINDO |
(time window)/2 (min) over which an observation will be used for nudging. |
NPFI |
coarse-grid time-step frequency for select diagnostic print of observation nudging. |
IONF |
observation-nudging frequency in coarse grid time steps for observation-nudging calculations. |
IDYNIN |
for dynamic initialization using a ramp-down function to gradually turn off the FDDA before the pure forecast (1=yes, 0=no). |
DTRAMP |
the time period in minutes over which the nudging (obs nudging and analysis nudging) is ramped down from one to zero. Set dtramp negative if FDDA is to be ramped down BEFORE the end-of-data time (DATEND), and positive if the FDDA ramp-down period extends beyond the end-of-data time.g calculations. |
When an MM5 job is completed, always check for at least the following:
If an MM5 job has failed, check for some of the common problems:
If one browses through the output, one may find things like:
ERROR: IFRAD=2 REQUIRES IRDDIM=1 AND IMPHYS>3
which tells a user what a user needs to do to correct the problem.
If one browses through the output, one may find things like:
ERROR: IFRAD=2, OPTION NOT COMPILED
which tells a user the option you choose has not been compiled.
LEVIDN = 0,1,1,1,1,1,1,1,1,1, ; level of nest for each domain
NUMNC = 1,1,1,1,1,1,1,1,1,1, ; ID of mother domain for each nest
The mm5.tar file contains the following files and directories:
CHANGES |
Description of changes to the MM5 program |
Makefile |
Makefile to create MM5 executable |
README |
General information about the MM5 directory and how to run MM5 |
README.MPP |
General information on how to compile and run on DM machines |
Diff/ |
Diff files for each new release |
Run/ |
Where MM5 runs |
Templates/ |
MM5 job decks for different machines |
Util/ |
Utility programs for cpp |
configure.user |
Make rules and model configuration |
domain/ |
|
dynamics/ |
|
fdda/ |
|
include/ |
|
memory/ |
|
physics/ |
|
pick/ |
The file README contains basic instructions on how to compile and run the model.
The file README.MPP contains basic information and instructions on how to start compiling and running MPP MM5.
The model is executed in the directory Run.
The bug fixes and changes to the source code and tar file are described in file CHANGES file and diff.* files in directory Diff/.
All FORTRAN files are in lower-case directories separated according to their functions. See the chart at the end of this chapter for a complete list of FORTRAN files.
When `make code' command is executed, all .F and .f files selected for compiling are copied into the pick/ directory. A single cat command will enable a user to generate a source listing (see the README file in directory pick/).
(This file is included here for reference only. Use the most up-to-date one from MM5.TAR file.)
# Note: set RUNTIME_SYSTEM="CRAY_IA" for Cray interactive job
# 3a2. Cray X1 Single Node OpenMP version
# 3b. IRIX.6.X (SGI_Origin,SGI_R10000,SGI_R8000 which support OpenMP)
# 3b2. IRIX.6.X (SGI_Origin,SGI_R10000,SGI_R8000)
# 3c. IRIX.5.2/5.3, IRIX.6.X (SGI_R4000/SGI_R4400/SGI_R5000)
# Note: set RUNTIME_SYSTEM="SGI_R4000" for SGI_R4400/SGI_R5000
# 3d. SUN Fortran (solaris,SPARC20/SPARC64)
# 3e2. DEC_ALPHA (4100/8400; use OpenMP parallel directives)
# 3h. HP (SPP-UX) for HP Exemplar S/X-Class Systems
# 3i1. PC_PGF (LINUX/Portland Group Inc.)
# 5. Options for making "./include/parame.incl"
# 6. Physics Options (memory related)
# 7. MPP Options (Set no options in section 3)
# 7g1. Network of Linux PCs with MPI (PGI)
# 7g2. Network of Linux PCs with MPI (INTEL)
# 7h. NEC SX/5 (under development)
#-----------------------------------------------------------------------------
#-----------------------------------------------------------------------------
#-----------------------------------------------------------------------------
# Uncomment the ones you need, including RUNTIME_SYSTEM
#-----------------------------------------------------------------------------
LIBINCLUDE = $(DEVTOP)/include
#-----------------------------------------------------------------------------
# Note: - imsl library is only needed if running Arakawa-Schubert cumulus scheme;
# and the location of the library may be different on non-NCAR Crays.
# - if you are using the new program environment on Cray, should set
# - select the right compilation option for Cray - you may use
# - -x omp is needed for f90 compiler version 3.0.2.6 and above.
#-----------------------------------------------------------------------------
#FCFLAGS = -D$(RUNTIME_SYSTEM) -I$(LIBINCLUDE) -O task1 -x omp
#CPPFLAGS = -I$(LIBINCLUDE) -C -P
#LOCAL_LIBRARIES = -L /usr/local/lib -l imsl
#-----------------------------------------------------------------------------
# 3a2. Cray X1 Single Node OpenMP version
#-----------------------------------------------------------------------------
## Use these for X1 cross compiler
## Use these for X1 native (trigger) compiler
#FCFLAGS = -Ossp,task1,inline0 -xcsd,mic -sword_pointer -I$(LIBINCLUDE) -D$(RUNTIME_SYSTEM)
### Multi-streaming single MSP mode
###FCFLAGS = -O3 -Ogen_private_callee -xomp,mic -sword_pointer -I$(LIBINCLUDE) -D$(RUNTIME_SYSTEM)
#CPPFLAGS = -I$(LIBINCLUDE) -C -P
#-----------------------------------------------------------------------------
# 3b. IRIX.6.X (SGI_Origin,SGI_R10000,SGI_R8000 which support OpenMP)
# Use OpenMP directives for multi-processor runs.
# - set RUNTIME_SYSTEM = SGI_Origin
# - works with 7.2.1 and above compiler
# - select appropriate XLOCAL0 macro for loader option
# - For parallel execution of MM5 set the following environment variables:
# setenv OMP_NUM_THREADS <number_of_processors>
# setenv _DSM_PLACEMENT ROUND_ROBIN
# - For parallel execution on a processor set without contention:
# - For parallel execution on a contented set of processors:
#-----------------------------------------------------------------------------
#RUNTIME_SYSTEM = "SGI_Origin"
#ABI = -n32 # 2 GB address space
##ABI = -64 # For 64-bit address space
#PREC = # default 32-bit floating-point presicion.
##PREC = -r8 # 64-bit floating-point precision.
##Conversion program between different precisions of mminput and bdyout available from wesley@sgi.com
##MP = -mp -MP:open_mp=OFF # Use SGI multiprocessing directives
#OPT = -O3 -OPT:roundoff=3:IEEE_arithmetic=3 -OPT:reorg_common=OFF
##debugging#OPT = -g -DEBUG:div_check:subscript_check=ON:trap_uninitialized=ON
##select appropriate XLOCAL loader
### Burk-Thompson PBL (IBLTYP=3) option mp directives
##XLOCAL0 = -Wl,-Xlocal,bt1_,-Xlocal,blk1_,-Xlocal,blk2_
### Noah LSM (ISOIL=2) option mp directives
##XLOCAL0 = -Wl,-Xlocal,rite_,-Xlocal,abci_
### Gayno-Seaman PBL (IBLTYP=6) option mp directives
##XLOCAL0 = -Wl,-Xlocal,fog1d_,-Xlocal,surface1_,-Xlocal,surface2_,-Xlocal,surface3_,-Xlocal,comsurfslab_
#FCFLAGS = -I$(LIBINCLUDE) -D$(RUNTIME_SYSTEM) $(ABI) $(IO) $(PREC) $(MP) $(OPT)
#CPPFLAGS = -I$(LIBINCLUDE) -C -P
#LDOPTIONS = $(ABI) $(PREC) $(MP) $(OPT) $(XLOCAL0)
#-----------------------------------------------------------------------------
# 3b2. IRIX.6.X (SGI_Origin,SGI_R10000,SGI_R8000)
# Use SGI directives for multi-processor runs.
# - set RUNTIME_SYSTEM = SGI_R8000
# - use the appropriate LDOPTIONS if compiling Burk-Thompson PBL,
# Gayno-Seaman PBL, or Noah land-surface module
# - use 7.0 and above compiler
# - do not use -lfastm for R10000 and Origin series for compiler
# versions 7.0 and 7.1, unless patches are installed. For more
# information please see MM5 Web page:
# http://www2.mmm.ucar.edu/mm5/mm5v2-sgi.html
#-----------------------------------------------------------------------------
#FCFLAGS = -I$(LIBINCLUDE) -O3 -n32 -mips4 -mp -OPT:roundoff=3:IEEE_arithmetic=3
#CPPFLAGS = -I$(LIBINCLUDE) -C -P
###Burk-Thompson (IBLTYP=3) option mp directives
##LDOPTIONS = -n32 -mips4 -mp -Wl,-Xlocal,bt1_,-Xlocal,blk1_,-Xlocal,blk2_
###Noah LSM (ISOIL=2) option mp directives
##LDOPTIONS = -n32 -mips4 -mp -Wl,-Xlocal,rite_,-Xlocal,abci_
### Gayno-Seaman (IBLTYP=6) option mp directives
##LDOPTIONS = -n32 -mips4 -mp -Wl,-Xlocal,fog1d_,-Xlocal,surface1_,-Xlocal,surface2_,-Xlocal,surface3_,-Xlocal,comsurfslab_
#-----------------------------------------------------------------------------
# 3c. IRIX.6.X (SGI_R4400/SGI_R4000/SGI_R5000)
#-----------------------------------------------------------------------------
#FCFLAGS = -I$(LIBINCLUDE) -mips2 -32 -O2 -Nn30000 -Olimit 1500
#CPPFLAGS = -I$(LIBINCLUDE) -C -P
#-----------------------------------------------------------------------------
# 3d. SUN (solaris,SPARC20/SPARC64)
#-----------------------------------------------------------------------------
#FCFLAGS = -fast -O2 -I$(LIBINCLUDE)
#CPPFLAGS = -I$(LIBINCLUDE) -C -P
#-----------------------------------------------------------------------------
#-----------------------------------------------------------------------------
#FCFLAGS = -cpp -D$(RUNTIME_SYSTEM) -I$(LIBINCLUDE) -c -O4 -Olimit 2000 -automatic \
# -fpe0 -align dcommons -align records -convert big_endian
###FCFLAGS = -cpp -D$(RUNTIME_SYSTEM) -DIBMopt -DvsLIB -I$(LIBINCLUDE) -c -O4 -Olimit 2000 -automatic \
### -fpe0 -align dcommons -align records -convert big_endian
#CPPFLAGS = -I$(LIBINCLUDE) -C -P
#LDOPTIONS = -math_library accurate
#-----------------------------------------------------------------------------
# 3e2. DEC_ALPHA (4100/8400 Series)
# Use OpenMP directives for multi-processor runs.
# - set RUNTIME_SYSTEM = DEC_ALPHA
#-----------------------------------------------------------------------------
#FCFLAGS = -omp -cpp -D$(RUNTIME_SYSTEM) -I$(LIBINCLUDE) -c -O4 -Olimit 2000 \
#-automatic -fpe0 -align dcommons -align records -convert big_endian
#CPPFLAGS = -I$(LIBINCLUDE) -C -P
#LDOPTIONS = -omp -math_library accurate
#-----------------------------------------------------------------------------
#-----------------------------------------------------------------------------
#FCFLAGS = -I$(LIBINCLUDE) -O3 -qarch=auto -qmaxmem=-1
#CPPFLAGS = -I$(LIBINCLUDE) -C -P -Drs6000
#LDOPTIONS = -qmaxmem=-1 -O3 -qarch=auto
#-----------------------------------------------------------------------------
# - Depending on problem size and machine memory size, the settings
# of maxstack and maxdata may need to be modified.
# - If the newer thread-safe mass library is available, add
# the -lmass_r option to LOCAL_LIBRARIES.
#-----------------------------------------------------------------------------
#FCFLAGS = -I$(LIBINCLUDE) -O2 -qarch=auto -qmaxmem=-1 -qsmp=omp:noauto -qnosave -qstrict -qnocclines
#CPPFLAGS = -I$(LIBINCLUDE) -C -P -Drs6000
#LDOPTIONS = -qmaxmem=-1 -O2 -qarch=auto -bmaxstack:512000000 -bmaxdata:2000000000
#LOCAL_LIBRARIES = -lxlsmp -lmass_r
#-----------------------------------------------------------------------------
#-----------------------------------------------------------------------------
#CPPFLAGS = -I$(LIBINCLUDE) -C -P
#-----------------------------------------------------------------------------
# 3h. HP-SPP (SPP-UX), and HP-SPP_IA
#-----------------------------------------------------------------------------
#INLINE = +Olimit +Oinline=_saxpy,vadv,hadv,sinty,sintx,slab,diffut
#PARALLEL = +O3 +Oparallel +Onofail_safe +Onoautopar +Onodynsel
## Use the following FCFLAGS to build single-threaded executable
##FCFLAGS = ${PROFILE} ${ARCH} -I$(LIBINCLUDE) +O3 +Oaggressive \
## Use the following FCFLAGS to build a parallel executable
#FCFLAGS = ${PROFILE} ${ARCH} -I$(LIBINCLUDE) ${PARALLEL} \
# +O3 +Oaggressive +Olibcalls ${INLINE}
#CPPFLAGS = -I$(LIBINCLUDE) -C -P
#LDOPTIONS = ${FCFLAGS} -Wl,-aarchive_shared -Wl,+FPD
#LOCAL_LIBRARIES = -Wl,/usr/lib/pa1.1/libm.a
#-----------------------------------------------------------------------------
# 3i1. PC_PGF77 (LINUX/Portland Group Inc.)
# May use pgf90 if the version is 3.1-4
#-----------------------------------------------------------------------------
#FCFLAGS = -I$(LIBINCLUDE) -O2 -Mcray=pointer -tp p6 -pc 32 -Mnoframe -byteswapio
##FCFLAGS = -I$(LIBINCLUDE) -O2 -Mcray=pointer -tp p6 -pc 32 -Mnoframe -byteswapio -mp \
#LDOPTIONS = -O2 -Mcray=pointer -tp p6 -pc 32 -Mnoframe -byteswapio
##LDOPTIONS = -O2 -Mcray=pointer -tp p6 -pc 32 -Mnoframe -byteswapio -mp
#-----------------------------------------------------------------------------
#-----------------------------------------------------------------------------
#FCFLAGS = -I$(LIBINCLUDE) -O2 -tp p6 -pc 32 -convert big_endian
#LDOPTIONS = -O2 -tp p6 -pc 32 -convert big_endian
#-----------------------------------------------------------------------------
#-----------------------------------------------------------------------------
#FCFLAGS = -I$(LIBINCLUDE) -qarch=auto
#CPPFLAGS = -I$(LIBINCLUDE) -I. -C -P -DIBM -xassembler-with-cpp
#LDOPTIONS = -Wl,-stack_size,10000000,-stack_addr,0xc0000000
#-----------------------------------------------------------------------------
#-----------------------------------------------------------------------------
RM_CMD = $(RM) *.CKP *.ln *.BAK *.bak *.o *.i core errs ,* *~ *.a \
.emacs_* tags TAGS make.log MakeOut *.f !
#-----------------------------------------------------------------------------
# 5. Options for making ./include/parame.incl
#-----------------------------------------------------------------------------
# FDDAGD (integer) - "1" -> FDDA gridded run
# FDDAOBS (integer) - "1" -> FDDA obs run
# MAXNES (integer) - Max Number of Domains in simulation
# MIX,MJX (integer) - Maximum Dimensions of any Domain
# MKX (integer) - Number of half sigma levels in model
#-----------------------------------------------------------------------------
# The first MAXNES values in the list will be used for the corresponding
# model nests; the rest in the list can be used to compile other options.
# The exception is FRAD, of which only the first value is used in the model,
# (i.e., only one radiation option is used for all nests). The rest allow
# other options to be compiled.
# Compilation of Arakawa-Schubert cumulus scheme requires imsl.
#-----------------------------------------------------------------------------
# IMPHYS - for explicit moisture schemes (array,integer)
IMPHYS = "4,4,1,1,1,1,1,1,1,1"
# - Dry,stable,warm rain,simple ice,mix phase,
# - graupel(gsfc),graupel(reisner2),schultz
# - 0=do not use look-up tables for moist
# - 1=use look-up tables for moist physics
# (currently only simple ice and mix phase
# - 2=optimized exmoisr routine (need vslib, if not
# available set -DvsLIB in compile flags)
# ICUPA - for cumulus schemes (array,integer)
# - None,Kuo,Grell,AS,FC,KF,BM,KF2 - 1,2,3,4,5,6,7,8
# IBLTYP - for planetary boundary layer (array,integer)
# - 0=no PBL fluxes,1=bulk,2=Blackadar,
# 3=Burk-Thompson,4=Eta M-Y,5=MRF,
IBLTYP = "5,5,0,0,0,0,0,0,0,0"
# FRAD - for atmospheric radiation (integer)
# - Radiation cooling of atmosphere
# 0=none,1=simple,2=cloud,3=ccm2,rrtm=4
# IPOLAR - (integer) for polar model used only if ISOIL=1
# 0=not polar (5-layer soil model)
# 1=polar (7-layer snow/soil model)
# ISOIL - for multi-layer soil temperature model (integer)
# - 0=no,1=yes (only works with IBLTYP=2,4,5,6)
# 2=Noah land-surface scheme (IBLTYP=4,5 only)
# 3=Pleim-Xiu LSM (IBLTYP=7 only)
# ISHALLO (array,integer) - Shallow Convection Option
# 1=shallow convection,0=No shallow convection
ISHALLO = "0,0,0,0,0,0,0,0,0,0"
#-----------------------------------------------------------------------------
# For general information and updated "helpdesk" information see
# http://www2.mmm.ucar.edu/mm5/mpp
# http://www2.mmm.ucar.edu/mm5/mpp/helpdesk
#-----------------------------------------------------------------------------
# Presently, of the MPP platforms only the "sp2"
# is supplied with the "make deck" capability.
# PROCMIN_NS - minimum number of processors allowed in N/S dim
# PROCMIN_EW - minimum number of processors allowed in E/W dim
# ASSUME_HOMOGENOUS_ENVIRONMENT - on a machine with a heterogeneous
# mix of processors (different speeds) setting this compile time
# constant to 0 (zero) allows the program to detect the speed of each
# processor at the beginning of a run and then to attempt to come up with
# an optimal (static) mapping. Set this to 0 for a heterogeneous
# mix of processors, set it to 1 for a homogeneous mix. Unless you
# are certain you have a heterogeneous mix of processors, leave this
# set to 1. Currently, this option is ignored on platforms other
ASSUME_HOMOGENEOUS_ENVIRONMENT = 1
#-----------------------------------------------------------------------------
#-----------------------------------------------------------------------------
#FCFLAGS = -O2 -qmaxmem=-1 -qarch=auto -qfloat=hsflt
#LDOPTIONS = -bmaxdata:0x70000000
#CPPFLAGS = -DMPI -Drs6000 -DSYSTEM_CALL_OK -DIBMopt
##CPPFLAGS = -DMPI -Drs6000 -DSYSTEM_CALL_OK -DIBMopt -DvsLIB
#CFLAGS = -DNOUNDERSCORE -DMPI
#-----------------------------------------------------------------------------
# 7a.1 IBM SP with Silver or Winterhawk nodes
# - You must compile with XLF or MPXLF version 6.1 or greater.
# - Check with your system admin before linking to lessl or lmass.
# - Note for running on blue.llnl.gov:
# newmpxlf_r is LLNL specific wrapper around HPF 6.1 w/ HPF off.
# - If the newer thread-safe mass library is available, add
# the -lmass_r option to LOCAL_LIBRARIES.
# - For very large domains, use -bmaxdata:2000000000 -bmaxstack:268435456
# for load options (Peter Morreale/SCD)
# - If you enable -O3 optimization, add -qstrict as well
#-----------------------------------------------------------------------------
## On systems with R6.1 or greater of IBM Fortran.
#FCFLAGS = -O2 -qarch=auto -qcache=auto -qzerosize -qsmp=noauto -qnosave -qmaxmem=-1 \
#LDOPTIONS = -qsmp=noauto -bmaxdata:0x70000000
#CPPFLAGS = -DMPI -Drs6000 -DSYSTEM_CALL_OK
#CFLAGS = -DNOUNDERSCORE -DMPI
#-----------------------------------------------------------------------------
#-----------------------------------------------------------------------------
#CFLAGS = -DNOUNDERSCORE -Dt3e -DT3E -DMPI
#ARCH_OBJS = error_dupt3d.o t3etraps.o set_to_nan.o milliclock.o
#-----------------------------------------------------------------------------
# Note that the MPP version of MM5 is not supported for compilation under
# the "modules" environment. To see if you are using modules to control
# compiler versions on your machine, type "module list".
# It may be necessary to modify the MPI run time environment on the
# setenv MPI_MSGS_PER_PROC 4096
# See also http://www2.mmm.ucar.edu/mm5/mpp/helpdesk/20000621.txt
#-----------------------------------------------------------------------------
#FCFLAGS = -O3 -OPT:roundoff=3:IEEE_arithmetic=3 -OPT:fold_arith_limit=2001
#LOCAL_LIBRARIES = -lfastm -lmpi
#CPPFLAGS = -DMPI -DO2K -DDEC_ALPHA -DSYSTEM_CALL_OK
#CFLAGS = -DO2K -DMPI -DDEC_ALPHA
#-----------------------------------------------------------------------------
#-----------------------------------------------------------------------------
##FCFLAGS = +DA2.0N +DS2.0a -g
#FCFLAGS = +DA2.0N +DS2.0a +O3
#CPPFLAGS = -DMPI -DSYSTEM_CALL_OK
#CFLAGS = -DNOUNDERSCORE -DMPI
#-----------------------------------------------------------------------------
# 7e. Compaq ALPHA/MPI/OpenMP (Thanks to Dave Sherden)
# - For multi-threaded MPI processes (useful on dm-clusters of SMP
# nodes; such as fir.mmm.ucar.edu), uncomment the definition
# - If running with MPICH (public domain MPI) uncomment
# first set of definitions for MFC, MCC, MLD and LDOPTIONS. If using
# the Compaq/DEC MPI, uncomment the second set.
# - On prospect.ucar.edu (ES40), add the -lelan option to LDOPTIONS.
#-----------------------------------------------------------------------------
###### If using OpenMP for SMP parallelism on each MPI process ###
###### If using DEC MPI (e.g. on fir.mmm.ucar.edu) ###
###### Compaq ES40 Cluster (prospect.ucar.edu) requires -lelan for OpenMP
##LDOPTIONS = -lmpi -lelan $(SPECIAL_OMP)
##LDOPTIONS = -lmpi $(SPECIAL_OMP)
#FCFLAGS = -O4 -Olimit 2000 -fpe0 -align dcommons -align records \
# -convert big_endian $(SPECIAL_OMP)
#CPPFLAGS = -DMPI -DDEC_ALPHA -DSYSTEM_CALL_OK
#-----------------------------------------------------------------------------
# 7e.1 ALPHA Linux with MPI (Thanks Greg Lindahl, HPTi)
# (This has run on jet.fsl.noaa.gov)
#-----------------------------------------------------------------------------
####### If using OpenMP for SMP parallelism on each MPI process ###
#LDOPTIONS = $(SPECIAL_OMP) -static
#FCFLAGS = -O5 -arch ev6 -tune ev6 -align dcommons -align records \
# -convert big_endian $(SPECIAL_OMP)
#CPP = /lib/cpp -traditional -C -P
#CPPFLAGS = -DMPI -DDEC_ALPHA $(UNDERSCORE) -DSYSTEM_CALL_OK
#CFLAGS = -DMPI -DDEC_ALPHA $(UNDERSCORE)
#-----------------------------------------------------------------------------
# These options have been updated for the newer VPP5000 system. If you
# find that you have trouble compiling on your system, try removing the
# -KA32 and -Ka4 option from FCFLAGS, LDOPTIONS, CFLAGS and from
# MPP/RSL/RSL/makefile.vpp. Note that to successfully compile the RSL
# library (MPP/RSL/RSL) you need the following two environment variables
# set (syntax may vary with shells other than csh):
# setenv MPIINCDIR /usr/lang/mpi/include
# setenv MPILIBS '-Wl,-P -L/usr/lang/mpi/lib -lmpi -lmp'
# setenv MPIINCDIR /usr/lang/mpi2/include32
# setenv MPILIBS '-Wl,-P -L/usr/lang/mpi2/lib32 -lmpi -lmp'
# Note for older systems. The configure.user is set up for VPP5000.
# For older (VPP300/700) systems, it may be necessary to remove the
# -KA32 and -Ka4 flags in the settings below.
# Note with v3.4: VECTOR=1 works only with IMPHYS=5, IBLTYP=5, and ICUPA=3.
# Other IMPHYS options and ICUPA options will work but won't be vector
# optimized. IBLTYP=2 will not compile with VECTOR=1.
# Debugging VECTOR=1 option on non-vector platforms: see MPP/README_VECDEBUG
#-----------------------------------------------------------------------------
### FCFLAGS = -Sw -g -Pdos -lmpi -lmp
### debugging; for debugging without MPI (also need to compile RSL with -DSTUBS)
### FCFLAGS = -Sw -g -Pdos -Of,-P,-E
#FCFLAGS = -Sw -Wv,-Of,-te,-ilfunc,-noalias,-m3,-P255 \
# -Oe,-P -Kfast -Pdos -lmpi -lmp -KA32
#FCVFLAGS = -Sw -Wv,-te,-noalias,-ilfunc,-Of,-m3,-P255 \
# -Of,-e,-P,-u -Kfast -Pdos -lmpi -lmp -KA32
#LDOPTIONS = -Wl,-P -L$(MPILIBS) -lmpi -J -lmp -KA32
### Uncomment only for debugging without MPI
### CPPFLAGS = -DMPI -Dvpp -I$(MPIINCDIR) -DKMA -DSTUBS -DSYSTEM_CALL_OK
### CFLAGS = -DMPI -Dvpp -I$(MPIINCDIR) -KA32 -Ka4 -DSTUBS
### Normal settings for CPPFLAGS and CFLAGS
#CPPFLAGS = -DMPI -Dvpp -I$(MPIINCDIR) -DKMA -DSYSTEM_CALL_OK
#CFLAGS = -DMPI -Dvpp -I$(MPIINCDIR) -KA32 -Ka4
#-----------------------------------------------------------------------------
# 7g1. Linux PCs. Need Portland Group pgf77 and MPICH.
# The following information has been added to this file with MM5v3.2:
# This expects mpif77 and mpicc to be installed on your system in
# $(LINUX_MPIHOME)/bin . These should be configured to use the Portland Group
# pgf77 (v3 or higher) and gcc, respectively. For information on how to
# download, install, and configure mpich on your system, see:
# http://www.mcs.anl.gov/mpi/mpich
# Information on Portland Group compiler:
# If using a different Fortran compiler, modify FCFLAGS and LDOPTIONS as
# needed. The compiler should be capable of doing little- to big-endian
# conversion and it should understand integer (Cray-style) pointers. It
# is recommended that the same fortran compiler be used to compile
# mpich. Edit the LINUX_MPIHOME macro, below, to point to the top level mpich
# http://www2.mmm.ucar.edu/mm5/mpp/linuxhelp.html (by Steve Webb, NCAR/RAP)
# Note for pgf77 on RedHat Linux6: patches available from Portland Group at:
# http://www.pgroup.com/downloads/rh6patches.html
#-----------------------------------------------------------------------------
## edit the following definition for your system
#LINUX_MPIHOME = /usr/local/mpich
#MFC = $(LINUX_MPIHOME)/bin/mpif77
#MCC = $(LINUX_MPIHOME)/bin/mpicc
#MLD = $(LINUX_MPIHOME)/bin/mpif77
#FCFLAGS = -O2 -Mcray=pointer -tp p6 -pc 32 -Mnoframe -byteswapio
#LDOPTIONS = -O2 -Mcray=pointer -tp p6 -pc 32 -Mnoframe -byteswapio
#LOCAL_LIBRARIES = -L$(LINUX_MPIHOME)/build/LINUX/ch_p4/lib -lfmpich -lmpich
#CPP = /lib/cpp -C -P -traditional
#CPPFLAGS = -DMPI -Dlinux -DSYSTEM_CALL_OK
#CFLAGS = -DMPI -I$(LINUX_MPIHOME)/include
#-----------------------------------------------------------------------------
# 7g2. Linux PCs. Need INTEL and MPICH.
#-----------------------------------------------------------------------------
### edit the following definition for your system
#LINUX_MPIHOME = /usr/local/mpich-intel
#MFC = $(LINUX_MPIHOME)/bin/mpif77
#MCC = $(LINUX_MPIHOME)/bin/mpicc
#MLD = $(LINUX_MPIHOME)/bin/mpif77
#FCFLAGS = -O2 -convert big_endian -pc32
#LDOPTIONS = -O2 -convert big_endian -pc32
#LOCAL_LIBRARIES = -L$(LINUX_MPIHOME)/build/LINUX/ch_p4/lib -lfmpich -lmpich
#CPPFLAGS = -traditional -DMPI -Dlinux
#CFLAGS = -DMPI -I/usr/local/mpi/include
#-----------------------------------------------------------------------------
# 7h. NEC SX-4 (under development)
#-----------------------------------------------------------------------------
#FCFLAGS = -V -E P -Wf"-init stack=zero heap=zero -O nooverlap" -USX -float0 \
# -D$(RUNTIME_SYSTEM) -I$(LIBINCLUDE) -Wf"-L transform fmtlist summary" -g
#FCFLAGS = -V -E P -C vopt -Wf"-init stack=zero heap=zero -O nooverlap" \
# -ew -USX -float0 -D$(RUNTIME_SYSTEM) -I$(LIBINCLUDE) \
# -Wf"-L transform fmtlist summary"
#LDOPTIONS = -float0 -lmpi -lmpiw -g
#CPPFLAGS = -DMPI -Dvpp -I$(LIBINCLUDE) -C -P -DDEC_ALPHA -DSYSTEM_CALL_OK
#CFLAGS = -DMPI -Dvpp -DDEC_ALPHA
#ASSUME_HOMOGENEOUS_ENVIRONMENT = 1
#-----------------------------------------------------------------------------
# 7i. Sun MPI (tested on k2.ucar.edu)
#-----------------------------------------------------------------------------
###### If using OpenMP for SMP parallelism on each MPI process ###
#FCFLAGS = -fast -O2 $(SPECIAL_OMP)
#CPPFLAGS = -DMPI -DSYSTEM_CALL_OK
#-----------------------------------------------------------------------------
#-----------------------------------------------------------------------------
## Use these for X1 cross compiler
## Use these for X1 native (trigger) compiler
#FCFLAGS = -x omp,mic -O3 -Ofp3 -Ogen_private_callee -V -ra -sword_pointer -D$(RUNTIME_SYSTEM)
##FCFLAGS = -x omp,mic -Oscalar2,stream3,vector3 -Ofp3 -Ogen_private_callee -V -ra -sword_pointer -D$(RUNTIME_SYSTEM)
#CPPFLAGS = -DMPI -D$(RUNTIME_SYSTEM) -DKMA
#CFLAGS = -V -O3 -h display_opt -h report=imsvf -DMPI -D$(RUNTIME_SYSTEM)
#ARCH_OBJS = error_dupt3d.o set_to_nan.o milliclock.o
#-----------------------------------------------------------------------------
# 7k. Cray XD1, Linux Opteron. Need Portland Group pgf90.
# The following information has been added to this file with MM5v3.6.3:
# Information on Portland Group compiler:
# If using a different Fortran compiler, modify FCFLAGS and LDOPTIONS as
# needed. The compiler should be capable of doing little- to big-endian
# conversion and it should understand integer (Cray-style) pointers. It
# is recommended that the same fortran compiler be used to compile
# mpich. Edit the LINUX_MPIHOME macro, below, to point to the top level mpich
# http://www2.mmm.ucar.edu/mm5/mpp/linuxhelp.html (by Steve Webb, NCAR/RAP)
# Note for pgf77 on RedHat Linux6: patches available from Portland Group at:
# http://www.pgroup.com/downloads/rh6patches.html
#-----------------------------------------------------------------------------
# edit the following definition for your system
#LINUX_MPIHOME = /usr/mpich/mpich-1.2.5
### mpif77, mpicc are not yet installed on XD1
#MFC = $(LINUX_MPIHOME)/bin/mpif77
#MCC = $(LINUX_MPIHOME)/bin/mpicc
#MLD = $(LINUX_MPIHOME)/bin/mpif77
#FCFLAGS = -DDEC_ALPHA -O3 -fastsse -Mnoreentrant -Mcray=pointer -Mnoframe -byteswapio
#LDOPTIONS = -DDEC_ALPHA -O3 -Mcray=pointer -Mnoframe -byteswapio
### need to point to header and libs for mpich explicitly for XD1
#OBJS_PATH = /opt/benchmark/shome/CONTRIB
#LOCAL_OBJS = $(OBJS_PATH)/if.o $(OBJS_PATH)/strdup.o $(OBJS_PATH)/farg.o
#LIB_PATH = -L $(PGI)/linux86-64/5.1/lib -L $(LINUX_MPIHOME)/lib -L /lib64
#LOCAL_LIBRARIES = $(LIB_PATH) -lgcc -lmpich -lfmpich -lrapl -lmpichfsup -lpthread $(LOCAL_OBJS)
#CPP = /lib/cpp -C -P -traditional
#CPPFLAGS = -DDEC_ALPHA -DMPI -Dlinux -DSYSTEM_CALL_OK
#CFLAGS = -O3 -DDEC_ALPHA -DMPI -I$(LINUX_MPIHOME)/include
#-----------------------------------------------------------------------------
# Don't touch anything below this line
#-----------------------------------------------------------------------------
This is a Bourne shell script. Slight variations may exist on different machines.
(This file is included here for reference only. Use the most up-to-date one from MM5.TAR file.)
# The mm5 executable (mm5.exe) expects to find the following files
# BDYOUT_DOMAIN1 | --> output files from Interpf
# TERRAIN_DOMAIN[2,3..] if running nests --> output from Terrain
# RESTART_DOMAIN1[,2,3..] --> output from MM5 run: renamed from
# If it is gridded FDDA run with surface analysis nudging:
# If it is observational nudging run:
# MM5OBS_DOMAIN1[,2,3..] --> user-created observation files
# MMOUT_DOMAIN1[,2,3...] --> one output for each domain
# temp files should be accessible
# Select appropriate FDDAsw if doing gridded analysis FDDA
#FDDAsw=yes # gridded FDDA input switch
# 1. Options for namelist ("mmlif")
#-----------------------------------------------------------------------------
# 1. Options for namelist ("mmlif")
#-----------------------------------------------------------------------------
# The first dimension (column) of the arrays denotes the domain
# Col 1 = Domain #1, Col 2 = Dom #2, etc.
; ************* FORECAST TIME AND TIME STEP ******************
TIMAX = 720., ; forecast length in minutes
TISTEP = 240., ; coarse domain DT in model, use 3*DX
; ************** OUTPUT/RESTART OPTIONS ***************
IFREST = .FALSE., ; whether this is a restart
IXTIMR = 720, ; restart time in minutes
IFSAVE = .TRUE., ; save data for restart
SVLAST = .TRUE., ; T: only save the last file for restart
SAVFRQ = 360., ; how frequently to save data (in minutes)
IFTAPE = 1, ; model output: 0,1
TAPFRQ = 180., ; how frequently to output model results (in minutes)
BUFFRQ = 0., ; how frequently to split model output files (in minutes),
INCTAP = 1,1,1,1,1,1,1,1,1,1, ; multipliers of TAPFRQ for outputting
IFRSFA = .FALSE., ; IF this is a RESTART run, AND IF FDDA is ON, AND
; IF multiple input FILES are used, set this to .TRUE.
; set CDATEST to the INITIAL time of the first run
IFSKIP = .FALSE., ; whether to skip input files - DO NOT use this for
; restart also need to set CDATEST if set to .TRUE.
CDATEST = '1993-03-13_00:00:00', ; IF IFSKIP=.TRUE., this will be the date from which the code should start
; IF IFRSFA=.TRUE., this will be the INITIAL date from the first model run
IFPRT = 0, ; sample print out: =1, a lot of print
PRTFRQ = 720., ; Print frequency for sample output (in minutes)
MASCHK = 99999, ; mass conservation check (KTAU or no. of time steps)
IFTSOUT = .FALSE., ; output time series (default 30 points)
TSLAT = 0.0,0.0,0.0,0.0,0.0, ; latitudes of time series points (S is negative)
TSLON = 0.0,0.0,0.0,0.0,0.0, ; longitudes of time series points (W is negative)
RADFRQ = 30., ;atmospheric radiation calculation frequency (in minutes)
IMVDIF = 1, ;moist vertical diffusion in clouds - 0, 1 (IBLTYP=2,5 only)
IVQADV = 1, ;vertical moisture advection uses log interpolation - 0, linear - 1
IVTADV = 1, ;vertical temperature advection uses theta interpolation-0,linear-1
ITPDIF = 1, ;sigma-diffusion using temperature - 0, sigma-diffusion using
; ;perturbation temperature - 1, z-diffusion - 2
TDKORR = 2, ;temperature gradient correction for z-diffusion at ground level
; ;uses -1- ground temp, -2- one-sided difference of air temp
ITPDIF = 1, ;diffusion using perturbation temperature - 0,1
ICOR3D = 1, ;3D Coriolis force - 0, 1
IEXSI = 0, ;initial sea-ice - 0, 1(base on SST), 2(read in) (ISOIL=1 only)
IFUPR = 1, ;upper radiative boundary condition - 0, 1
LEVSLP = 9, ;nest level (correspond to LEVIDN) at which solar radiation
;start to account for orography
;only have an effect for very high resolution model domains
OROSHAW = 0, ;include effect of orography shadowing
;ONLY has an effect if LEVSLP is also set
;1=orography shadowing taken into account
ITADVM = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ; 0: default - instability limiter not used
; 1: use instability limiter for temp advection
IQADVM = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ; 0: default - instability limiter not used
; 1: use instability limiter for QV/CLW advection
IBOUDY = 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, ;boundary conditions
; (fixed, time-dependent, relaxation -0,2,3)
; 3. keep the following 8 variables as they are
; unless doing sensitivity runs
IFDRY = 0, ;fake-dry run (no latent heating) - 0, 1
; for IMPHYS = 2,3,4,5,6,7 (requires ICUPA = 1)
ISSTVAR= 0, ;varying SST in time - 1, otherwise, 0
IMOIAV = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ;bucket soil moisture scheme. 0 - not used,
;1 - used w/o extra input, 2 - user w/ soil m input
IFSNOW = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ;SNOW COVER EFFECTS - 0, 1
; (only if snow data are generated in REGRID), 2 (simple snow model -
; only if WEASD is provided by REGRID)
ISFMTHD= 1, ;method for calculation of 2m/10m diagnostics
;0 - old method, 1 - new method for stable conditions
IZ0TOPT = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ;Thermal roughness length option
; - 0 (default), 1 (Garratt), 2 (Zilitinkevich)
ISFFLX = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, ;surface fluxes - 0, 1
ITGFLG = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, ;surface temperature prediction -
ISFPAR = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, ;surface characteristics - 0, 1
ICLOUD = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, ;cloud effects on radiation - 0, 1
IEVAP = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, ;evap of cloud/rainwater - <0, 0, >0
; (currently for IMPHYS=3,4,5 only)
ISMRD = 0, ;soil moisture initialization by PX LSM:
; =0, use moisture avail from LANDUSE.TBL;
; =2, use soil moisture from REGRID;
; Default soil layers expected as input for ISOIL 2 & 3
; These values reflect the BOTTOM of the soil layer available
; Other common layers used by EC models (for instance ERA40)
; Next two switches for new version of NOAH LSM (ISOIL=2)
RDMAXALB = .FALSE., ; T: use climatological max snow albedo
RDBRDALB = .FALSE., ; T: use climatological monthly albedo
; ************** NEST AND MOVING NEST OPTIONS ***************
LEVIDN = 0,1,2,1,1,1,1,1,1,1, ; level of nest for each domain
NUMNC = 1,1,2,1,1,1,1,1,1,1, ; ID of mother domain for each nest
NESTIX = 35, 49, 31, 46, 46, 46, 46, 46, 46, 46, ; domain size i
NESTJX = 41, 52, 31, 61, 61, 61, 61, 61, 61, 61, ; domain size j
NESTI = 1, 10, 8, 1, 1, 1, 1, 1, 1, 1, ; start location i
NESTJ = 1, 17, 9, 1, 1, 1, 1, 1, 1, 1, ; start location i
XSTNES = 0., 0.,900., 0., 0., 0., 0., 0., 0., 0., ; domain initiation
XENNES =1440.,1440.,1440.,720.,720.,720.,720.,720.,720.,720.;domain termination
IOVERW = 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, ; overwrite nest input
; 0=interpolate from coarse mesh (for nest domains);
; 1=read in domain initial conditions
IACTIV = 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, ;
; in case of restart: is this domain active?
; ************* MOVING NEST OPTIONS ******************
IMOVE = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ; move domain 0,1
IMOVCO = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, ; 1st move #
; imovei(j,k)=L, ; I-INCREMENT MOVE (DOMAIN J, MOVE NUMBER K) IS L
IMOVEI = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ; I move #1
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ; I move #2
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ; I move #3
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ; I move #4
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ; I move #5
IMOVEJ = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ; J move #1
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ; J move #2
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ; J move #3
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ; J move #4
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ; J move #5
IMOVET = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ; time of move #1
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ; time of move #2
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ; time of move #3
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ; time of move #4
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ; time of move #5
IFEED = 3, ; no feedback; 9-pt weighted average; 1-pt feedback w/o smoothing /
; light smoothing / heavy smoothing - 0,1,2,3, and 4
; ************* MISCELLANEOUS OPTIONS *****************
; The values for the following 5 variables are only used if ISFPAR = 0
; (i.e. only land/water surface catagories)
ZZLND = 0.1, ; roughness length over land in meters
ZZWTR = 0.0001, ; roughness length over water in meters
THINLD = 0.04, ; surface thermal inertia
XMAVA = 0.3, ; moisture availability over land as a decimal fraction of one
CONF = 1.0, ; non-convective precipitation saturation threshold (=1: 100%)
; ************* 4DDA OPTIONS **********************
; THE FIRST DIMENSION (COLUMN) IS THE DOMAIN IDENTIFIER:
; COLUMN 1 = DOMAIN #1, COLUMN 2 = DOMAIN #2, ETC.
; START TIME FOR FDDA (ANALYSIS OR OBS) FOR EACH DOMAIN
; (IN MINUTES RELATIVE TO MODEL INITIAL TIME)
FDASTA=0.,0.,0.,0.,0.,0.,0.,0.,0.,0.
; ENDING TIME FOR FDDA (ANALYSIS OR OBS) FOR EACH DOMAIN
; (IN MINUTES RELATIVE TO MODEL INITIAL TIME)
FDAEND=780.,0.,0.,0.,0.,0.,0.,0.,0.,0.,
; **************** ANALYSIS NUDGING ******************
; THE FIRST DIMENSION (COLUMN) OF THE ARRAYS DENOTES THE
; COLUMN 1 = DOMAIN #1, COLUMN 2 = DOMAIN #2, ETC.
; THE SECOND DIMENSION (ROW OR LINE) EITHER REFERS TO THE 3D VS
; SFC ANALYSIS OR WHICH VARIABLE IS ACCESSED:
; LINE 1 = 3D, LINE 2 = SFC OR
; LINE 1 = U, LINE 2 = V, LINE 3 = T, LINE 4 = Q
; IS THIS A GRID 4DDA RUN? 0 = NO; 1 = YES
; SPECIFY THE TIME IN MINUTES BETWEEN THE INPUT (USUALLY
; FROM INTERP) USED FOR GRID FDDA
DIFTIM=720.,720.,0.,0.,0.,0.,0.,0.,0.,0., ; 3D ANALYSIS NUDGING
180.,180.,0.,0.,0.,0.,0.,0.,0.,0., ; SFC ANALYSIS NUDGING
; GRID NUDGE THE WIND FIELD? 0 = NO; 1 = YES
IWIND=1,1,0,0,0,0,0,0,0,0, ; 3D ANALYSIS NUDGING
1,1,0,0,0,0,0,0,0,0, ; SFC ANALYSIS NUDGING
; NUDGING COEFFICIENT FOR WINDS ANALYSES
GV=2.5E-4,1.0E-4,0.,0.,0.,0.,0.,0.,0.,0., ; 3D ANALYSIS NUDGING
2.5E-4,1.0E-4,0.,0.,0.,0.,0.,0.,0.,0., ; SFC ANALYSIS NUDGING
; GRID NUDGE THE TEMPERATURE FIELD? 0 = NO; 1 = YES
ITEMP=1,1,0,0,0,0,0,0,0,0, ; 3D ANALYSIS NUDGING
1,1,0,0,0,0,0,0,0,0, ; SFC ANALYSIS NUDGING
; NUDGING COEFFICIENT FOR TEMPERATURE ANALYSES
GT=2.5E-4,1.0E-4,0.,0.,0.,0.,0.,0.,0.,0., ; 3D ANALYSIS NUDGING
2.5E-4,1.0E-4,0.,0.,0.,0.,0.,0.,0.,0., ; SFC ANALYSIS NUDGING
IMOIS=1,1,0,0,0,0,0,0,0,0, ; 3D ANALYSIS NUDGING
1,1,0,0,0,0,0,0,0,0, ; SFC ANALYSIS NUDGING
; NUDGING COEFFICIENT FOR THE MIXING RATIO ANALYSES
GQ=1.E-5,1.E-5,0.,0.,0.,0.,0.,0.,0.,0., ; 3D ANALYSIS NUDGING
1.E-5,1.E-5,0.,0.,0.,0.,0.,0.,0.,0., ; SFC ANALYSIS NUDGING
; GRID NUDGE THE ROTATIONAL WIND FIELD? 0 = NO; 1 = YES
IROT=0,0,0,0,0,0,0,0,0,0, ; 3D ANALYSIS NUDGING
; NUDGING COEFFICIENT FOR THE ROTATIONAL COMPONENT OF THE WINDS
GR=5.E6,5.E6,0.,0.,0.,0.,0.,0.,0.,0., ; 3D ANALYSIS NUDGING
; IF GRID NUDGING (I4D(1,1)=1) AND YOU WISH TO EXCLUDE THE
; BOUNDARY LAYER FROM FDDA OF COARSE GRID THREE DIMENSIONAL
; 0 = NO, INCLUDE BOUNDARY LAYER NUDGING
; 1 = YES, EXCLUDE BOUNDARY LAYER NUDGING
INONBL =0,0,0,0,0,0,0,0,0,0, ; U WIND
1,1,1,1,1,1,1,1,1,1, ; TEMPERATURE
1,1,1,1,1,1,1,1,1,1, ; MIXING RATIO
; RADIUS OF INFLUENCE FOR SURFACE ANALYSIS (KM).
; IF I4D(2,1)=1 OR I4D(2,2)=1, ETC, DEFINE RINBLW (KM) USED
; IN SUBROUTINE BLW TO DETERMINE THE HORIZONTAL VARIABILITY
; OF THE SURFACE-ANALYSIS NUDGING AS A FUNCTION OF SURFACE
; DATA DENSITY. OVER LAND, THE STRENGTH OF THE SURFACE-
; ANALYSIS NUDGING IS LINEARLY DECREASED BY 80 PERCENT AT
; THOSE GRID POINTS GREATER THAN RINBLW FROM AN OBSERVATION
; TO ACCOUNT FOR DECREASED CONFIDENCE IN THE ANALYSIS
; IN REGIONS NOT NEAR ANY OBSERVATIONS.
; SET THE NUDGING PRINT FREQUENCY FOR SELECTED DIAGNOSTIC
; PRINTS IN THE GRID (ANALYSIS) NUDGING CODE (IN CGM
; **************** OBSERVATION NUDGING ***************
; INDIVIDUAL OBSERVATION NUDGING. VARIABLES THAT ARE ARRAYS
; USE THE FIRST DIMENSION (COLUMN) AS THE DOMAIN IDENTIFIER:
; COLUMN 1 = DOMAIN #1, COLUMN 2 = DOMAIN #2, ETC.
; IS THIS INDIVIDUAL OBSERVATION NUDGING? 0 = NO; 1 = YES
; OBS NUDGE THE WIND FIELD FROM STATION DATA? 0 = NO; 1 = YES
; NUDGING COEFFICIENT FOR WINDS FROM STATION DATA
GIV =4.E-4,4.E-4,0.,0.,0.,0.,0.,0.,0.,0.,
; OBS NUDGE THE TEMPERATURE FIELD FROM STATION DATA? 0 = NO; 1 = YES
; NUDGING COEFFICIENT FOR TEMPERATURES FROM STATION DATA
GIT =4.E-4,4.E-4,0.,0.,0.,0.,0.,0.,0.,0.,
; OBS NUDGE THE MIXING RATIO FIELD FROM STATION DATA? 0 = NO; 1 = YES
; NUDGING COEFFICIENT FOR THE MIXING RATIO FROM STATION DATA
GIQ =4.E-4,4.E-4,0.,0.,0.,0.,0.,0.,0.,0.,
; THE OBS NUDGING RADIUS OF INFLUENCE IN THE
; HORIZONTAL IN KM FOR CRESSMAN-TYPE DISTANCE-WEIGHTED
; FUNCTIONS WHICH SPREAD THE OBS-NUDGING CORRECTION
; THE OBS NUDGING RADIUS OF INFLUENCE IN THE
; VERTICAL IN SIGMA UNITS FOR CRESSMAN-TYPE DISTANCE-
; WEIGHTED FUNCTIONS WHICH SPREAD THE OBS-NUDGING
; THE HALF-PERIOD OF THE TIME WINDOW, IN MINUTES, OVER
; WHICH AN OBSERVATION WILL AFFECT THE FORECAST VIA OBS
; NUDGING. THAT IS, THE OBS WILL INFLUENCE THE FORECAST
; FROM TIMEOBS-TWINDO TO TIMEOBS+TWINDO. THE TEMPORAL
; WEIGHTING FUNCTION IS DEFINED SUCH THAT THE OBSERVATION
; IS APPLIED WITH FULL STRENGTH WITHIN TWINDO/2. MINUTES
; BEFORE OR AFTER THE OBSERVATION TIME, AND THEN LINEARLY
; DECREASES TO ZERO TWINDO MINUTES BEFORE OR AFTER THE
; THE NUDGING PRINT FREQUENCY FOR SELECTED DIAGNOSTIC PRINT
; IN THE OBS NUDGING CODE (IN CGM TIMESTEPS)
; FREQUENCY (IN CGM TIMESTEPS) TO COMPUTE OBS NUDGING WEIGHTS
IDYNIN=0, ;for dynamic initialization using a ramp-down function to gradually
; turn off the FDDA before the pure forecast, set idynin=1 [y=1, n=0]
DTRAMP=60.,;the time period in minutes over which the
; nudging (obs nudging and analysis nudging) is ramped down
; from one to zero. Set dtramp negative if FDDA is to be ramped
; down BEFORE the end-of-data time (DATEND), and positive if the
; FDDA ramp-down period extends beyond the end-of-data time.
#-----------------------------------------------------------------
# create namelist: mmlif, and remove comments from namelist:
sed -f ../Util/no_comment.sed mmlif | grep [A-Z,a-z] > mmlif.tmp
rm fparam lparam nparam oparam pparam
Num=`echo $i | grep [1-9]$ | sed `s/.*\(.\)/\1/'`
echo "cp $i MMINPUT2_DOMAIN$Num"
#-----------------------------------------------------------------
echo "timex mm5.exe >! mm5.print.out "
timex ./mm5.exe > mm5.print.out 2>&1