Hey there 👋
It’s Robin from CFD Engine and, as is customary at this time of year, there’s another new OpenFOAM version 🎉
The Foundation released v11 last week & it has some chunky changes. We’d had a heads-up on some of them, but there’s still a lot to digest.
Here’s what stood out (to me) after a sprint through the release notes & after taking a few bits for a spin…
Modular Solvers
The new modular solver framework is probably the biggest change to OpenFOAM in years. I wrote about it in October (when it appeared in the dev
version) but this is its first proper release.
As far as I can tell it’s a redesign of the way solvers are constructed, making them easier to maintain, easier to extend & easier to combine.
Bundle this with the move to more pluggable models & we can now solve different combinations of flow physics, in different regions of our model, without having to build (& maintain) new bespoke solvers.
In fact, it’s made most of the niche solvers obsolete.
If (like me) you don’t stray much beyond simple(or pimple)Foam
then this update might just boil down to changing some keywords in your dictionaries & some executable names in your scripts.
But, it gets much more interesting if you’re into multiphase conjugate heat transfer with particles & the like 🤯
Find out more about the switch to modular solvers here & RIP simpleFoam
🙏
foamToC
A new info utility has been introduced to accompany the new solvers & it’s called foamToC
(by the way, that’s ToC as in Table of Contents, not something that converts things To C code) 🤦♂️
You can use it to look up the source code for a particular feature, model, boundary condition, function object & more. It’s a more graceful (& informative) alternative to the ol’ banana trick 🍌
Find out more about foamToC
here.
There’s a “related-but-not-new” utility called foamInfo
, that’s equally well worth investigating (if you’re not already familiar with it) – check that one out here.
Dynamic Meshes
Arbitrary mesh interfaces have been removed from this release so, if they’re your thing, then it’s time to migrate to non-conformal coupled patches instead.
I hadn’t realised that part of this development included an upgrade to the whole dynamic mesh system. For example, you can now run multiple mesh motions &/or topology changes in a single simulation – nice.
You can read more about all these changes, including improvements to mesh-to-mesh mapping, in this article
Auto SHM setup
Speaking of meshes, there’s a new snappyHexMeshConfig
utility which guesstimates an initial mesh recipe (writing a new blockMeshDict
, snappyHexMeshDict
& surfaceFeaturesDict
) after interrogating your constant/geometry
directory 👏
It has a bunch of options that you can use to tweak its output, including specifying the extents of your domain, surface refinement levels, patch names & much more.
Definitely worth a look, even if you just end up using it as a blockMeshDict
writer.
Other Bits & Bobs
I can’t speak to all the thermal, particle, liquid film & multiphase changes in this release, but here are a few other things that caught my eye…
Post-processing functionObjects
got an overhaul to work with the new solver architecture.
reconstructPar
now does all the reconstruction tasks & reconstructParMesh
has been removed.
A faster, more robust polyhedral cutting routine has been added for use with isosurfaces & cut planes etc.
What did I miss?
As always, there’s far too much in the release notes to cram into a little Saturday email, so I recommend you check them out in full.
Let me know if I missed something significant 🤭
I like the direction of travel of recent Foundation releases & that there’s now clear water between them & ESI. I wish they didn’t share the OpenFOAM name, but that’s unlikely to change anytime soon.
Thank you to the Foundation for yet another high-quality release 🙏 I’m guessing that the redesign/refactoring of the codebase is the groundwork for something even bigger & I’m intrigued to see what’s next.
Until next week, stay safe,