{"id":21417646,"url":"https://github.com/psorlab/jmtk-adm1","last_synced_at":"2026-01-26T07:33:45.960Z","repository":{"id":48194180,"uuid":"516758664","full_name":"PSORLab/JMTK-ADM1","owner":"PSORLab","description":"A Julia Modelingtoolkit.jl Implementation of Anaerobic Digestion Model No.1 (ADM1)","archived":false,"fork":false,"pushed_at":"2022-08-03T17:00:58.000Z","size":20119,"stargazers_count":3,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-19T15:14:49.890Z","etag":null,"topics":["adm1","anaerobic-digestion","julia","modelingtoolkit","optimization","wastewater-treatment"],"latest_commit_sha":null,"homepage":"","language":"Julia","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/PSORLab.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":null,"license":"license.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2022-07-22T13:22:07.000Z","updated_at":"2024-05-15T21:46:40.000Z","dependencies_parsed_at":"2022-09-06T19:11:20.685Z","dependency_job_id":null,"html_url":"https://github.com/PSORLab/JMTK-ADM1","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/PSORLab/JMTK-ADM1","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PSORLab%2FJMTK-ADM1","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PSORLab%2FJMTK-ADM1/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PSORLab%2FJMTK-ADM1/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PSORLab%2FJMTK-ADM1/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/PSORLab","download_url":"https://codeload.github.com/PSORLab/JMTK-ADM1/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PSORLab%2FJMTK-ADM1/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28769851,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-26T06:37:25.426Z","status":"ssl_error","status_checked_at":"2026-01-26T06:37:23.039Z","response_time":59,"last_error":"SSL_read: 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"}},"keywords":["adm1","anaerobic-digestion","julia","modelingtoolkit","optimization","wastewater-treatment"],"created_at":"2024-11-22T19:16:39.644Z","updated_at":"2026-01-26T07:33:45.944Z","avatar_url":"https://github.com/PSORLab.png","language":"Julia","funding_links":[],"categories":[],"sub_categories":[],"readme":"# JMTK ADM1: Julia ModelingToolkit Implementation of Anaerobic Digestion Model No. 1 (ADM1)\r\nThis work implements the anaerobic digestion model described in Rosen and Jeppson [1] using the ModelingToolkit framework [3] in the Julia programming language.\r\n\r\n\u003cp align=\"center\"\u003e\r\n  \u003cimg width=\"576\" height=\"288\" src=\"https://user-images.githubusercontent.com/63276909/182664845-afd6c38d-d20f-4ae6-9c7c-18b26536823b.svg\" /\u003e\r\n\u003c/p\u003e\r\n\r\n## Features and Capabilities\r\nThis model simulates anaerobic digestion by solving the DAE described in Rosen and Jeppson [1]. This model is implemented in the acausal, symbolic modeling framework, ModelingToolkit.jl, to create a foundation for a versatile, efficient, and flexible model for future work. The model simulates various states of interest in anaerobic digestion such as pH, methane gas production, volatile fatty acids (VFAs), etc. This work implements two versions of the model: one model to simulate a constant influent and one model to simulate a dynamic influent stream. The static influent model simulates the DAE in mass matrix form using a medium tolerance ($10^{-6}$). The dynamic influent model uses a zeroth-order interpolation of digester influent data from the PyADM1 implementation and simulates the DAE in mass matrix form using a high tolerance ($10^{-10}$).\r\n\r\n## Required Libraries\r\n#### Main\r\n- [ModelingToolkit.jl](https://github.com/SciML/ModelingToolkit.jl) v8.15.1\r\n- [DifferentialEquations.jl](https://github.com/SciML/DifferentialEquations.jl) v7.1.0\r\n- [Symbolics.jl](https://symbolics.juliasymbolics.org/dev/) v4.8.3\r\n#### Supporting\r\n- DelimitedFiles.jl\r\n- IfElse.jl\r\n- LinearAlgebra.jl\r\n\r\n## Works In Progress\r\n- ### High Fidelity / Advanced Modeling \u003cimg align=\"right\" width=\"416\" height=\"488\" src=\"https://user-images.githubusercontent.com/63276909/182665057-84f8fd72-a0b9-49bf-bfca-a434215afd47.svg\"\u003e\r\n    - Establish spatial heterogeneity using compartment modeling with Modelingtoolkit modules\r\n    - Map common wastewater parameters to ADM1 state variables and or parameters\r\n    - Establish temperature dependency / energy balance within model\r\n    - Develop low complexity surrogate for model to accelerate model predictive control\r\n\r\n- ### Develop and Simulate Anaerobic Digester Controls\r\n    - Develop control strategy to prevent digester upsets\r\n    - Implement model predictive control using Julia optimization framework to implement control strategies\r\n\r\n\u003cp align=\"center\"\u003e\r\n  \u003cimg width=\"576\" height=\"520\" src=\"https://user-images.githubusercontent.com/63276909/182666261-e56f6d35-177d-4535-bd8a-e0346f3a42f4.svg\"\u003e\r\n\u003c/p\u003e\r\n\r\n## Contact\r\nSamuel Degnan-Morgenstern, Research Specialist, samuel.morgenstern@uconn.edu / stm16109@mit.edu\r\n\r\nDr. Matthew Stuber, Principal Investigator, matthew.stuber@uconn.edu\r\n\r\n## References\r\n1. Rosén, C., \u0026 Jeppsson, U. (2006). **Aspects on ADM1 Implementation within the BSM2 Framework.** Department of Industrial Electrical Engineering and Automation, Lund University, Lund, Sweden, 1-35.\r\n2. Sadrimajd, P., Mannion, P., Howley, E., \u0026 Lens, P. N. L. (2021). **PyADM1: a Python implementation of Anaerobic Digestion Model No. 1.** bioRxiv.\r\n3. Ma, Y., Gowda, S., Anantharaman, R., Laughman, C., Shah, V., \u0026 Rackauckas, C. (2021). **Modelingtoolkit: A composable graph transformation system for equation-based modeling.** arXiv preprint arXiv:2103.05244.\r\n\r\n\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpsorlab%2Fjmtk-adm1","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpsorlab%2Fjmtk-adm1","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpsorlab%2Fjmtk-adm1/lists"}