Skip to main content

Solve the Euler Equations for inviscid compressible flow in 1D.

Project description

EulerFlow

Description

Solve the Euler (Compressible, inviscid Navier Stokes) equations in cartesian, cylindrical, and spherical coordinates in python. Validation is done through the self-similar to the solution, described as the Taylor-Von Neumann-Sedov solution.

Numerical Methods for the Euler Solution

Example

Import Libraries

For this simple example, we're going to use SedovBlast, which handles setting up the dimensionless problem. Using SI units to solve the Euler equations slows down the problem significanly and leads to numerical instability. It utilizes the Jameson-Shmidt-Turkel finite volume scheme for spatial discretization and scipy.integrate.solve_ivp for the time integration. The boundary conditions at the origin are reflective and transmissive at the exit. Unit tests have shown that the wave transmits easily through the end and that the wave reflects at the origin.

from EulerFlow import SedovBlast

Set Up Blast Scenario

LenScale__m = 1    # length scale of the problem
DomainLen__m = 10   # size of the domain
PAmb__Pa = 101325   # ambient air pressure
PExpl__Pa = 20*PAmb__Pa # Explosive pressure
RExpl__m = 3        # radius of explosion
tFin__s  = 0.010    # final simulation time
rhoAmb__kgpm3=1.225 # ambient air density
orders = 2          # order of solution

We look at a blast solition over the domain 0 to 10 meters. We scale the parameters by 1 meter, but values 1-10 are acceptable. We set the ambient pressure and density to STP: PAmb__Pa=101325 and rhoAmb__kgpm3=1.225. The Explosion is centered at the origin at t=0, and has a radius of 3 meters. We allow the solution to solve for 10 miliseconds, and set order=2 (spherical coordinates). order=0 indicates cartesian coordinates, and order=1 indicates cylindrical coordinates.

Run Simulation

SedovBlast converts the SI coordinates, time, and thermodynamic parameters into dimensionless units. SedovBlast.solve() takes the argument of method, which is the time integration scheme for scipy.integrate.solve_ivp. The solution should converge in a few seconds.

Blast = SedovBlast(LenScale__m, DomainLen__m, RExpl__m, PExpl__Pa, tFin__s,
                P0__Pa=PAmb__Pa, rho0__kgpm3=rhoAmb__kgpm3, order=orders)
Blast.solve(method='RK45')

Analyze Results

We can then view the fields as density plots or at discrete times.

Blast.dispFields()      ## density plots of the field
Blast.plotDiscTimes()   ## plott at discrete times

Taylor-Von Neumann-Sedov Analytical Solution

To-Do

Other goals I have with this project:

  • solve the euler equation with other flux integration schemes (Roe, etc)
  • simple PDEs as unit tests such as the wave and diffusion equation
  • Basset-Oseen equation (transient, compressible, particle-laden flow)
  • Coupled Euler equations with combustion
  • Full Navier-Stokes equations
  • quasi-1D Euler, with cross-sectional area variation
  • etc

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

pyflowsolver-0.3.4.tar.gz (59.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pyflowsolver-0.3.4-py3-none-any.whl (60.4 kB view details)

Uploaded Python 3

File details

Details for the file pyflowsolver-0.3.4.tar.gz.

File metadata

  • Download URL: pyflowsolver-0.3.4.tar.gz
  • Upload date:
  • Size: 59.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.3

File hashes

Hashes for pyflowsolver-0.3.4.tar.gz
Algorithm Hash digest
SHA256 0a1a0bb0af566a1a71697e5b3055d19a7865d69d51b032a67011ec1081993d12
MD5 c009e53bf0f2ebf811e5ad42f80a95d1
BLAKE2b-256 0ad2f157872a2a894bb4c1acde93e24862e5706d94d4b4e5e0f7be1a264fbf48

See more details on using hashes here.

File details

Details for the file pyflowsolver-0.3.4-py3-none-any.whl.

File metadata

  • Download URL: pyflowsolver-0.3.4-py3-none-any.whl
  • Upload date:
  • Size: 60.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.3

File hashes

Hashes for pyflowsolver-0.3.4-py3-none-any.whl
Algorithm Hash digest
SHA256 76f82f5130977c087a4f9abb2887cc749e3e4bd9dcee7ef7ddad98cbc0fbc54d
MD5 8a6d35ff68b9e475a3f4f6ae3bf719b0
BLAKE2b-256 9763771778a4e3346352da5ae5ebcace307fe31a84154bc0bacb4ad2c9601678

See more details on using hashes here.

Supported by

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