CONT: Addition of compressibleIsoInterFoam and PLIC
Contribution by Henning Scheufler and Johan Roenby. Headers reviewed. Rebased to the latest develop.
- Implementation of the compressibleIsoInterFOam solver
- Implementation of a new PLIC interpolation scheme.
- New tutorials associated with the solvers
This implementation was carried out by Henning Scheufler (DLR) and Johan Roenby (DHI), following :
\verbatim
Henning Scheufler, Johan Roenby, Accurate and efficient surface reconstruction from volume fraction data on general meshes, Journal of Computational Physics, 2019, doi 10.1016/j.jcp.2019.01.009
\endverbatim
The integration of the code was carried out by Andy Heather and Sergio Ferraris from OpenCFD Ltd.
Merge request reports
Activity
changed milestone to %v2006
added contribution label
I am making some style changes at the moment and will push again.
- multiple files with execution permissions that should not be there. This causes havoc when repackaging with debian, as well as just being messy.
- a kate.swp (binary swap file)
Edited by Mark OLESENQuestions:
-
ellipsoidImplicitFunction has no origin. Bug or feature? Shouldn't "semiAxis" be normalised?
-
dubious indexing in leastSquaredGrad::grad - cannot index two Map parameters in parallel and assume that the indexes match. Will only be true if there are either zero hash key collisions, or there are and the underlying Maps are identically sized and have the same insertion/deletion histories (ie, fragile!).
-
- Resolved by Andrew Heather
Hi @mark . Not sure exactly what you mean by "unmerged". That the same point occurs several time in pts (true) or are we talking about merging across processors? Henning should answer this but how do we include him as participant (@Henning86 does not seem to tag him).
Hi @johan_roenby @Henning86 and I meant unmerged on the local processor, which means that we would either need to do a geometric merge (processor-local), or generate the points differently from cutter itself - like returning them directly as a primitive patch.
Thoughts?
Hi @mark @johan_roenby,
the PLIC/isosurace lacks C0 continuity. Does this explain; unmerged?
@Henning86, it seems that this is a refactoring of the old Foam::isoAdvection::writeIsoFaces(const DynamicList<List >& faces) (See here) which also had an "if (Pstream::parRun())" to collect faces from different processors. Shouldn't the Foam::interface::interface(const fvMesh& mesh) constructor have something similar?
All point and faces are local to the processor
I run the depthCharge in serial and parallel and the surface are nearly identical depthCharge2D.zip
Disclaimer: I currently cannot access the cluster and work on my one local machine due to high load on VPN infrastructure caused by the DLR shutdown. So this results are made with a similar library
Hi @Henning86 - quick email at Mark.Olesen (at) esi-group.com to see if we can find a few short minutes to discuss on the phone for quick clarification.
@johan_roenby and @Henning86 - if revamping the libraries, could also be worth considering using a
bitSet
for representing interface cells instead of aboolList
. Apart from saving storage space, it has some other nice features.In addition to the set-like functionality (and, or, xor, flip, etc), can also have faster traversal some for sparse sets. Can also use range-for for direct traversal of on bits.
Eg, instead of this
forAll(myBoolList, facei) { if (myBoolList[facei]) { do something; } }
can use this:
for (const label facei : myBitset) { do something; }
If the sparsity pattern in favourable, the intermediate iterator ++ will skip over blocks of 32 false values in a single test.
Edited by Mark OLESEN@mark As discussed on the phone I removed the interface class and will also change the booList to bitSets
However, I donot have permission to push on the integration-vof-library branch.
Hi @Henning86
I've added developer access to the repo - you should be able to push to the branch now
added 1 commit
- 67d6eb79 - STYLE: refactor reconstructionSchemes::surface()