PartMC (Particle-resolved Monte Carlo)

Particle-resolved Monte Carlo code for atmospheric aerosol simulation




Initial contribute: 2020-01-03


Is authorship not correct? Feed back


Application-focused categoriesNatural-perspectiveAtmospheric regions

Detailed Description

English {{currentDetailLanguage}} English

Quoted from: 



Cite as: M. West, N. Riemer, J. Curtis, M. Michelotti, and J. Tian (2018) PartMC, versionDOI

Copyright (C) 2005-2018 Nicole Riemer and Matthew West
Portions copyright (C) Andreas Bott, Richard Easter, Jeffrey Curtis, Matthew Michelotti, and Jian Tian
Licensed under the GNU General Public License version 2 or (at your option) any later version.
For details see the file COPYING or


  • N. Riemer, M. West, R. A. Zaveri, and R. C. Easter (2009), Simulating the evolution of soot mixing state with a particle-resolved aerosol model, J. Geophys. Res. 114(D09202),
  • N. Riemer, M. West, R. A. Zaveri, and R. C. Easter (2010), Estimating black carbon aging time-scales with a particle-resolved aerosol model, J. Aerosol Sci. 41(1), 143-158,
  • R. A. Zaveri, J. C. Barnard, R. C. Easter, N. Riemer, and M. West (2010), Particle-resolved simulation of aerosol size, composition, mixing state, and the associated optical and cloud condensation nuclei activation properties in an evolving urban plume, J. Geophys. Res. 115(D17210),
  • R. E. L. DeVille, N. Riemer, and M. West, Weighted Flow Algorithms (WFA) for stochastic particle coagulation, J. Comp. Phys. 230(23), 8427-8451, 2011,
  • J. Ching, N. Riemer, and M. West, Impacts of black carbon mixing state on black carbon nucleation scavenging: Insights from a particle-resolved model, J. Geophys. Res. 117(D23209), 2012,
  • M. D. Michelotti, M. T. Heath, and M. West, Binning for efficient stochastic multiscale particle simulations, Multiscale Model. Simul. 11(4), 1071-1096, 2013,
  • N. Riemer and M. West, Quantifying aerosol mixing state with entropy and diversity measures, Atmos. Chem. Phys. 13, 11423-11439, 2013,
  • J. Tian, N. Riemer, M. West, L. Pfaffenberger, H. Schlager, and A. Petzold, Modeling the evolution of aerosol particles in a ship plume using PartMC-MOSAIC, Atmos. Chem. Phys. 14, 5327-5347, 2014,
  • R. M. Healy, N. Riemer, J. C. Wenger, M. Murphy, M. West, L. Poulain, A. Wiedensohler, I. P. O'Connor, E. McGillicuddy, J. R. Sodeau, and G. J. Evans, Single particle diversity and mixing state measurements, Atmos. Chem. and Phys. 14, 6289-6299, 2014,
  • J. H. Curtis, M. D. Michelotti, N. Riemer, M. Heath, and M. West, Accelerated simulation of stochastic particle removal processes in particle-resolved aerosol models, J. Comp. Phys. 322, 21-32, 2016,
  • J. Ching, N. Riemer, and M. West, Black carbon mixing state impacts on cloud microphysical properties: Effects of aerosol plume and environmental conditions, J. Geophys. Res. 121(10), 5990-6013, 2016
  • J. Ching, J. Fast, M. West, and N. Riemer, Metrics to quantify the importance of mixing state for CCN activity, Atmos. Chem. and Phys. 17, 7445-7458, 2017
  • J. Tian, B. T. Brem, M. West, T. C. Bond, M. J. Rood, and N. Riemer, Simulating aerosol chamber experiments with the particle-resolved aerosol model PartMC, Aerosol Sci. Technol. 51(7), 856-867, 2017
  • J. H. Curtis, N. Riemer, and M. West, A single-column particle-resolved model for simulating the vertical distribution of aerosol mixing state: WRF-PartMC-MOSAIC-SCM v1.0, Geosci. Model Dev. 10, 4057-4079, 2017
  • J. Ching, M. West, and N. Riemer, Quantifying impacts of aerosol mixing state on nucleation-scavenging of black carbon aerosol particles, Atmosphere 9(1), 17, 2018
  • M. Hughes, J. K. Kodros, J. R. Pierce, M. West, and N. Riemer, Machine learning to predict the global distribution of aerosol mixing state metrics, Atmosphere 9(1), 15, 2018

Running PartMC with Docker

This is the fastest way to get running.

  • Step 1: Install Docker Community Edition.

  • Step 2: (Optional) Run the PartMC test suite with:

      docker run -it --rm compdyn/partmc bash -c 'cd /build; make test'
  • Step 3: Run a scenario like the following. This example uses partmc/scenarios/4_chamber. This mounts the current directory ($PWD, replace with %cd% on Windows) into /run inside the container, changes into that directory, and then runs PartMC.

      cd partmc/scenarios/4_chamber
      docker run -it --rm -v $PWD:/run compdyn/partmc bash -c 'cd /run; /build/partmc chamber.spec'

In the above docker run command the arguments are:

  • -it: activates "interactive" mode so Ctrl-C works to kill the command
  • --rm: remove temporary docker container files after running
  • -v LOCAL:REMOTE: mount the LOCAL directory to the REMOTE directory inside the container
  • compdyn/partmc: the docker image to run
  • bash -c 'COMMAND': run COMMAND inside the docker container

The directory structure inside the docker container is:

/partmc           # a copy of the partmc git source code repository
/build            # the diretory in which partmc was compiled
/build/partmc     # the compiled partmc executable
/run              # the default diretory to run in


Required dependencies:

Optional dependencies:


  1. Install cmake and NetCDF (see above). The NetCDF libraries are required to compile PartMC. The netcdf.mod Fortran 90 module file is required, and it must be produced by the same compiler being used to compile PartMC.

  2. Unpack PartMC:

     tar xzvf partmc-2.5.0.tar.gz
  3. Change into the main PartMC directory (where this README file is located):

     cd partmc-2.5.0
  4. Make a directory called build and change into it:

     mkdir build
     cd build
  5. If desired, set environment variables to indicate the install locations of supporting libraries. If running echo $SHELL indicates that you are running bash, then you can do something like:

     export NETCDF_HOME=/
     export MOSAIC_HOME=${HOME}/mosaic-2012-01-25
     export SUNDIALS_HOME=${HOME}/opt
     export GSL_HOME=${HOME}/opt

    Of course the exact directories will depend on where the libraries are installed. You only need to set variables for libraries installed in non-default locations, and only for those libraries you want to use. Everything except NetCDF is optional.

    If echo $SHELL instead is tcsh or similar, then the environment variables can be set like setenv NETCDF_HOME / and similarly.

  6. Run cmake with the main PartMC directory as an argument (note the double-c):

     ccmake ..
  7. Inside ccmake press c to configure, edit the values as needed, press c again, then g to generate. Optional libraries can be activated by setting the ENABLE variable to ON. For a parallel build, toggle advanced mode with t and set the CMAKE_Fortran_COMPILER to mpif90, then reconfigure.

  8. Optionally, enable compiler warnings by pressing t inside ccmake to enable advanced options and then setting CMAKE_Fortran_FLAGS to:

     -O2 -g -fimplicit-none -W -Wall -Wconversion -Wunderflow -Wimplicit-interface -Wno-compare-reals -Wno-unused -Wno-unused-parameter -Wno-unused-dummy-argument -fbounds-check
  9. Compile PartMC and test it as follows. Some tests may fail due to bad random initial conditions, so re-run the tests a few times to see if failures persist.

     make test
  10. To run just a single set of tests do something like:

     ctest -R bidisperse   # argument is a regexp for test names
  11. To see what make is doing run it like:

    VERBOSE=1 make
  12. To run tests with visible output or to make some plots from the tests run them as:

    cd test_run/emission
    ./            # similarly for other tests
    gnuplot -persist plot_species.gnuplot # etc...
  13. To run full scenarios, do, for example:

    cd ../scenarios/1_urban_plume


The main partmc command reads .spec files and does the run specified therein. Either particle-resolved runs, sectional-code runs, or exact solutions can be generated. A run produces one NetCDF file per output timestep, containing per-particle data (from particle-resolved runs) or binned data (from sectional or exact runs). The extract_* programs can read these per-timestep NetCDF files and output ASCII data (the extract_sectional_* programs are used for sectional and exact model output).



PartMC team (2020). PartMC (Particle-resolved Monte Carlo), Model Item, OpenGMS,


Initial contribute : 2020-01-03



Is authorship not correct? Feed back

QR Code


{{'; ')}}



Drop the file here, orclick to upload.
Select From My Space
+ add


Cancel Submit
{{htmlJSON.Cancel}} {{htmlJSON.Submit}}
{{htmlJSON.Localizations}} + {{htmlJSON.Add}}
{{ item.label }} {{ item.value }}
{{htmlJSON.Cancel}} {{htmlJSON.Submit}}
名称 别名 {{tag}} +
系列名 版本号 目的 修改内容 创建/修改日期 作者
摘要 详细描述
{{tag}} + 添加关键字
* 时间参考系
* 空间参考系类型 * 空间参考系名称

起始日期 终止日期 进展 开发者
* 是否开源 * 访问方式 * 使用方式 开源协议 * 传输方式 * 获取地址 * 发布日期 * 发布者

编号 目的 修改内容 创建/修改日期 作者

时间分辨率 时间尺度 时间步长 时间范围 空间维度 格网类型 空间分辨率 空间尺度 空间范围
{{tag}} +
* 类型

* 名称 * 描述
示例描述 * 名称 * 类型 * 值/链接 上传

{{htmlJSON.Cancel}} {{htmlJSON.Submit}}
Title Author Date Journal Volume(Issue) Pages Links Doi Operation
{{htmlJSON.Cancel}} {{htmlJSON.Submit}}
{{htmlJSON.Add}} {{htmlJSON.Cancel}}


Authors:  {{articleUploading.authors[0]}}, {{articleUploading.authors[1]}}, {{articleUploading.authors[2]}}, et al.

Journal:   {{articleUploading.journal}}

Date:   {{}}

Page range:   {{articleUploading.pageRange}}

Link:   {{}}

DOI:   {{articleUploading.doi}}

Yes, this is it Cancel

The article {{articleUploading.title}} has been uploaded yet.

{{htmlJSON.Cancel}} {{htmlJSON.Confirm}}