diff --git a/README.md b/README.md index c23d236..05abc24 100644 --- a/README.md +++ b/README.md @@ -11,13 +11,13 @@ Rettenmaier, Daniel, et al. "Load balanced 2D and 3D adaptive mesh refinement in link: https://www.sciencedirect.com/science/article/pii/S2352711018301699 -port to the OpenFOAM+ version v1812 and v2006,v2012 +port to the OpenFOAM+ version v1812, v2006, v2012 and v2406 refinement selection algoritm is based on foam extended 4.1 ## Getting Started -install OpenFOAM v1812 +install OpenFOAM v1812, v2006, v2012 or v2406 compile the library ``` @@ -28,9 +28,20 @@ in case of v2006, v2012: git checkout v2012 ./Allwmake ``` +for OpenFOAM v2406, source the v2406 environment and build this branch directly: +``` +source /usr/lib/openfoam/openfoam2406/etc/bashrc +./Allwmake +``` + +This branch includes compatibility fixes for OpenFOAM v2406 API changes +including runtime selection tables, `mesh.data().setFinalIteration(...)`, +`writeObject(IOstreamOption, bool)`, `HashTable` iterators and +`CompactListList` packing. + ### Prerequisites -Requires OpenFOAM v1812 or v2006,v2012: +Requires OpenFOAM v1812, v2006, v2012 or v2406: ``` https://www.openfoam.com/download/release-history.php @@ -45,13 +56,32 @@ https://www.openfoam.com/download/release-history.php ``` ### Usage -add following lines to the contolDict: +add following lines to the controlDict: ``` libs ( "libdynamicLoadBalanceFvMesh.so" ); -or depending on the openfoam version +``` + +Do not use the old library name `libpolyRef.so` with this version. If an +existing case still contains it, replace it with `libdynamicLoadBalanceFvMesh.so`. + +In the case `constant/dynamicMeshDict`, select one of the dynamic mesh types: +``` +dynamicFvMesh dynamicMultiDimRefineFvMesh; +``` +or, when load balancing is required: +``` +dynamicFvMesh dynamicMultiDimRefineBalancedFvMesh; + +enableBalancing true; +allowableImbalance 0.10; +``` + +For older OpenFOAM versions, depending on the library loading syntax, the +unquoted library name may also be used: +``` libs ( dynamicLoadBalanceFvMesh diff --git a/solver/chtMultiRegionDyMFoam/fluid/solveFluid.H b/solver/chtMultiRegionDyMFoam/fluid/solveFluid.H index 68e3301..01b92a6 100644 --- a/solver/chtMultiRegionDyMFoam/fluid/solveFluid.H +++ b/solver/chtMultiRegionDyMFoam/fluid/solveFluid.H @@ -1,6 +1,10 @@ if (finalIter) { +#if OPENFOAM >= 2206 + mesh.data().setFinalIteration(true); +#else mesh.data::add("finalIteration", true); +#endif } if (frozenFlow) @@ -73,5 +77,9 @@ else if (finalIter) { +#if OPENFOAM >= 2206 + mesh.data().setFinalIteration(false); +#else mesh.data::remove("finalIteration"); +#endif } diff --git a/solver/chtMultiRegionDyMFoam/solid/solveSolid.H b/solver/chtMultiRegionDyMFoam/solid/solveSolid.H index 791e0d6..f0870a1 100644 --- a/solver/chtMultiRegionDyMFoam/solid/solveSolid.H +++ b/solver/chtMultiRegionDyMFoam/solid/solveSolid.H @@ -1,6 +1,10 @@ if (finalIter) { +#if OPENFOAM >= 2206 + mesh.data().setFinalIteration(true); +#else mesh.data::add("finalIteration", true); +#endif } { @@ -35,5 +39,9 @@ if (finalIter) if (finalIter) { +#if OPENFOAM >= 2206 + mesh.data().setFinalIteration(false); +#else mesh.data::remove("finalIteration"); +#endif } diff --git a/src/dynamicLoadBalanceFvMesh/adaptCriteria/adaptCriteria.C b/src/dynamicLoadBalanceFvMesh/adaptCriteria/adaptCriteria.C index 3484e9b..fce2550 100644 --- a/src/dynamicLoadBalanceFvMesh/adaptCriteria/adaptCriteria.C +++ b/src/dynamicLoadBalanceFvMesh/adaptCriteria/adaptCriteria.C @@ -67,10 +67,16 @@ Foam::autoPtr Foam::adaptCriteria::New const word adaptCriteriaTypeName(dict.lookup("type")); Info<< "Creating adaptCriteria " << adaptCriteriaTypeName << endl; +#if OPENFOAM >= 2206 + auto cstr = dictionaryConstructorTable(adaptCriteriaTypeName); + + if (!cstr) +#else dictionaryConstructorTable::iterator cstrIter = dictionaryConstructorTablePtr_->find(adaptCriteriaTypeName); if (cstrIter == dictionaryConstructorTablePtr_->end()) +#endif { FatalErrorIn ( @@ -86,7 +92,11 @@ Foam::autoPtr Foam::adaptCriteria::New << exit(FatalError); } +#if OPENFOAM >= 2206 + return autoPtr(cstr(mesh, dict)); +#else return autoPtr(cstrIter()(mesh, dict)); +#endif } diff --git a/src/dynamicLoadBalanceFvMesh/dynamicMultiDimRefineBalancedFvMesh/fvMeshDistributeAddPatch/fvMeshDistributeAddPatch.C b/src/dynamicLoadBalanceFvMesh/dynamicMultiDimRefineBalancedFvMesh/fvMeshDistributeAddPatch/fvMeshDistributeAddPatch.C index e114108..3055cde 100644 --- a/src/dynamicLoadBalanceFvMesh/dynamicMultiDimRefineBalancedFvMesh/fvMeshDistributeAddPatch/fvMeshDistributeAddPatch.C +++ b/src/dynamicLoadBalanceFvMesh/dynamicMultiDimRefineBalancedFvMesh/fvMeshDistributeAddPatch/fvMeshDistributeAddPatch.C @@ -1479,7 +1479,11 @@ void Foam::fvMeshDistributeAddPatch::sendMesh // Send toDomain << mesh.points() +#if OPENFOAM >= 2206 + << CompactListList