Skip to main content

Python framework for OpenFOAM

Project description

Fluidsimfoam

PyPI Documentation Status

Python framework for OpenFOAM

OpenFOAM is a very popular open-source C++ CFD framework. With Fluidsimfoam, we try to design and propose a new workflow for OpenFOAM based on Python. However, experienced OpenFOAM users won't be lost because Fluidsimfoam produces in the end standard OpenFOAM cases and it's always possible to come back to the standard OpenFOAM workflow.

Fluidsimfoam can be seen as a workflow manager for OpenFOAM or a Python wrapper around OpenFOAM. It only uses OpenFOAM commands on the background and is thus NOT a rewrite of OpenFOAM!

Fluidsimfoam should be especially useful for:

  • automatisation of simulation launching for example for parametric studies or optimization,
  • programmatic generation of complex and parametrized input files (for example blockMeshDict) and initial conditions,
  • programmatic control of a simulation at runtime (an example here).

However, Fluidsimfoam is not restricted to these usages and should be convenient, especially for people knowing Python, for any OpenFOAM usages for which C++ programming is not needed.

Working with OpenFOAM implies writting and modifying a lot of input files describing a simulation. The method described in the official OpenFOAM documentations is to copy an existing simulation directory and to modify the input files by hand.

With Fluidsimfoam, we introduce the possibility to describe not only one case (as shown in the OpenFOAM tutorials), but sets of similar simulations. The description of one set of simulations is done in Python (and possibly with Jinja templates) in a small Python package that we call a "Fluidsim solver".

"[Fluidsim] solver" and "OpenFOAM solvers" are very different things. A
Fluidsim solver is a small Python package describing a set of simulations.
Fluidsimfoam allows one to write Fluidsim solvers based for the simulations
on OpenFOAM.

As shown in our tutorials, with a Fluidsimfoam solver, it becomes very easy to

  • launch/restart simulations with Python scripts and terminal commands,
  • load simulations, read the associated parameters/data and produce nice figures/movies.

There are open-source solvers (some of them are included in our main repository) and it is not be difficult to write your own solver based on your OpenFOAM cases. For example, to produce a solver from an existing case, one can run

fluidsimfoam-initiate-solver cylinder -c $FOAM_TUTORIALS/basic/potentialFoam/cylinder

This command creates a solver fluidsimfoam-cylinder that can be used to run the simulation described in the Flow around a cylinder tutorial. But this solver can very easily be improved to be parametrized and to produce some input files programmatically. For example, the mesh of this tutorial is produced with the blockMesh OpenFOAM utility and the blockMeshDict is quite complex and contains a #codeStream directive (which implies writting C++ and compilations). With Fluidsimfoam, you can avoid this step and produce the blockMeshDict programmatically with a nice Python API and a nice mechanism to add and store parameters.

The best way to use Fluidsimfoam is to write or use a solver adapted for your particular use case. However, one can also use Python functions and classes provided by Fluidsimfoam for some common tasks, like parsing/writting input files, modifying field files, writting blockMeshDict files, etc.

Fluidsimfoam is now usable but still in quite early development. There are still very low hangling fruits not yet implemented (for example, restart utilities, production of figures and movies, etc.) and our documentation does not reflect what people can and will be able to do with this tool. One goal is to get the equivalent of Snek5000, our Fluidsim framework for the CFD code Nek5000. Looking at the Snek5000 tutorials should give a good idea of what Fluidsimfoam will soon allow.

This project is young and we need any kind of feedback and [contributions].
Don't be afraid that the project is not hosted on Github. If you think that
this project is interesting please *star* [our repository on
Heptapod](https://foss.heptapod.net/fluiddyn/fluidsimfoam) and/or [open
issues](https://foss.heptapod.net/fluiddyn/fluidsimfoam/-/issues) with
feedback, feature requests or bug reports. Moreover, we would be very happy to
welcome new core developers, so if you like OpenFOAM and Python, do not
hesitate!

For our examples, we currently target OpenFOAM v2206 but it should be possible to write Fluidsimfoam solvers targeting any recent OpenFOAM versions.

See more in Fluidsimfoam documentation.

Install

Currently, it still makes sense to install Fluidsimfoam like we, the fluidsimfoam developers, install it, i.e. in a dedicated controlled virtual environment created by Poetry. After installing Poetry (for example with something like pip install poetry), the following commands should install and activate the virtual environment:

hg clone https://foss.heptapod.net/fluiddyn/fluidsimfoam
cd fluidsimfoam
poetry install
poetry shell

For better user experience with Matplotlib figures, you can also install with poetry install --extra qt.

Related projects

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

fluidsimfoam-0.0.6.tar.gz (95.4 kB view details)

Uploaded Source

Built Distribution

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

fluidsimfoam-0.0.6-py3-none-any.whl (56.9 kB view details)

Uploaded Python 3

File details

Details for the file fluidsimfoam-0.0.6.tar.gz.

File metadata

  • Download URL: fluidsimfoam-0.0.6.tar.gz
  • Upload date:
  • Size: 95.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.7

File hashes

Hashes for fluidsimfoam-0.0.6.tar.gz
Algorithm Hash digest
SHA256 798dce3c20e2bb2ff1b39fd7f470e32db8c9f06c216bced341b6578eac978f29
MD5 3ea612b710ad0d68e6ae8158ad5063cd
BLAKE2b-256 53ad2b4c66769f5c4bef3a14987481025d093cffb0f2b7f0d82bcd727fdd02f6

See more details on using hashes here.

File details

Details for the file fluidsimfoam-0.0.6-py3-none-any.whl.

File metadata

  • Download URL: fluidsimfoam-0.0.6-py3-none-any.whl
  • Upload date:
  • Size: 56.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.7

File hashes

Hashes for fluidsimfoam-0.0.6-py3-none-any.whl
Algorithm Hash digest
SHA256 6cad30998fdbb88d81dcb4c03e366b3d14e6dbc1b5521ed5d8ad4761c595f509
MD5 63046367591f1229df86b61a2293210d
BLAKE2b-256 3030c6a40c98ee4a6bf32e25388ee7e67e1fe67ebbd3c150ac31c516a9db8c4e

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