MOZART-4 is available to the community, however, it is no longer being developed or supported.  We highly recommend that CAM-chem be used instead.


The MOZART-4 description paper has been published in Geoscientific Model Development [Emmons et al., 2010].


Documentation is provided with the source code (see Download section below).

Terms of Use

The source code for MOZART-4 is available to the community, with the following terms:

  • The MOZART-4 source code is available to the scientific community to be used solely for educational, research, and not-for-profit purposes.
  • Users of MOZART-4 are expected to report any bugs or errors found in the code to the development team (emmons(at); stacy(at)
  • The MOZART-4 source code is released with no warranty on its use.
  • Users are asked to not provide the base code to other users outside their home institution, but to direct them to download their own copy, so we can keep an accurate record of the user community and be sure they get update and bug reports directly. If users make any improvements to the code they are also invited to share them with the development team (emmons(at); stacy(at) to be considered in future releases.


Computer Requirements and Performance

MOZART currently runs on a variety of platforms. For standard, multi-year simulations at 2.8x2.8 (T42) resolution, you will need access to a supercomputer with large amounts of disk space and/or tape storage (~200 GB). Short, or coarse-resolution, simulations or reduced-chemistry versions may be run on Linux workstations. Typically, MOZART is run on computers such as the NCAR supercomputer yellowstone.

MOZART-4 has been tested on computing platforms ranging from a single cpu on a desktop machine to more than one hundred cpus on a state of the art supercomputer. Whereas one typically does not have to be concerned with memory or software requirements on supercomputer systems that is not the case for desktop workstations. No matter what the computing environment the following are requisites for running MOZART-4:

  • the Linux or Unix operating system
  • the cpp utility - this is part on any Unix/Linux system
  • the gnu makefile utility
  • the netcdf, version 3.x, preferrably 3.5.x, utility
  • a fortran 90 compiler

We have not tested MOZART with any Microsoft operating system. The Apple OS X operating system is suitable for running MOZART. Fortran 90 compilers are part of any supercompter system such as those from IBM, HP, SGI, ... . For desktop systems MOZART-4 has been compiled and is configured to use either the Portland Group, Lahey/Fujitsu, or Intel fortran 90 or 95 compilers. All compilers produce similar execution times with normal optimizations.

In addition to the above software requirements there are hardware recommendations. For desktop systems it is strongly recommended they have at least 2GB of main memory per CPU and at least 50 gigabytes of hard disk storage, with 100-200 GB preferable.

MOZART-4 is an "offline" model in that it requires dynamical and other data to be periodically input during a simulation. The standard dynamical datasets which drive MOZART-4 require about 6 gigabytes of disk storage for a simulation year. As supplied there is a standard output specification that results in about 25 gigabytes of output per simulation year. This is for the standard horizontal resolution of 128 x 64 and 28 vertical levels. Output is for variables that are output on a once a day and monthly basis. MOZART-4 has a preprocessor that among other capabilties allows the user to modify the "standard" output. Thus output could be considerably more than the "standard" 25 gigabyte per simulation year measure.

On currently available 8-CPU linux workstations a year simulation of MOZART-4 takes 2-3 wall clock days. By comparison 64 IBM Power4 cpus will finish a year simulation in about 7.5 wall clock hours.



 Source Code:

 Input files required for running MOZART-4:


GEOS5 Meteorological Fields

GEOS-5 and MERRA meteorological fields have been processed for use with MOZART-4 (and CAM-chem) and are available on the Earth System Grid (  These files are available at 0.5x0.5 degree and 1.9x2.5 degree resolutions.  These files have 72 levels, but only 56 levels are needed for running MOZART-4.  In the preprocessor input file specify, under "Spatial Dimensions" (for 1.9x2.5): 

    Longitude points = 144

    Latitude  points = 96

    Vertical  points = 56

This will automatically use the lowest 56 levels of the met fields.  Then rerun the preprocessor and build a new version of the model using the new preprocessor output.

In the namelist file:

1) modify the dyn_flsp%nl_filename, dyn_flnm_prefix, etc. values to point to the GEOS5 files

2) remove the parameters oronm, phisnm, shflxnm, and qflxsc, as the GEOS5 files have these variables with the expected names and units


Using MOZART-4 output

Output format

MOZART-4 simulation results are written to netcdf 'history' files (e.g.,, h[abcde], where NNNN=0001 to 9999).  All species (gases and aerosols) are output in Volume Mixing Ratio (VMR, meaning mole/mole), as indicated by the variable name (e.g., O3_VMR_avrg) and the units attribute of the variable ('VMR', or 'mol/mol').  

Restart files are written at the end of each simulation, and as requested during the simulation.  The values in these files are all in mass mixing ratio (kg/kg).  Any restart file can be used as an initial conditions file, without any modification.  

Pressure profiles

To calculate pressure of each model grid box:

pres_Pa[ilon, ilat, ilev, itim] = hyam[ilev] * P0 + hybm[ilev] * PS[ilon, ilat, itim]

pres_hPa = pres_Pa * 0.01 

To calculate pressure at interfaces of each model grid box: 

pres_int_Pa[ilon, ilat, ilev, itim] = hyai[ilev] * P0 + hybi[ilev] * PS[ilon, ilat, itim]

Converting mixing ratio to concentration 

To convert VMR [mol/mol] to concentration [molecules/cm3]

conc[ilon, ilat, ilev, itim] = vmr[ilon, ilat, ilev, itim] * pres_Pa[ilon, ilat, ilev, itim]  / kboltz / temp[ilon, ilat, ilev, itim] * 1.e-6

where kboltz = 1.381e-23  [J/K]

Converting aerosols in VMR to density

aerosol_density[ug/m3] = VMR * P[Pa] / Rgas[J/K-kg] /T[K] * mw_aerosol[g/mole] /mw_air[g/mole] * 1E9[ug/kg]


Rgas = 286.9969 [J/K/kg]

mw_air = 29.  [g/mole]

For SO4, mw_aerosol = 96

For NH4NO3, mw_aerosol = 80

SOA is treated as C12, mw_aerosol = 144

The CBs and OCs are C, mw_aerosol =12.

Sea salt is NaCl, mw_aerosol = 58.

Dust is treated with mw_aerosol = 34.

Using the mass diagnostics

Please see the preprocessor documentation for more explanation of these terms and how to save them.

Production and Loss rates (e.g., O3_PROD_avrg, O3_LOSS_avrg) are saved as [molecules/cm3/s].  To convert to ppbv/day, for example, use the inverse of the VMR-to-concentration relation above.

Mass diagnostics ADV, CHM, CNV, DIF, DPS are in [kg/grid-box/model-timestep]. 

Mass diagnostics XFLX, YFLX, ZFLX are the fluxes across grid box interfaces in [kg/grid-area/timestep].  For XFLX gridarea is lat*lev, YFLX lon*lev, ZFLX lon*lat. 

The fluxes for a grid box centered at lon[i],lat[j], lev[k] (e.g., xflx(i,j,k), yflx(i,j,k) and zflx(i,j,k)) correspond to the fluxes across the west, south and bottom of the grid box (remember k runs from top of the model to surface).  Therefore, there are no values for the east, north and top edges of the model.  So, the net fluxes for a grid box are:

dXflx[ilon,ilat,ilev] = XFLX[ilon,ilat,ilev] - XFLX[ilon+1,ilat,ilev]

dYflx[ilon,ilat,ilev] = YFLX[ilon,ilat,ilev] - YFLX[ilon,ilat+1,ilev]

dZflx[ilon,ilat,ilev] = ZFLX[ilon,ilat,ilev-1] - ZFLX[ilon,ilat,ilev]

ADV is approximately equal to (dXflx + dYflx + dZflx).

DRY_DEP_FLX [kg/gridarea/timestep] is the flux due to dry deposition across the bottom of the model surface layer.

WETDEP_FLX [kg/m2/s] is the column-integrated loss due to wet deposition.

Volume [m3] of each gridbox can be calculated by:

vol[ilon, ilat, ilev] = (Rearth*cos(lat[ilat]) * dlon)  * (Rearth * dlat) * Rgas * temp[ilon, ilat, ilev] * log(pres_int_Pa[ilev+1]/ pres_int_Pa[ilev]) / grav 

where: Rearth = 6.37e6 [m]

            Rgas = 286.9969 [J/K/kg]

            grav = 9.80616 [m/s2]

            dlon, dlat are model grid lon and lat spacing in radians

Aerosol optical depth

AOD can be included in output just in the runtime namelist (there are no settings in the preprocessor input files), with the other additional variables included with hsttimav(1)%list.

The variables are:


DTCBS - AOD from CB1+CB2

DTOCS - AOD from OC1+OC2

DTSO4 - AOD from SO4


DTSAL - AOD from Sea Salt (SA1+SA2+SA3+SA4)


The AOD is calculated only when the photolysis rates are calculated (SZA < 90), so averages (daily or monthly) of the DT* variables need to be scaled by the fraction of daylight hours per day.  The variable 'FRACDAY' has this information and should be saved anytime you save DT* variables so you can divide the AOD by it.

Calculating Sea Salt Emissions

Sea Salt emissions can be output by specifying in the runtime namelist, in the hsttimav or hstinst variable list: SA1_SRC, SA2_SRC, SA3_SRC, SA4_SRC.  The units in the varialbe attributes in the output files are wrong -- these sources are saved as the forcing that is applied to the lowest model level ??(kg/m3/model-timestep).

To convert this source to standard emissions units (kg/m2/s):

emis_kgarea(ilon,ilat) = saX_src(ilon,ilat) * delp / grav / dtime


delp = 100000. * ( hyai(nlev-1) - hyai(nlev-2) ) + PS(ilon,ilat) * (hybi(nlev-1) - hybi(nlev-2) )  ?;depth of lowest model layer

grav = 9.80616    ; (m/s^2)

dtime = model timestep (probably 1200 s)




ACOM | Atmospheric Chemistry Observations & Modeling