diff --git a/apps/benchmarks/ComplexGeometry/CMakeLists.txt b/apps/benchmarks/ComplexGeometry/CMakeLists.txt index 1a4bca93490261808161c24120837c1842d9f8bc..583b9426437a0844be2949ed65f242333a457ed1 100644 --- a/apps/benchmarks/ComplexGeometry/CMakeLists.txt +++ b/apps/benchmarks/ComplexGeometry/CMakeLists.txt @@ -3,7 +3,7 @@ if ( WALBERLA_BUILD_WITH_OPENMESH ) waLBerla_link_files_to_builddir( "*.obj" ) waLBerla_link_files_to_builddir( "*.conf" ) - waLBerla_add_executable( NAME ComplexGeometry DEPENDS boundary core lbm mesh vtk ) + waLBerla_add_executable( NAME ComplexGeometry FILES ComplexGeometry.cpp ComplexGeometryLatticeModel.gen.py DEPENDS boundary core lbm mesh vtk ) ############## # Some tests # diff --git a/apps/benchmarks/ComplexGeometry/ComplexGeometry.cpp b/apps/benchmarks/ComplexGeometry/ComplexGeometry.cpp index 590e14083df6a4d668e7d31d7c8d580d72c35d94..6dc4ace06c8b64cf1d0b1af1ba50352814ab477b 100644 --- a/apps/benchmarks/ComplexGeometry/ComplexGeometry.cpp +++ b/apps/benchmarks/ComplexGeometry/ComplexGeometry.cpp @@ -19,6 +19,8 @@ // //====================================================================================================================== +#include "ComplexGeometryLatticeModel.h" + #include "blockforest/Initialization.h" #include "blockforest/SetupBlockForest.h" #include "blockforest/communication/UniformBufferedScheme.h" @@ -37,10 +39,14 @@ #include "lbm/boundary/factories/DefaultBoundaryHandling.h" #include "lbm/communication/PdfFieldPackInfo.h" #include "lbm/communication/SparsePdfFieldPackInfo.h" +#include "lbm/field/AddToStorage.h" #include "lbm/lattice_model/D3Q19.h" +#include "lbm/lattice_model/D3Q27.h" #include "lbm/lattice_model/CollisionModel.h" -#include "lbm/field/AddToStorage.h" +#include "lbm/lattice_model/ForceModel.h" +#include "lbm/refinement/TimeStep.h" #include "lbm/sweeps/CellwiseSweep.h" +#include "lbm/sweeps/SplitPureSweep.h" #include "lbm/vtk/VTKOutput.h" #include "lbm/BlockForestEvaluation.h" #include "lbm/PerformanceEvaluation.h" @@ -48,6 +54,7 @@ #include "geometry/mesh/TriangleMesh.h" #include "geometry/mesh/TriangleMeshIO.h" +#include "geometry/InitBoundaryHandling.h" #include "mesh/TriangleMeshes.h" #include "mesh/MeshOperations.h" @@ -57,6 +64,7 @@ #include "mesh/blockforest/BlockForestInitialization.h" #include "mesh/blockforest/BlockWorkloadMemory.h" #include "mesh/blockforest/BlockExclusion.h" +#include "mesh/blockforest/RefinementSelection.h" #include "mesh/distance_octree/DistanceOctree.h" #include "mesh/boundary/BoundarySetup.h" #include "mesh/boundary/BoundaryInfo.h" @@ -159,7 +167,6 @@ int main( int argc, char * argv[] ) WALBERLA_ABORT_NO_DEBUG_INFO( "USAGE: " << argv[0] << " INPUT_FILE" ); } - mpi::MPIManager::instance()->useWorldComm(); mpi::MPIManager::instance()->useWorldComm(); const auto & config = *( env.config() ); @@ -193,25 +200,34 @@ int main( int argc, char * argv[] ) distanceOctree->writeVTKOutput("distanceOctree"); auto aabb = computeAABB( *mesh ); - aabb.scale( real_t(1.3) ); + aabb.scale( real_t(6 ) ); + aabb = AABB( aabb.xMin(), aabb.yMin(), aabb.zMin(), aabb.xMax() + real_t(3) * aabb.xSize(), aabb.yMax(), aabb.zMax() ); - mesh::ComplexGeometryStructuredBlockforestCreator bfc( aabb, Vector3<real_t>( dx ), mesh::makeExcludeMeshExterior( distanceOctree, dx ) ); + mesh::ComplexGeometryStructuredBlockforestCreator bfc( aabb, Vector3<real_t>( dx ), mesh::makeExcludeMeshInterior( distanceOctree, dx ) ); auto meshWorkloadMemory = mesh::makeMeshWorkloadMemory( distanceOctree, dx ); - meshWorkloadMemory.setInsideCellWorkload(0); + meshWorkloadMemory.setInsideCellWorkload(1); meshWorkloadMemory.setOutsideCellWorkload(1); bfc.setWorkloadMemorySUIDAssignmentFunction( meshWorkloadMemory ); bfc.setPeriodicity( Vector3<bool>(true) ); + bfc.setRefinementSelectionFunction( makeRefinementSelection( distanceOctree, 3, dx, dx * real_t(1) ) ); + + //auto structuredBlockforest = bfc.createStructuredBlockForest( blockPerProcess * numProcesses ); + auto structuredBlockforest = bfc.createStructuredBlockForest( Vector3<uint_t>( 16 ) ); - auto structuredBlockforest = bfc.createStructuredBlockForest( blockPerProcess * numProcesses ); + //typedef lbm::D3Q19<lbm::collision_model::SRT, false, lbm::force_model::SimpleConstant> LatticeModel_T; + typedef lbm::ComplexGeometryLatticeModel LatticeModel_T; - typedef lbm::D3Q19<lbm::collision_model::TRT, false, lbm::force_model::SimpleConstant> LatticeModel_T; typedef walberla::uint8_t flag_t; typedef FlagField< flag_t > FlagField_T; typedef lbm::PdfField< LatticeModel_T > PdfField_T; - LatticeModel_T latticeModel( lbm::collision_model::TRT::constructWithMagicNumber( omega ), lbm::force_model::SimpleConstant( bodyForce ) ); - BlockDataID pdfFieldId = lbm::addPdfFieldToStorage( structuredBlockforest, "pdf field", latticeModel, Vector3<real_t>(0), real_t(1) ); - BlockDataID flagFieldId = field::addFlagFieldToStorage< FlagField_T >( structuredBlockforest, "flag field" ); + //LatticeModel_T latticeModel{ lbm::collision_model::SRT( omega ), lbm::force_model::SimpleConstant( bodyForce ) }; + LatticeModel_T latticeModel{ bodyForce[0], bodyForce[1], bodyForce[2], omega }; + + static const uint_t NUM_GHOSTLAYERS = 4; + + BlockDataID pdfFieldId = lbm::addPdfFieldToStorage( structuredBlockforest, "pdf field", latticeModel, Vector3<real_t>(0), real_t(1), NUM_GHOSTLAYERS, field::fzyx ); + BlockDataID flagFieldId = field::addFlagFieldToStorage< FlagField_T >( structuredBlockforest, "flag field", NUM_GHOSTLAYERS ); const FlagUID fluidFlagUID( "Fluid" ); typedef lbm::DefaultBoundaryHandlingFactory< LatticeModel_T, FlagField_T > BHFactory; @@ -226,9 +242,9 @@ int main( int argc, char * argv[] ) mesh::ColorToBoundaryMapper<mesh::TriangleMesh> colorToBoundryMapper(( mesh::BoundaryInfo( BHFactory::getNoSlipBoundaryUID() ) )); - colorToBoundryMapper.set( mesh::TriangleMesh::Color(255,0,0), mesh::BoundaryInfo( BHFactory::getPressure0BoundaryUID() ) ); - colorToBoundryMapper.set( mesh::TriangleMesh::Color(0,0,255), mesh::BoundaryInfo( BHFactory::getPressure1BoundaryUID() ) ); - colorToBoundryMapper.set( mesh::TriangleMesh::Color(255,255,255), mesh::BoundaryInfo( BHFactory::getNoSlipBoundaryUID() ) ); + // colorToBoundryMapper.set( mesh::TriangleMesh::Color(255,0,0), mesh::BoundaryInfo( BHFactory::getPressure0BoundaryUID() ) ); + // colorToBoundryMapper.set( mesh::TriangleMesh::Color(0,0,255), mesh::BoundaryInfo( BHFactory::getPressure1BoundaryUID() ) ); + // colorToBoundryMapper.set( mesh::TriangleMesh::Color(255,255,255), mesh::BoundaryInfo( BHFactory::getNoSlipBoundaryUID() ) ); auto boundaryLocations = colorToBoundryMapper.addBoundaryInfoToMesh( *mesh ); @@ -239,32 +255,41 @@ int main( int argc, char * argv[] ) meshWriter(); WALBERLA_LOG_DEVEL( "Voxelising mesh" ); - mesh::BoundarySetup boundarySetup( structuredBlockforest, makeMeshDistanceFunction( distanceOctree ), uint_t(1) ); + mesh::BoundarySetup boundarySetup( structuredBlockforest, makeMeshDistanceFunction( distanceOctree ), NUM_GHOSTLAYERS ); //WALBERLA_LOG_DEVEL( "Writing Voxelisation" ); //boundarySetup.writeVTKVoxelfile(); WALBERLA_LOG_DEVEL( "Setting up fluid cells" ); - boundarySetup.setDomainCells<BHFactory::BoundaryHandling>( boundaryHandlingId, mesh::BoundarySetup::INSIDE ); + boundarySetup.setDomainCells<BHFactory::BoundaryHandling>( boundaryHandlingId, mesh::BoundarySetup::OUTSIDE ); WALBERLA_LOG_DEVEL( "Setting up boundaries" ); - boundarySetup.setBoundaries<BHFactory::BoundaryHandling>( boundaryHandlingId, makeBoundaryLocationFunction( distanceOctree, boundaryLocations ), mesh::BoundarySetup::OUTSIDE ); + boundarySetup.setBoundaries<BHFactory::BoundaryHandling>( boundaryHandlingId, makeBoundaryLocationFunction( distanceOctree, boundaryLocations ), mesh::BoundarySetup::INSIDE ); WALBERLA_LOG_DEVEL( "done" ); + //geometry::setNonBoundaryCellsToDomain<BHFactory::BoundaryHandling> ( *structuredBlockforest, boundaryHandlingId ); + lbm::BlockForestEvaluation<FlagField_T>( structuredBlockforest, flagFieldId, fluidFlagUID ).logInfoOnRoot(); lbm::PerformanceLogger<FlagField_T> perfLogger( structuredBlockforest, flagFieldId, fluidFlagUID, 100 ); SweepTimeloop timeloop( structuredBlockforest->getBlockStorage(), timeSteps ); - blockforest::communication::UniformBufferedScheme< stencil::D3Q19 > communication( structuredBlockforest ); - - - if(sparseCommunication) - communication.addPackInfo( make_shared< lbm::SparsePdfFieldPackInfo< LatticeModel_T, FlagField_T > >( pdfFieldId, flagFieldId, fluidFlagUID, true ) ); - else - communication.addPackInfo( make_shared< lbm::PdfFieldPackInfo< LatticeModel_T > >( pdfFieldId ) ); - - timeloop.add() << BeforeFunction( communication, "communication" ) - << Sweep( BHFactory::BoundaryHandling::getBlockSweep( boundaryHandlingId ), "boundary handling" ); + //blockforest::communication::UniformBufferedScheme< stencil::D3Q19 > communication( structuredBlockforest ); + // + // + //if(sparseCommunication) + // communication.addPackInfo( make_shared< lbm::SparsePdfFieldPackInfo< LatticeModel_T, FlagField_T > >( pdfFieldId, flagFieldId, fluidFlagUID, true ) ); + //else + // communication.addPackInfo( make_shared< lbm::PdfFieldPackInfo< LatticeModel_T > >( pdfFieldId ) ); + // + //timeloop.add() << BeforeFunction( communication, "communication" ) + // << Sweep( BHFactory::BoundaryHandling::getBlockSweep( boundaryHandlingId ), "boundary handling" ); + // + ////timeloop.add() << Sweep( makeSharedSweep( lbm::makeCellwiseSweep< LatticeModel_T, FlagField_T >( pdfFieldId, flagFieldId, fluidFlagUID ) ), "LB stream & collide" ); + //timeloop.add() << Sweep( LatticeModel_T::Sweep( pdfFieldId ), "LB stream & collide" ); + + auto sweep = make_shared< LatticeModel_T::Sweep >( pdfFieldId ); + //auto sweep = lbm::makeCellwiseSweep< LatticeModel_T, FlagField_T >( pdfFieldId, flagFieldId, fluidFlagUID ); + auto refinementTimeStep = lbm::refinement::makeTimeStep<LatticeModel_T, BHFactory::BoundaryHandling > ( structuredBlockforest, sweep, pdfFieldId, boundaryHandlingId ); + timeloop.addFuncBeforeTimeStep( makeSharedFunctor( refinementTimeStep ), "Refinement time step" ); - timeloop.add() << Sweep( makeSharedSweep( lbm::makeCellwiseSweep< LatticeModel_T, FlagField_T >( pdfFieldId, flagFieldId, fluidFlagUID ) ), "LB stream & collide" ); // log remaining time timeloop.addFuncAfterTimeStep( timing::RemainingTimeLogger( timeloop.getNrOfTimeSteps() ), "remaining time logger" ); diff --git a/apps/benchmarks/ComplexGeometry/ComplexGeometryLatticeModel.gen.py b/apps/benchmarks/ComplexGeometry/ComplexGeometryLatticeModel.gen.py new file mode 100644 index 0000000000000000000000000000000000000000..5b02a1f5df2b8206ffa2eb7220f3e21680851670 --- /dev/null +++ b/apps/benchmarks/ComplexGeometry/ComplexGeometryLatticeModel.gen.py @@ -0,0 +1,18 @@ +import sympy as sp +from lbmpy_walberla import Field, generateLatticeModelFiles, RefinementScaling + +#forceField = Field.createGeneric('force', spatialDimensions=3, indexDimensions=1, layout='c') +#force = [forceField(0), forceField(1), forceField(2)] + +force = sp.symbols("force_:3") +#omega = sp.Symbol( "omega" ) +omega = sp.symbols( "omega_:2" ) + +scaling = RefinementScaling() +scaling.addStandardRelaxationRateScaling(omega[0]) +scaling.addForceScaling(force) + + +generateLatticeModelFiles(method='trt-kbc-n4', stencil='D3Q27', relaxationRates=omega, forceModel='guo', force=force, compressible=True, refinementScaling=scaling, entropic=True, optimizationParams={'split': False, 'doOverallCse' : True, 'doCseInOpposingDirections' : False} ) +#generateLatticeModelFiles(method='srt', relaxationRates=[omega], stencil='D3Q19', forceModel='simple', force=force, refinementScaling=scaling, optimizationParams={'split': True, 'doOverallCse' : True, 'doCseInOpposingDirections' : True} ) + diff --git a/apps/benchmarks/ComplexGeometry/input.conf b/apps/benchmarks/ComplexGeometry/input.conf index 0e7b293b7d1c7595e4de52bdf9ae8e0f70d1e4d5..141867647259d0978c4783ead4dfe1bd86845368 100644 --- a/apps/benchmarks/ComplexGeometry/input.conf +++ b/apps/benchmarks/ComplexGeometry/input.conf @@ -1,12 +1,50 @@ ComplexGeometry { - meshFile cube.obj; - dx 0.1; - blocksPerProcess 6; - timeSteps 10; - omega 1.4; + meshFile bunny.obj; + dx 4; + blocksPerProcess 1; + timeSteps 5001; + omega 1.999; bodyForce <0.0001, 0, 0>; Boundaries { } } + +VTK { + + fluid // identifier for this VTKOutput object + { + writeFrequency 10; + + inclusion_filters + { + DomainFilter; + } + + writers // (AT LEAST ONE IS MANDATORY [exception: if outputDomainDecomposition == true, + // no writers are allowed!], APPLICATION-DEPENDENT!) + { + Velocity; + Density; + } + } + + flags // identifier for this VTKOutput object + { + writeFrequency 999999999999999; + + writers // (AT LEAST ONE IS MANDATORY [exception: if outputDomainDecomposition == true, + // no writers are allowed!], APPLICATION-DEPENDENT!) + { + FlagField; + } + } + + domain_decomposition // identifier for this VTKOutput object + { + writeFrequency 999999999999999; + + outputDomainDecomposition true; + } +} \ No newline at end of file diff --git a/apps/benchmarks/ComplexGeometry/sphere.obj b/apps/benchmarks/ComplexGeometry/sphere.obj new file mode 100644 index 0000000000000000000000000000000000000000..fe2137ffeddca159ace5518686aea53718338c2d --- /dev/null +++ b/apps/benchmarks/ComplexGeometry/sphere.obj @@ -0,0 +1,220 @@ +#### +# +# OBJ File Generated by Meshlab +# +#### +# Object sphere.obj +# +# Vertices: 52 +# Faces: 100 +# +#### +vn 3.203486 0.106207 4.556782 +v 0.589717 0.013032 0.847959 0.752941 0.752941 0.752941 +vn 5.019849 1.775524 1.684732 +v 0.919162 0.323653 0.317881 0.752941 0.752941 0.752941 +vn 2.435736 2.603171 4.338618 +v 0.454446 0.492016 0.779993 0.752941 0.752941 0.752941 +vn 1.166519 4.432512 3.718873 +v 0.245629 0.761303 0.617920 0.752941 0.752941 0.752941 +vn 3.325176 4.334585 2.054782 +v 0.568591 0.771892 0.343297 0.752941 0.752941 0.752941 +vn 0.595211 5.541665 1.103712 +v 0.110726 0.991360 0.237197 0.752941 0.752941 0.752941 +vn -3.776296 0.767626 4.266579 +v -0.688569 0.139508 0.738187 0.000000 1.000000 0.000000 +vn -1.312800 2.808851 4.706018 +v -0.270132 0.525142 0.837286 0.000000 1.000000 0.000000 +vn -3.673248 3.342919 3.246579 +v -0.616965 0.568913 0.559955 0.000000 1.000000 0.000000 +vn -5.184217 1.765921 1.597865 +v -0.913888 0.321159 0.322155 0.000000 1.000000 0.000000 +vn -1.576481 4.921260 2.246386 +v -0.288050 0.891505 0.427122 0.000000 1.000000 0.000000 +vn -3.631493 4.235586 0.210513 +v -0.677783 0.771802 0.054808 0.000000 1.000000 0.000000 +vn 5.347003 -0.730677 2.243891 +v 0.939495 -0.137963 0.353373 0.752941 0.752941 0.752941 +vn 3.090607 -2.164615 4.376353 +v 0.564054 -0.405378 0.749705 0.752941 0.752941 0.752941 +vn 4.139648 -3.083573 2.833979 +v 0.686938 -0.535204 0.519371 0.752941 0.752941 0.752941 +vn 5.547247 -1.363092 0.328926 +v 0.988626 -0.269261 0.045694 0.752941 0.752941 0.752941 +vn 1.196453 -3.595379 4.241168 +v 0.225855 -0.666498 0.743600 0.752941 0.752941 0.752941 +vn 3.440788 -4.400445 1.622125 +v 0.605470 -0.764079 0.286901 0.752941 0.752941 0.752941 +vn 1.483118 -5.448192 -0.612228 +v 0.268689 -0.989603 -0.074576 0.752941 0.752941 0.752941 +vn -5.131380 -1.139949 2.118813 +v -0.938366 -0.205491 0.365196 0.000000 1.000000 0.000000 +vn -0.148252 -0.090956 5.329934 +v -0.029807 -0.012393 1.044330 0.752941 0.752941 0.752941 +vn -2.941041 -1.873027 4.366208 +v -0.544021 -0.347070 0.802954 0.752941 0.752941 0.752941 +vn -4.510469 -3.611316 0.273923 +v -0.799559 -0.630144 0.056333 0.752941 0.752941 0.752941 +vn -1.222675 -3.813472 4.059360 +v -0.223449 -0.686099 0.721907 0.752941 0.752941 0.752941 +vn -3.177381 -4.314878 2.055289 +v -0.568591 -0.771892 0.343297 0.752941 0.752941 0.752941 +vn 0.555067 -5.357186 2.097567 +v 0.103775 -0.959491 0.337408 0.752941 0.752941 0.752941 +vn -1.424179 -5.441336 0.261796 +v -0.242174 -0.999619 0.061062 0.752941 0.752941 0.752941 +vn 0.603496 0.876270 -5.566095 +v 0.094800 0.183733 -1.001620 0.752941 0.752941 0.752941 +vn 3.764494 0.845602 -4.219594 +v 0.688569 0.139508 -0.738187 0.752941 0.752941 0.752941 +vn 1.567199 2.909075 -4.657190 +v 0.270132 0.525142 -0.837286 0.752941 0.752941 0.752941 +vn 3.565448 3.772605 -2.549637 +v 0.615553 0.702721 -0.424646 0.752941 0.752941 0.752941 +vn 5.162828 1.763767 -1.614322 +v 0.913888 0.321159 -0.322155 0.752941 0.752941 0.752941 +vn 1.324314 5.031288 -2.331577 +v 0.253180 0.897558 -0.437313 0.752941 0.752941 0.752941 +vn 3.629731 4.384550 -0.093890 +v 0.650335 0.795689 -0.024263 0.752941 0.752941 0.752941 +vn -4.043519 0.309797 -4.155685 +v -0.705153 0.056764 -0.729210 0.000000 1.000000 0.000000 +vn -2.307409 1.462065 -5.138504 +v -0.415375 0.253185 -0.890210 0.752941 0.752941 0.752941 +vn -3.353315 3.567168 -2.854749 +v -0.600441 0.642788 -0.533812 0.000000 1.000000 0.000000 +vn -5.130730 1.780599 -1.582083 +v -0.919162 0.323653 -0.317881 0.000000 1.000000 0.000000 +vn -1.144898 3.843270 -4.171122 +v -0.223449 0.686099 -0.721907 0.752941 0.752941 0.752941 +vn -0.991535 5.441091 -1.454840 +v -0.143287 0.963273 -0.301638 0.000000 1.000000 0.000000 +vn 5.131380 -1.139949 -2.118813 +v 0.938366 -0.205491 -0.365196 0.752941 0.752941 0.752941 +vn 2.875490 -1.819046 -4.391660 +v 0.544021 -0.347070 -0.802954 0.752941 0.752941 0.752941 +vn 4.525778 -3.601130 -0.274730 +v 0.799559 -0.630144 -0.056333 0.752941 0.752941 0.752941 +vn 1.250127 -3.837570 -4.049940 +v 0.223449 -0.686099 -0.721907 0.752941 0.752941 0.752941 +vn 3.198936 -4.303796 -2.086038 +v 0.568591 -0.771892 -0.343297 0.752941 0.752941 0.752941 +vn -0.857578 -1.469198 -5.294847 +v -0.187308 -0.267522 -0.979869 0.752941 0.752941 0.752941 +vn -3.158328 -2.247927 -4.280213 +v -0.564054 -0.405378 -0.749705 0.752941 0.752941 0.752941 +vn -5.397189 -0.800014 -2.176419 +v -0.939495 -0.137963 -0.353373 0.000000 1.000000 0.000000 +vn -4.099356 -3.088730 -2.858676 +v -0.686938 -0.535204 -0.519371 0.752941 0.752941 0.752941 +vn -5.547246 -1.363092 -0.328926 +v -0.988626 -0.269261 -0.045694 0.000000 1.000000 0.000000 +vn -3.407609 -4.424288 -1.578537 +v -0.605470 -0.764079 -0.286901 0.752941 0.752941 0.752941 +vn -0.843019 -4.558556 -3.151353 +v -0.153857 -0.826487 -0.592781 0.752941 0.752941 0.752941 +# 52 vertices, 0 vertices normals + +f 16//16 2//2 13//13 +f 16//16 32//32 2//2 +f 2//2 3//3 1//1 +f 1//1 3//3 21//21 +f 21//21 3//3 8//8 +f 2//2 5//5 3//3 +f 2//2 34//34 5//5 +f 3//3 5//5 4//4 +f 3//3 4//4 8//8 +f 5//5 6//6 4//4 +f 4//4 6//6 11//11 +f 5//5 34//34 6//6 +f 34//34 33//33 6//6 +f 22//22 21//21 7//7 +f 7//7 10//10 20//20 +f 20//20 10//10 50//50 +f 7//7 21//21 8//8 +f 7//7 8//8 9//9 +f 7//7 9//9 10//10 +f 10//10 9//9 12//12 +f 10//10 12//12 38//38 +f 8//8 11//11 9//9 +f 9//9 11//11 12//12 +f 8//8 4//4 11//11 +f 1//1 13//13 2//2 +f 1//1 14//14 13//13 +f 1//1 21//21 14//14 +f 14//14 15//15 13//13 +f 13//13 15//15 16//16 +f 21//21 17//17 14//14 +f 15//15 18//18 16//16 +f 16//16 18//18 43//43 +f 14//14 17//17 15//15 +f 15//15 17//17 18//18 +f 17//17 24//24 26//26 +f 17//17 26//26 18//18 +f 18//18 19//19 43//43 +f 18//18 26//26 19//19 +f 7//7 20//20 22//22 +f 50//50 23//23 20//20 +f 22//22 24//24 21//21 +f 21//21 24//24 17//17 +f 23//23 25//25 20//20 +f 20//20 25//25 22//22 +f 22//22 25//25 24//24 +f 23//23 27//27 25//25 +f 25//25 27//27 24//24 +f 24//24 27//27 26//26 +f 42//42 28//28 29//29 +f 29//29 32//32 41//41 +f 41//41 32//32 16//16 +f 29//29 28//28 30//30 +f 29//29 30//30 31//31 +f 29//29 31//31 32//32 +f 32//32 31//31 34//34 +f 32//32 34//34 2//2 +f 30//30 33//33 31//31 +f 30//30 39//39 33//33 +f 31//31 33//33 34//34 +f 33//33 40//40 6//6 +f 50//50 38//38 48//48 +f 36//36 28//28 46//46 +f 50//50 10//10 38//38 +f 38//38 37//37 35//35 +f 35//35 37//37 36//36 +f 36//36 37//37 39//39 +f 36//36 39//39 28//28 +f 28//28 39//39 30//30 +f 38//38 12//12 37//37 +f 37//37 12//12 40//40 +f 37//37 40//40 39//39 +f 39//39 40//40 33//33 +f 12//12 11//11 40//40 +f 40//40 11//11 6//6 +f 29//29 41//41 42//42 +f 42//42 46//46 28//28 +f 16//16 43//43 41//41 +f 42//42 44//44 46//46 +f 43//43 45//45 41//41 +f 41//41 45//45 42//42 +f 42//42 45//45 44//44 +f 44//44 52//52 46//46 +f 43//43 19//19 45//45 +f 45//45 19//19 44//44 +f 44//44 19//19 52//52 +f 19//19 26//26 27//27 +f 36//36 46//46 35//35 +f 35//35 48//48 38//38 +f 35//35 46//46 47//47 +f 35//35 47//47 48//48 +f 47//47 49//49 48//48 +f 48//48 49//49 50//50 +f 49//49 51//51 50//50 +f 50//50 51//51 23//23 +f 46//46 52//52 47//47 +f 47//47 52//52 49//49 +f 49//49 52//52 51//51 +f 51//51 27//27 23//23 +f 52//52 27//27 51//51 +f 52//52 19//19 27//27 +# 100 faces, 0 coords texture + +# End of File \ No newline at end of file diff --git a/src/mesh/distance_octree/BranchNode.h b/src/mesh/distance_octree/BranchNode.h index ae434bd02a8fc2bc863d58de451c8ec952e59899..db371614382db9af9bcd0b51f6836291dea2f995 100644 --- a/src/mesh/distance_octree/BranchNode.h +++ b/src/mesh/distance_octree/BranchNode.h @@ -330,7 +330,7 @@ typename BranchNode<MeshType>::Scalar BranchNode<MeshType>::sqDistance( const Po absMinSqDistance = theSqDistance; } - WALBERLA_ASSERT_LESS( absMinSqSignedDistance, std::numeric_limits<Scalar>::max() ); + WALBERLA_ASSERT_LESS( absMinSqDistance, std::numeric_limits<Scalar>::max() ); return absMinSqDistance; }