{"id":146953,"name":"APCEMM","description":"Aims to assess the chemical and microphysical perturbations introduced by a conventional aircraft, equipped with gas turbine engines.","url":"https://github.com/mit-lae/apcemm","last_synced_at":"2026-05-26T22:30:31.015Z","repository":{"id":82725136,"uuid":"472506554","full_name":"MIT-LAE/APCEMM","owner":"MIT-LAE","description":"Aircraft Plume Chemistry, Emissions, and Microphysics Model","archived":false,"fork":false,"pushed_at":"2026-05-13T21:25:01.000Z","size":26603,"stargazers_count":17,"open_issues_count":15,"forks_count":23,"subscribers_count":4,"default_branch":"main","last_synced_at":"2026-05-17T18:33:02.364Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/MIT-LAE.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2022-03-21T20:46:07.000Z","updated_at":"2026-05-13T21:25:06.000Z","dependencies_parsed_at":"2023-09-24T03:33:12.129Z","dependency_job_id":"bb300e84-cdd1-425a-8cf0-73d479613009","html_url":"https://github.com/MIT-LAE/APCEMM","commit_stats":{"total_commits":870,"total_committers":15,"mean_commits":58.0,"dds":0.1816091954022988,"last_synced_commit":"0d22cd8b29a88e0311eb31beb45d75df2b0e57e9"},"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/MIT-LAE/APCEMM","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MIT-LAE%2FAPCEMM","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MIT-LAE%2FAPCEMM/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MIT-LAE%2FAPCEMM/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MIT-LAE%2FAPCEMM/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/MIT-LAE","download_url":"https://codeload.github.com/MIT-LAE/APCEMM/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MIT-LAE%2FAPCEMM/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33228925,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-19T15:49:41.270Z","status":"ssl_error","status_checked_at":"2026-05-19T15:49:22.917Z","response_time":58,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"owner":{"login":"MIT-LAE","name":"MIT LAE","uuid":"98771357","kind":"organization","description":"MIT Laboratory for Aviation and the Environment","email":null,"website":"https://lae.mit.edu","location":"United States of America","twitter":"MIT_LAE","company":null,"icon_url":"https://avatars.githubusercontent.com/u/98771357?v=4","repositories_count":2,"last_synced_at":"2023-03-03T23:39:24.458Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/MIT-LAE","funding_links":[],"total_stars":null,"followers":null,"following":null,"created_at":"2022-11-14T06:44:13.653Z","updated_at":"2023-03-03T23:39:24.475Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/MIT-LAE","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/MIT-LAE/repositories"},"packages":[],"commits":{"id":1452591,"full_name":"mit-lae/apcemm","default_branch":"main","total_commits":905,"total_committers":14,"total_bot_commits":0,"total_bot_committers":0,"mean_commits":64.64285714285714,"dds":0.21325966850828726,"past_year_total_commits":29,"past_year_total_committers":4,"past_year_total_bot_commits":0,"past_year_total_bot_committers":0,"past_year_mean_commits":7.25,"past_year_dds":0.3793103448275862,"last_synced_at":"2026-05-17T18:09:28.687Z","last_synced_commit":"adf714b2255895d73d2c1bf6fbe9d7453f302879","created_at":"2023-12-05T11:20:36.460Z","updated_at":"2026-05-17T18:08:19.957Z","committers":[{"name":"Thibaud Fritz","email":"fritzt@mit.edu","login":"fritzt","count":712},{"name":"Akshat Agarwal","email":"aa681@mit.edu","login":"aagarwal93","count":53},{"name":"Sebastian D. Eastham","email":"s.eastham@imperial.ac.uk","login":"sdeastham","count":36},{"name":"michaelxu3","email":"45857443+michaelxu3","login":"michaelxu3","count":19},{"name":"Ian Ross","email":"ian@skybluetrades.net","login":"ian-ross","count":19},{"name":"lrobion","email":"louisrobion@yahoo.fr","login":"lrobion","count":14},{"name":"Akshat Agarwal","email":"aa681@hex.mit.edu","login":null,"count":11},{"name":"Caleb Akhtar Martinez","email":"46966291+Calebsakhtar","login":"Calebsakhtar","count":10},{"name":"ca525","email":"ca525@cam.ac.uk","login":"ca525","count":10},{"name":"Raymond Speth","email":"speth@mit.edu","login":"speth","count":9},{"name":"Dylan Drake","email":"ddrake@mitre.org","login":"ddrake-mitre","count":6},{"name":"Louis Robion","email":"lrobion@mit.edu","login":null,"count":4},{"name":"Dylan Drake","email":"dylan.c.drake@gmail.com","login":"dcdrake","count":1},{"name":"Vincent Meijer","email":"vmeijer@nehalem002.mit.edu","login":null,"count":1}],"past_year_committers":[{"name":"Ian Ross","email":"ian@skybluetrades.net","login":"ian-ross","count":18},{"name":"Caleb Akhtar Martinez","email":"46966291+Calebsakhtar","login":"Calebsakhtar","count":6},{"name":"lrobion","email":"94480966+lrobion","login":"lrobion","count":3},{"name":"Sebastian David Eastham","email":"s.eastham@imperial.ac.uk","login":"sdeastham","count":2}],"commits_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories/mit-lae%2Fapcemm/commits","host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-05-23T00:00:39.628Z","repositories_count":6239526,"commits_count":884345316,"contributors_count":34898200,"owners_count":1156516,"icon_url":"https://github.com/github.png","host_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories"}},"issues_stats":{"full_name":"mit-lae/apcemm","html_url":"https://github.com/mit-lae/apcemm","last_synced_at":"2026-05-17T18:05:25.440Z","status":"active","issues_count":32,"pull_requests_count":74,"avg_time_to_close_issue":5950321.857142857,"avg_time_to_close_pull_request":945812.8360655737,"issues_closed_count":21,"pull_requests_closed_count":61,"pull_request_authors_count":6,"issue_authors_count":8,"avg_comments_per_issue":1.71875,"avg_comments_per_pull_request":1.6621621621621623,"merged_pull_requests_count":52,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":8,"past_year_pull_requests_count":28,"past_year_avg_time_to_close_issue":120403.33333333333,"past_year_avg_time_to_close_pull_request":909167.8823529412,"past_year_issues_closed_count":3,"past_year_pull_requests_closed_count":17,"past_year_pull_request_authors_count":5,"past_year_issue_authors_count":4,"past_year_avg_comments_per_issue":1.5,"past_year_avg_comments_per_pull_request":0.5,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":14,"created_at":"2023-12-05T11:20:38.279Z","updated_at":"2026-05-17T18:05:25.440Z","repository_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/mit-lae%2Fapcemm","issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/mit-lae%2Fapcemm/issues","issue_labels_count":{"bug":1},"pull_request_labels_count":{},"issue_author_associations_count":{"NONE":12,"COLLABORATOR":11,"CONTRIBUTOR":9},"pull_request_author_associations_count":{"CONTRIBUTOR":26,"NONE":21,"COLLABORATOR":17,"MEMBER":10},"issue_authors":{"sdeastham":11,"Calebsakhtar":8,"lrobion":6,"chinahg":2,"VincentMeijer":2,"thabbott":1,"Quentin-delaunay":1,"trdean1":1},"pull_request_authors":{"Calebsakhtar":26,"sdeastham":17,"lrobion":14,"ian-ross":11,"coco-yeung":4,"ddrake-mitre":2},"host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-05-23T00:00:30.079Z","repositories_count":14678103,"issues_count":34083680,"pull_requests_count":111567066,"authors_count":11271697,"icon_url":"https://github.com/github.png","host_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories","owners_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/owners","authors_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors"},"past_year_issue_labels_count":{"bug":1},"past_year_pull_request_labels_count":{},"past_year_issue_author_associations_count":{"CONTRIBUTOR":5,"NONE":2,"COLLABORATOR":1},"past_year_pull_request_author_associations_count":{"CONTRIBUTOR":12,"MEMBER":9,"NONE":4,"COLLABORATOR":1},"past_year_issue_authors":{"lrobion":4,"chinahg":2,"Calebsakhtar":1,"sdeastham":1},"past_year_pull_request_authors":{"ian-ross":9,"Calebsakhtar":7,"lrobion":5,"coco-yeung":4,"sdeastham":1},"maintainers":[{"login":"sdeastham","count":28,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/sdeastham"},{"login":"ian-ross","count":10,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/ian-ross"}],"active_maintainers":[{"login":"ian-ross","count":9,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/ian-ross"},{"login":"sdeastham","count":2,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/sdeastham"}]},"events":{"total":{"ReleaseEvent":2,"PullRequestEvent":28,"ForkEvent":6,"IssuesEvent":15,"WatchEvent":7,"IssueCommentEvent":44,"PushEvent":17,"PullRequestReviewEvent":8,"PullRequestReviewCommentEvent":5,"CreateEvent":2},"last_year":{"PullRequestEvent":16,"ForkEvent":1,"IssuesEvent":11,"WatchEvent":5,"IssueCommentEvent":27,"PushEvent":10,"PullRequestReviewEvent":8,"PullRequestReviewCommentEvent":5}},"keywords":[],"dependencies":[],"score":6.104793232414985,"created_at":"2023-12-05T11:20:26.144Z","updated_at":"2026-05-26T22:30:31.023Z","avatar_url":"https://github.com/MIT-LAE.png","language":"C++","category":"Atmosphere","sub_category":"Atmospheric Chemistry and Aerosol","monthly_downloads":0,"total_dependent_repos":0,"total_dependent_packages":0,"readme":"[![DOI](https://zenodo.org/badge/256520978.svg)](https://zenodo.org/badge/latestdoi/256520978)\n\n# README for the APCEMM source code repository\n\nAPCEMM is the [Aircraft Plume Chemistry, Emissions, and Microphysics Model](https://github.com/mit-lae/APCEMM). It simulates the aerosol microphysics and chemistry in an aircraft exhaust plume in 2D for up to 24 hours, with a focus on accurate simulation of the ice - providing an intermediate-fidelity representation of an aircraft contrail. Originally described in [Fritz et al. (2020)](https://acp.copernicus.org/articles/20/5697/2020/), the model has since been heavily modified and the focus shifted from chemistry towards a flexible and efficient contrail simulation. APCEMM is a community-developed code and we strongly encourage users to contribute to the code base, whether through new features, improvements, or bug fixes. We use semantic versioning, and (as of v1.1.0) users can expect that the API will only change with new major versions.\n\nThe latest stable release of APCEMM is [__v1.2.1__](https://github.com/MIT-LAE/APCEMM/releases/tag/v1.2.1).\n\n## APCEMM development\n\nThe development of APCEMM in C++ started in September 2018. The most recent version of the code can be found in the __main__ branch. Although usually functional, this code is not necessarily stable and new features are added to this branch relatively frequently.\n\nFor __users__ of APCEMM who do not intend to do any development, we recommend downloading a recent stable version. To acquire (for example) version 1.2.1, use `git checkout v1.2.1` after cloning the repository.\nFor __developers__ of APCEMM, we ask that you create a fork of this repository. Any user can contribute to APCEMM - see [\"contributing to APCEMM\"](#contributing-to-apcemm).\n\nFor VSCode users, a Docker Dev Container is defined in `.devcontainer`. See [the tutorial](https://code.visualstudio.com/docs/devcontainers/tutorial) to develop inside a containerized environment.\n\n## Contributing to APCEMM\n\nUsers can contribute to the code base in two key ways:\n\n* __Raising issues__. If you find a bug, have a request for a new feature, or find that you cannot compile APCEMM with a specific compiler, please [raise an issue](https://github.com/mit-lae/APCEMM/issues).\n* __Submitting pull requests__. Any user can contribute code for consideration by the APCEMM development team by submitting a pull request.\n\nEvery pull request should refer in its commit message to an existing [issue](https://github.com/mit-lae/APCEMM/issues) (whether that's a bug, a compatibility issue, or a feature request); if no issue yet exists, for example if you have developed code to allow a new feature to be implemented which nobody has previously requested, then we ask that you first [raise an issue](https://github.com/mit-lae/APCEMM/issues) and then tag that issue in the pull request.\n\n## Dependencies \n\nThese are all managed using the `vcpkg` tool (see below) so do not need to be installed explicitly.\n\n- netcdf-c (requires HDF5 and zlib)\n- netcdf-cxx4\n- Catch2\n- FFTW3\n- OpenMP\n- OpenSSL\n- Boost libraries\n- yaml-cpp\n- Eigen3\n\n## APCEMM: Installation instructions\n\nAPCEMM can be built using CMake and requires GCC \u003e= 11.2. Previously, the dependency structure and compile instructions were specified using manually generated Makefiles. CMake generates these Makefiles automatically, and should lead to a more pleasant software build experience. Dependencies on external libraries are managed using the [vcpkg](https://vcpkg.io/en/) tool, which is installed as a Git submodule. (This means that you just need to run the `git submodule update` command below to set it up.)\n\nCMake will generate a single executable `APCEMM` that can receive an input file `input.yaml`. To compile this executable, you can call CMake as follows:\n\n```\ngit submodule update --init --recursive\nmkdir build\ncd build\ncmake ../Code.v05-00\ncmake --build .\n```\n\nThe `git submodule update` command installs the `vcpkg` dependency management tool, and the first time that you run CMake, all of the C++ dependencies will be installed. This will take some time, but subsequent runs of CMake will use cached binary builds of the dependencies, so will be much quicker.\n\nThe above commands will generate the `APCEMM` executable in the `build` directory (an \"out-of-source\" build). It is also possible to perform a build directly in the `Code.v05-00` directory, but this is not preferred. You can perform an \"out-of-source\" build anywhere that it's convenient, simply by calling CMake from within a different directory. For example,\n```\ncd APCEMM/rundirs/SampleRunDir/\ncmake ../../Code.v05-00\ncmake --build .\n```\nwill generate the executable in the `rundirs/SampleRunDir/` directory. \n\n## Getting started\nTo start a run from the aforementioned `rundirs/SampleRunDir`, simply call:\n```\n./../../Code.v05-00 input.yaml\n```\nThree examples and their accompanying jupyter notebooks for postprocessing tutorials are provided in the `examples` folder. The first example is one where the contrail doesn't persists, and only focuses on analyzing the output of the early plume model (EPM) module of APCEMM. The second example is a persistent contrail simulation where the ice supersaturated layer depth is specified. The third example features using a meteorological input file.\n\nThe input file options are explained via comments in the file `rundirs/SampleRunDir/input.yaml`\n\nAdvanced simulation parameters hidden in the input files (e.g. Aerosol bin size ratios, minimum/max bin aerosol sizes, etc) can be modified in `Code.v05-00/src/include/Parameters.hpp`. \n\n## Debugging\n\nAPCEMM can be compiled in debug mode to ensure reproducible results during testing. This fixes the seed of the random number generator and enforces single threaded computation. It can be enabled by passing the ```-DDEBUG=ON``` flag to CMake:\n\n```\ncmake ../Code.v05-00 -DDEBUG=ON\n```\n\nTo debug APCEMM using gdb and the VSCode debugger the binary can be compiled with debug instructions by adding the ```-DCMAKE_BUILD_TYPE=\"Debug\"``` flag. This comes at a significant cost in performance.\n\n ```\ncmake ../Code.v05-00 -DCMAKE_BUILD_TYPE=\"Debug\"\n ```\n \n Here's an example configuration of the VSCode debugger in ```APCEMM/.vscode/launch.json```:\n\n```\n{\n    \"version\": \"0.2.0\",\n    \"configurations\": [\n        {\n            \"name\": \"(gdb) Launch APCEMM debug\",\n            \"type\": \"cppdbg\",\n            \"request\": \"launch\",\n            \"program\": \"${workspaceFolder}/rundirs/debug/APCEMM\",\n            \"cwd\": \"${workspaceFolder}/rundirs/debug/test_rundir/\",\n            \"args\": [\"${workspaceFolder}/examples/issl_rhi140/input.yaml\"],\n            \"environment\": [\n                {\n                    \"name\": \"LD_LIBRARY_PATH\",\n                    \"value\": \"${workspaceFolder}/build/lib\"\n                },\n            ],\n            \"externalConsole\": false,\n            \"MIMode\": \"gdb\",\n            \"setupCommands\": [\n                {\n                    \"description\": \"Enable pretty-printing for gdb\",\n                    \"text\": \"-enable-pretty-printing\",\n                    \"ignoreFailures\": true\n                }\n            ]\n        },\n    ]\n}\n```\n\nThis configuration runs the APCEMM binary located in ```\"${workspaceFolder}/rundirs/debug/``` using the input file located in ```${workspaceFolder}/examples/issl_rhi140/input.yaml``` and the working directory ``` ${workspaceFolder}/rundirs/debug/test_rundir/```. Paths can be changed to suit the case to debug.\n","funding_links":[],"readme_doi_urls":[],"works":{},"citation_counts":{},"total_citations":0,"keywords_from_contributors":["earth-system-modeling","aerosols","atmospheric-chemistry","atmospheric-chemistry-modeling","atmospheric-composition","atmospheric-modelling","carbon-cycle","climate","cloud-computing","greenhouse-gases"],"project_url":"https://ost.ecosyste.ms/api/v1/projects/146953","html_url":"https://ost.ecosyste.ms/projects/146953"}