foamlib provides a simple, modern and ergonomic Python interface for interacting with OpenFOAM.
It offers the following classes:
FoamFile
(andFoamFieldFile
): read-write access to OpenFOAM configuration and field files as if they were Pythondict
s, usingfoamlib
's own parser. Supports both ASCII and binary field formats.FoamCase
: a class for manipulating, executing and accessing the results of OpenFOAM cases.AsyncFoamCase
: variant ofFoamCase
with asynchronous methods for running multiple cases at once.
Install with pip:
pip install foamlib
import os
from pathlib import Path
from foamlib import FoamCase
pitz_tutorial = FoamCase(Path(os.environ["FOAM_TUTORIALS"]) / "incompressible/simpleFoam/pitzDaily")
my_pitz = pitz_tutorial.clone("myPitz")
my_pitz.run()
latest_time = my_pitz[-1]
p = latest_time["p"]
U = latest_time["U"]
print(p.internal_field)
print(U.internal_field)
my_pitz.clean()
my_pitz.control_dict["writeInterval"] = 10
import asyncio
from foamlib import AsyncFoamCase
async def run_case():
my_pitz_async = AsyncFoamCase(my_pitz)
await my_pitz_async.run()
asyncio.run(run_case())
Parse a field using the FoamFieldFile
class directly
from foamlib import FoamFieldFile
U = FoamFieldFile(Path(my_pitz) / "0/U")
print(U.internal_field)
For more information, check out the documentation.