PartMC

Particle-resolved Monte Carlo code for atmospheric aerosol simulation.
https://github.com/compdyn/partmc

Category: Atmosphere
Sub Category: Atmospheric Chemistry and Aerosol

Keywords from Contributors

atmospheric-modelling aerosol-modelling atmospheric-physics particle-system pybind11 research sundials atmospheric-science

Last synced: about 20 hours ago
JSON representation

Repository metadata

Particle-resolved stochastic atmospheric aerosol model

README.md

PartMC

PartMC: Particle-resolved Monte Carlo code for atmospheric aerosol simulation

Latest version Docker build status Github Actions Status License DOI

Version 2.8.0
Released 2024-02-23

Source: https://github.com/compdyn/partmc

Homepage: http://lagrange.mechse.illinois.edu/partmc/

Cite as: M. West, N. Riemer, J. Curtis, M. Michelotti, and J. Tian (2024) PartMC, version, DOI

Copyright (C) 2005-2024 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
http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.

References:

  • 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),
    http://dx.doi.org/10.1029/2008JD011073.
  • 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, http://dx.doi.org/10.1016/j.jaerosci.2009.08.009.
  • 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),
    http://dx.doi.org/10.1029/2009JD013616.
  • R. E. L. DeVille, N. Riemer, and M. West (2011) Weighted Flow
    Algorithms (WFA) for stochastic particle coagulation,
    J. Comp. Phys. 230(23), 8427-8451,
    http://dx.doi.org/10.1016/j.jcp.2011.07.027
  • J. Ching, N. Riemer, and M. West (2012) Impacts of black carbon
    mixing state on black carbon nucleation scavenging: Insights from
    a particle-resolved model, J. Geophys. Res. 117(D23209),
    http://dx.doi.org/10.1029/2012JD018269
  • M. D. Michelotti, M. T. Heath, and M. West (2013) Binning for
    efficient stochastic multiscale particle simulations, Multiscale
    Model. Simul.
    11(4), 1071-1096,
    http://dx.doi.org/10.1137/130908038
  • N. Riemer and M. West (2013) Quantifying aerosol mixing state
    with entropy and diversity measures, Atmos. Chem. Phys. 13,
    11423-11439, http://dx.doi.org/10.5194/acp-13-11423-2013
  • J. Tian, N. Riemer, M. West, L. Pfaffenberger, H. Schlager, and
    A. Petzold (2014) Modeling the evolution of aerosol particles in
    a ship plume using PartMC-MOSAIC, Atmos. Chem. Phys. 14,
    5327-5347, http://dx.doi.org/10.5194/acp-14-5327-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 (2014) Single particle diversity
    and mixing state measurements, Atmos. Chem. and Phys. 14,
    6289-6299, http://dx.doi.org/10.5194/acp-14-6289-2014
  • J. H. Curtis, M. D. Michelotti, N. Riemer, M. Heath, and M. West
    (2016) Accelerated simulation of stochastic particle removal
    processes in particle-resolved aerosol models, J. Comp. Phys.
    322, 21-32, http://dx.doi.org/10.1016/j.jcp.2016.06.029
  • J. Ching, N. Riemer, and M. West (2016) Black carbon mixing state
    impacts on cloud microphysical properties: Effects of aerosol
    plume and environmental conditions, J. Geophys. Res. 121(10),
    5990-6013, http://dx.doi.org/10.1002/2016JD024851
  • J. Ching, J. Fast, M. West, and N. Riemer (2017) Metrics to
    quantify the importance of mixing state for CCN activity, Atmos.
    Chem. and Phys.
    17, 7445-7458,
    http://dx.doi.org/10.5194/acp-17-7445-2017
  • J. Tian, B. T. Brem, M. West, T. C. Bond, M. J. Rood, and
    N. Riemer (2017) Simulating aerosol chamber experiments with the
    particle-resolved aerosol model PartMC, Aerosol Sci. Technol.
    51(7), 856-867, http://dx.doi.org/10.1080/02786826.2017.1311988
  • J. H. Curtis, N. Riemer, and M. West (2017) 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,
    http://dx.doi.org/10.5194/gmd-10-4057-2017
  • J. Ching, M. West, and N. Riemer (2018) Quantifying impacts of
    aerosol mixing state on nucleation-scavenging of black carbon
    aerosol particles, Atmosphere 9(1), 17,
    http://dx.doi.org/10.3390/atmos9010017
  • M. Hughes, J. K. Kodros, J. R. Pierce, M. West, and N. Riemer
    (2018) Machine learning to predict the global distribution of
    aerosol mixing state metrics, Atmosphere 9(1), 15,
    http://dx.doi.org/10.3390/atmos9010015
  • R. E. L. DeVille, N. Riemer, and M. West (2019) Convergence of a
    generalized Weighted Flow Algorithm for stochastic particle
    coagulation, Journal of Computational Dynamics 6(1), 69-94,
    http://dx.doi.org/10.3934/jcd.2019003
  • N. Riemer, A. P. Ault, M. West, R. L. Craig, and J. H. Curtis
    (2019) Aerosol mixing state: Measurements, modeling, and impacts,
    Reviews of Geophysics 57(2), 187-249,
    http://dx.doi.org/10.1029/2018RG000615
  • C. Shou, N. Riemer, T. B. Onasch, A. J. Sedlacek, A. T. Lambe,
    E. R. Lewis, P. Davidovits, and M. West (2019) Mixing state
    evolution of agglomerating particles in an aerosol chamber:
    Comparison of measurements and particle-resolved simulations,
    Aerosol Science and Technology 53(11), 1229-1243,
    http://dx.doi.org/10.1080/02786826.2019.1661959
  • J. T. Gasparik, Q. Ye, J. H. Curtis, A. A. Presto, N. M. Donahue,
    R. C. Sullivan, M. West, and N. Riemer (2020) Quantifying errors
    in the aerosol mixing-state index based on limited particle
    sample size, Aerosol Science and Technology 54(12), 1527-1541,
    http://dx.doi.org/10.1080/02786826.2020.1804523
  • Z. Zheng, J. H. Curtis, Y. Yao, J. T. Gasparik, V. G. Anantharaj,
    L. Zhao, M. West, and N. Riemer (2021) Estimating submicron
    aerosol mixing state at the global scale with machine learning
    and earth system modeling, Earth and Space Science 8(2),
    e2020EA001500, http://dx.doi.org/10.1029/2020EA001500

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

Dependencies

Required dependencies:

Optional dependencies:

Installation

  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.8.0.tar.gz
    
  3. Change into the main PartMC directory (where this README file is
    located):

     cd partmc-2.8.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.

     make
     make test
    
  10. To run just a single test 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 follows. Note that tests often rely on earlier
    tests in the same directory, so always run test_1, then
    test_2, etc. Tests occasionally fail due to random sampling, so
    re-run the entire sequence after failures. For example:

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

    cd ../scenarios/1_urban_plume
    ./1_run.sh
    

Usage

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).

Python bindings

The PyPartMC project offers
pip-installable Python bindings to PartMC. Both source and binary
packages are available and ship with all PartMC dependencies included.
PyPartMC exposes internal components of PartMC (utility routines and
derived types) which then can serve as building blocks to develop PartMC
simulations in Python. Time stepping can be performed either using the
internal PartMC time-stepper or externally within a Python loop. The
latter allows to couple the simulation with external Python components
in each timestep. PyPartMC features examples developed as Jupyter notebooks.
Snippets of code provided in the README file depict how to use PyPartMC
from Julia (using PyCall.jl) and Matlab (using Matlab's built-in Python bridge).


Owner metadata


GitHub Events

Total
Last Year

Committers metadata

Last synced: 8 days ago

Total Commits: 2,694
Total Committers: 10
Avg Commits per committer: 269.4
Development Distribution Score (DDS): 0.219

Commits in past year: 8
Committers in past year: 2
Avg Commits per committer in past year: 4.0
Development Distribution Score (DDS) in past year: 0.125

Name Email Commits
Matthew West m****t@i****u 2103
Nicole Riemer n****r@i****u 409
Jeff Curtis j****2@i****u 98
Joseph Ching c****1@i****u 28
Matthew Michelotti m****3@i****u 22
Rahul Zaveri R****i@p****v 17
Sylwester Arabas s****s@u****l 8
Jian Tian j****4@i****u 7
Zach D'Aquino 1****2 1
Alex Hirzel a****x@h****s 1

Committer domains:


Issue and Pull Request metadata

Last synced: 2 days ago

Total issues: 59
Total pull requests: 61
Average time to close issues: 8 months
Average time to close pull requests: 6 months
Total issue authors: 9
Total pull request authors: 12
Average comments per issue: 2.88
Average comments per pull request: 0.98
Merged pull request: 43
Bot issues: 0
Bot pull requests: 0

Past year issues: 4
Past year pull requests: 8
Past year average time to close issues: N/A
Past year average time to close pull requests: about 1 month
Past year issue authors: 3
Past year pull request authors: 4
Past year average comments per issue: 0.0
Past year average comments per pull request: 0.13
Past year merged pull request: 2
Past year bot issues: 0
Past year bot pull requests: 0

More stats: https://issues.ecosyste.ms/repositories/lookup?url=https://github.com/compdyn/partmc

Top Issue Authors

  • cguzman95 (27)
  • mattldawson (15)
  • slayoo (7)
  • jcurtis2 (4)
  • mwest1066 (2)
  • pbosler (1)
  • zhonghua-zheng (1)
  • alhirzel (1)
  • tangwhiap (1)

Top Pull Request Authors

  • jcurtis2 (22)
  • slayoo (10)
  • mattldawson (8)
  • mwest1066 (6)
  • cguzman95 (5)
  • tangwhiap (3)
  • zhonghua-zheng (2)
  • zdaq12 (1)
  • odiazib (1)
  • Jim-Xu (1)
  • jtgasparik (1)
  • alhirzel (1)

Top Issue Labels

  • enhancement (27)
  • bug (11)
  • question (7)
  • no pressure (4)
  • documentation (2)
  • help wanted (2)
  • outdated (2)

Top Pull Request Labels

  • bug (2)

Dependencies

.github/workflows/camp.yml actions
  • actions/checkout v1 composite
.github/workflows/cloud_parcel.yml actions
  • actions/checkout v1 composite
.github/workflows/doc.yml actions
  • actions/checkout v1 composite
.github/workflows/images.yml actions
  • actions/checkout v2 composite
  • docker/build-push-action v2 composite
  • docker/login-action v1 composite
  • docker/setup-buildx-action v1 composite
  • docker/setup-qemu-action v1 composite
.github/workflows/main.yml actions
  • actions/checkout v1 composite
.github/workflows/mpi.yml actions
  • actions/checkout v1 composite
Dockerfile docker
  • fedora 33 build
docker-compose.test.yml docker

Score: 6.835184586147302