The Boundary Layer Dispersion and Footprint Model (BLDFM) is a novel atmospheric dispersion and footprint model designed for microscale applications in the atmospheric boundary layer under various turbulent regimes. It numerically solves the three-dimensional steady-state advection-diffusion equation in Eulerian form with flux boundary conditions.
Refer to the documentation for details on available APIs and how to create custom experiments. The documentation provides guidance on configuring the model, running example scripts, and extending the functionality for your specific use cases.
- Numerical Solver: Solves the steady-state advection-diffusion equation using Fourier transforms and the linear shooting method.
- Fast and Robust: Utilizes the Fast Fourier Transform and Exponential Integrator Method for computational efficiency.
- Atmospheric Stability: Computes vertical profiles of mean wind and eddy diffusivity using Monin-Obukhov Similarity Theory.
- Validation: Tested against analytical solutions with relative differences of less than 0.1‰ under typical conditions.
- Comparison: Demonstrates general agreement with the Kormann and Meixner footprint model, highlighting differences in turbulent mixing.
See pyproject.toml
.
Install the package using pip:
# BLDFM root directory
$ pip install -e .
The example scripts are located in the runs
subdirectory. After installation, you can run them as follows:
# BLDFM root directory
$ python -m runs.example_script_name
Replace example_script_name
with the desired script, such as comparison_footprint
.
To execute a specific example without first installing BLDFM, clone the repository and run the script. For example:
# BLDFM root directory
$ python -m runs.comparison_footprint
Refer to the documentation for details on available APIs and how to create custom experiments.
Additional dependencies for documentation or testing can be found under optional-dependencies
in pyproject.toml
. These dependencies can be installed via
# BLDFM root directory
$ pip install '.[dev]'
This project is licensed under the GNU License. See the LICENSE file for details.
Contributions are welcome! Refer to the open issues for tasks that require attention. Submit changes, improvements, or bug fixes via pull requests from a fork or branch.