Skip to main content

The Gaussian Plume Model for atmospheric dispersion and inverse modeling of contaminants with support for multiple sources and receptors.

Project description

## Gaussian Plume Model for Atmospheric Dispersion

This repository contains a Python implementation of the Gaussian Plume Model for atmospheric dispersion of contaminants, 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.

### Prerequisites

Before running the code, ensure you have the following dependencies installed:

  • numpy (Numerical Python) library

  • matplotlib library for data visualization

  • scipy library for optimization

You can install the dependencies using pip:

`bash pip install numpy matplotlib scipy `

### Code Description

#### Forward Atmospheric Dispersion Modeling (gpm.py)

The main code file gpm.py includes the following components:

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

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

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

  4. 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 the gplume function to calculate the concentrations. The resulting contours are displayed using the matplotlib library.

#### Inverse Modeling (inverse.py)

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:

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

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

  3. Optimization: The minimize function from the scipy.optimize module is used to find the optimal emission rates that best fit the observed receptor measurements.

### Usage

To use the code for forward atmospheric dispersion modeling:

  1. Install the required dependencies using pip.

  2. Input the receptor location Ids, OpenAQ API, and OpenWeatherMapAPI in the DateTimeMechanism.py file to fit your specific scenario.

  3. Run the gpm.py file in a Python environment to calculate the contaminant concentration contours and visualize the results.

### Output

For forward modeling, the code generates plots showing the contours of ground-level contaminant concentration in mg/m^3. The maximum concentration value is displayed in the plot title.

For inverse modeling, the code outputs the optimal emission rates that best fit the observed receptor measurements.

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

### 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

gplume-0.0.1.tar.gz (11.0 kB view details)

Uploaded Source

Built Distribution

gplume-0.0.1-py3-none-any.whl (11.5 kB view details)

Uploaded Python 3

File details

Details for the file gplume-0.0.1.tar.gz.

File metadata

  • Download URL: gplume-0.0.1.tar.gz
  • Upload date:
  • Size: 11.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.4

File hashes

Hashes for gplume-0.0.1.tar.gz
Algorithm Hash digest
SHA256 2e923777eba712b9d5eef69d97d9a5aa30992421540981db293fdb6b9bbbab8e
MD5 b82ae615bf985d271931e75127a5b497
BLAKE2b-256 834c7cfbac4d9f106b9e962679ab36395dd9878d2f7a39fa9fa514143554ad00

See more details on using hashes here.

File details

Details for the file gplume-0.0.1-py3-none-any.whl.

File metadata

  • Download URL: gplume-0.0.1-py3-none-any.whl
  • Upload date:
  • Size: 11.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.4

File hashes

Hashes for gplume-0.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 f5f7cde9f48319529576727a434bff374217a8a3f20609bce7ab0dbe23d34490
MD5 486961011c1ed8913eca8e9a72082ea0
BLAKE2b-256 e8fcab8c7ff4d345bf998f7399fe9fb9932fd027eaaa5682d871abe75b48b428

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page