A CFD python package for the shallow water equations
Project description
MattFlow
MattFlow is a CFD python package for the shallow water equations.
It simulates drops or stones falling on the surface of the water.
requirements | os |
---|---|
python 3 | GNU/Linux |
numpy 1.16.4 | Windows |
matplotlib 3.1.1 | |
ffmpeg (optional) |
How to run MattFlow
- pip
$ mkdir mattflow
$ cd mattflow
$ pip install numpy matplotlib
$ pip install mattflow
$ mattflow
- venv (python>=3.3)
$ mkdir mattflow
$ cd mattflow
$ python3 -m venv mattflow_env
$ source mattflow_env/bin/activate
$ pip install numpy matplotlib
$ pip install mattflow
$ mattflow
- anaconda environment
(this is prefered, because anaconda handles low level libs required from matplotib animation)
$ conda create --name mattflow pip numpy matplotlib
$ conda activate mattflow
$ mkdir mattflow
$ cd mattflow
$ pip install mattflow
$ mattflow
Swallow Water Equations
SWE is a simpified CFD problem which models the surface of the water, with the
assumption that the horizontal length scale is much greater than the vertical
length scale.
SWE is a coupled system of 3 hyperbolic partial deferential equations, that
derive from conservation of mass and conservation of linear momentum (Navier-
Stokes) equations, in case of a horizontal steam bed, with no Coriolis, frictional
or viscours forces (wiki).
where:
η : height
u : velocity along the x axis
υ : velocity along the y axis
ρ : density
g : gravity acceleration
MattFlow structure
- configuration of the simulation via a config file
- pre-process
structured/cartesian mesh - solution
supported solvers:- Lax-Friedrichs Reiman | O(Δt, Δx2, Δy2)
- 2-stage Rugne-Kutta | O(Δt2, Δx2, Δy2) | default
- MacCormack | O(Δt2, Δx2, Δy2) | experimental
- post-processing
matplotlib animation
Additional configurations
- mesh sizing
- domain sizing
- simulation mode (single drop, multiple drops, rain)
- solver
- boundary conditions (currently: reflective)
- plotting style
- animation options
Currently, you can configure the simulation at the config file
TODO
- mattflow_exceptions
- tests
- Simple API to configure the simulation
- Implementation of higher order schemes
- Addition of source terms
- Addition of viscous models
- Support moving objects inside the domain
- Unstructured mesh
- Extent to 3D CFD
Start the flow!
(C) 2019, Thanasis Mattas
atmattas@physics.auth.gr
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.