The Gaussian Plume Model for atmospheric dispersion and inverse modeling of contaminants with support for multiple sources and receptors.
Project description
GPlume
This repository contains a Python implementation of the Gaussian Plume Model for atmospheric dispersion of contaminants (PM2.5), along with an inverse modeling approach to estimate emission rates from receptor measurements. The model calculates the contaminant concentration at receptor locations based on emission rates and wind conditions. It assumes 4 sources, which can be customized according to the code that generates an input box. This code works for multiple sources and multiple receptors.
Code Description
The main code file gpm.py
includes the following components:
-
Contaminant Parameters: Set the parameters related to the contaminant being modeled, such as gravitational acceleration, dynamic viscosity of air, density of the contaminant, diameter of particles, deposition velocity, and molar mass of the contaminant.
-
Source and Receptor Data: Define the locations and characteristics of the emission source and receptors where deposition measurements are made. This includes the number of sources, x-y-z coordinates, labels, and emission rates.
-
gplume
Function: This function computes the contaminant concentration (in kg/m^3) at a given set of receptor locations using the standard Gaussian plume solution. It takes into account the source characteristics, receptor locations, and wind speed. -
forward_atmospheric_dispersion
Function: This function calculates and plots the ground-level contaminant concentration contours based on the Gaussian Plume Model. It takes the wind speed as an input and calls thegplume
function to calculate the concentrations. The resulting contours are displayed using thematplotlib
library.
The inverse.py
file introduces an inverse modeling approach to estimate emission rates from observed contaminant concentrations at receptor locations. The key components in this file are:
-
ermak
Function: This function computes the contaminant concentration at receptor locations using the Ermak dispersion model. It takes into account the emission rates, wind speed, and other parameters. -
Objective Function: The
objective_function
calculates the difference between predicted and observed contaminant concentrations based on the Ermak model. It sets up an optimization problem to find the optimal emission rates that minimize this difference. -
Optimization: The
minimize
function from thescipy.optimize
module is used to find the optimal emission rates that best fit the observed receptor measurements.
Installing
Install and update from PyPI using an installer such as pip:
$ pip install -U gplume
A Simple Example
# Compute and plot forward modeling
from gplume import gpm
# Compute and plot inverse modeling
from gplume import inverse
Contributing
Contributions to this project are welcome. If you find any issues or have suggestions for improvements, feel free to create a pull request or submit an issue on the GitHub repository. https://github.com/VaibhavVasdev/Gaussian-Plume_Model
Contact
For any inquiries or questions, please contact Vaibhav Vasdev at vaibhavvasdev63@gmail.com.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file gplume-1.0.0.tar.gz
.
File metadata
- Download URL: gplume-1.0.0.tar.gz
- Upload date:
- Size: 3.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.4
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7a405158d79d63c4771bf460fbb0b49a1a708e1b37a826dce2e2c1d8266caa80 |
|
MD5 | b9a0900157041aec06790b3ca87e22e9 |
|
BLAKE2b-256 | fe1e6ad622ebaf1ac7b73ba732ec85e67991946110c28ab134f0590143bd31c0 |
File details
Details for the file gplume-1.0.0-py3-none-any.whl
.
File metadata
- Download URL: gplume-1.0.0-py3-none-any.whl
- Upload date:
- Size: 3.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.4
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 798589ef2fb0111e63dfa0f3e4daae7c25ca6f0e998e08a66acf832003355ea9 |
|
MD5 | a576db6795bb3a352339b689ed717a10 |
|
BLAKE2b-256 | 8c00dc9bcc84c5a712d2dc8b85ca63c339a69b8368574f6e503b9ba3ac6a23fe |