Skip to content
Snippets Groups Projects
Commit 8c534baf authored by Christoph Rettinger's avatar Christoph Rettinger
Browse files

Added field traversal option to LBM boundary handling factories

parent c95e416e
No related branches found
No related tags found
No related merge requests found
...@@ -89,7 +89,18 @@ public: ...@@ -89,7 +89,18 @@ public:
const real_t pressure0, const real_t pressure0,
const real_t pressure1 ) const real_t pressure1 )
{ {
DefaultBoundaryHandlingFactory factory ( flagFieldID, pdfFieldID, flagUIDSet, velocity0, velocity1, pressure0, pressure1 ); return addBoundaryHandlingToStorage(bs, identifier, flagFieldID, pdfFieldID, flagUIDSet, velocity0, velocity1, pressure0, pressure1, BoundaryHandling::Mode::OPTIMIZED_SPARSE_TRAVERSAL);
}
static BlockDataID addBoundaryHandlingToStorage( const shared_ptr< StructuredBlockStorage > & bs, const std::string & identifier,
BlockDataID flagFieldID, BlockDataID pdfFieldID, const Set< FlagUID > & flagUIDSet,
const Vector3<real_t> & velocity0,
const Vector3<real_t> & velocity1,
const real_t pressure0,
const real_t pressure1,
const typename BoundaryHandling::Mode boundaryHandlingTraversalMode )
{
DefaultBoundaryHandlingFactory factory ( flagFieldID, pdfFieldID, flagUIDSet, velocity0, velocity1, pressure0, pressure1, boundaryHandlingTraversalMode );
return bs->addStructuredBlockData< BoundaryHandling >( factory, identifier ); return bs->addStructuredBlockData< BoundaryHandling >( factory, identifier );
} }
...@@ -110,8 +121,9 @@ public: ...@@ -110,8 +121,9 @@ public:
DefaultBoundaryHandlingFactory( const BlockDataID & flagField, const BlockDataID & pdfField, const Set< FlagUID > & flagUIDSet, DefaultBoundaryHandlingFactory( const BlockDataID & flagField, const BlockDataID & pdfField, const Set< FlagUID > & flagUIDSet,
const Velocity velocity0, const Velocity velocity1, const Velocity velocity0, const Velocity velocity1,
const real_t pressure0, const real_t pressure1 ); const real_t pressure0, const real_t pressure1,
const typename BoundaryHandling::Mode boundaryHandlingTraversalMode );
BoundaryHandling * operator()( walberla::IBlock * const block, const walberla::StructuredBlockStorage * const storage ) const; BoundaryHandling * operator()( walberla::IBlock * const block, const walberla::StructuredBlockStorage * const storage ) const;
...@@ -124,6 +136,8 @@ private: ...@@ -124,6 +136,8 @@ private:
Velocity velocity0_, velocity1_; Velocity velocity0_, velocity1_;
real_t pressure0_, pressure1_; real_t pressure0_, pressure1_;
const typename BoundaryHandling::Mode boundaryHandlingTraversalMode_;
}; // class DefaultBoundaryHandlingFactory }; // class DefaultBoundaryHandlingFactory
...@@ -143,16 +157,17 @@ template <typename LatticeModel, typename FlagFieldT > ...@@ -143,16 +157,17 @@ template <typename LatticeModel, typename FlagFieldT >
DefaultBoundaryHandlingFactory<LatticeModel, FlagFieldT>::DefaultBoundaryHandlingFactory( DefaultBoundaryHandlingFactory<LatticeModel, FlagFieldT>::DefaultBoundaryHandlingFactory(
const BlockDataID & flagField, const BlockDataID & pdfField, const Set< FlagUID > & flagUIDSet, const BlockDataID & flagField, const BlockDataID & pdfField, const Set< FlagUID > & flagUIDSet,
const Velocity velocity0, const Velocity velocity1, const Velocity velocity0, const Velocity velocity1,
const real_t pressure0, const real_t pressure1 ) : const real_t pressure0, const real_t pressure1,
const typename BoundaryHandling::Mode boundaryHandlingTraversalMode ) :
flagField_( flagField ), pdfField_( pdfField ), flagUIDSet_(flagUIDSet), velocity0_( velocity0 ), velocity1_( velocity1 ), flagField_( flagField ), pdfField_( pdfField ), flagUIDSet_(flagUIDSet), velocity0_( velocity0 ), velocity1_( velocity1 ),
pressure0_( pressure0 ), pressure1_( pressure1 ) pressure0_( pressure0 ), pressure1_( pressure1 ), boundaryHandlingTraversalMode_( boundaryHandlingTraversalMode )
{ {
} }
template <typename LatticeModel, typename FlagFieldT > template <typename LatticeModel, typename FlagFieldT >
typename DefaultBoundaryHandlingFactory<LatticeModel, FlagFieldT>::BoundaryHandling * typename DefaultBoundaryHandlingFactory<LatticeModel, FlagFieldT>::BoundaryHandling *
DefaultBoundaryHandlingFactory<LatticeModel, FlagFieldT>::operator()( walberla::IBlock * const block, DefaultBoundaryHandlingFactory<LatticeModel, FlagFieldT>::operator()( walberla::IBlock * const block,
const walberla::StructuredBlockStorage * const /*storage*/ ) const const walberla::StructuredBlockStorage * const /*storage*/ ) const
{ {
PdfFieldLM * const pdfField = block->getData< PdfFieldLM >( pdfField_ ); PdfFieldLM * const pdfField = block->getData< PdfFieldLM >( pdfField_ );
FlagFieldT * const flagField = block->getData< FlagFieldT >( flagField_ ); FlagFieldT * const flagField = block->getData< FlagFieldT >( flagField_ );
...@@ -167,7 +182,8 @@ DefaultBoundaryHandlingFactory<LatticeModel, FlagFieldT>::operator()( walberla:: ...@@ -167,7 +182,8 @@ DefaultBoundaryHandlingFactory<LatticeModel, FlagFieldT>::operator()( walberla::
BcSimpleUBB ( getVelocity0BoundaryUID(), getVelocity0(), pdfField, velocity0_ ), BcSimpleUBB ( getVelocity0BoundaryUID(), getVelocity0(), pdfField, velocity0_ ),
BcSimpleUBB ( getVelocity1BoundaryUID(), getVelocity1(), pdfField, velocity1_ ), BcSimpleUBB ( getVelocity1BoundaryUID(), getVelocity1(), pdfField, velocity1_ ),
BcSimplePressure( getPressure0BoundaryUID(), getPressure0(), pdfField, pressure0_ ), BcSimplePressure( getPressure0BoundaryUID(), getPressure0(), pdfField, pressure0_ ),
BcSimplePressure( getPressure1BoundaryUID(), getPressure1(), pdfField, pressure1_ ) BcSimplePressure( getPressure1BoundaryUID(), getPressure1(), pdfField, pressure1_ ),
boundaryHandlingTraversalMode_
); );
return handling; return handling;
......
...@@ -87,9 +87,16 @@ public: ...@@ -87,9 +87,16 @@ public:
typedef walberla::boundary::BoundaryHandling< FlagFieldT, Stencil, BcNoSlip, BcFreeSlip, BcPressure, BcUBB, BcOutlet, BcCurved > BoundaryHandling; typedef walberla::boundary::BoundaryHandling< FlagFieldT, Stencil, BcNoSlip, BcFreeSlip, BcPressure, BcUBB, BcOutlet, BcCurved > BoundaryHandling;
static BlockDataID addBoundaryHandlingToStorage( const shared_ptr< StructuredBlockStorage > & bs, const std::string & identifier, static BlockDataID addBoundaryHandlingToStorage( const shared_ptr< StructuredBlockStorage > & bs, const std::string & identifier,
BlockDataID flagFieldID, BlockDataID pdfFieldID, const Set< FlagUID > & flagUIDSet ) BlockDataID flagFieldID, BlockDataID pdfFieldID, const Set< FlagUID > & flagUIDSet)
{ {
ExtendedBoundaryHandlingFactory factory ( flagFieldID, pdfFieldID, flagUIDSet ); return addBoundaryHandlingToStorage(bs, identifier, pdfFieldID, pdfFieldID, flagUIDSet,BoundaryHandling::Mode::OPTIMIZED_SPARSE_TRAVERSAL );
}
static BlockDataID addBoundaryHandlingToStorage( const shared_ptr< StructuredBlockStorage > & bs, const std::string & identifier,
BlockDataID flagFieldID, BlockDataID pdfFieldID, const Set< FlagUID > & flagUIDSet,
const typename BoundaryHandling::Mode boundaryHandlingTraversalMode )
{
ExtendedBoundaryHandlingFactory factory ( flagFieldID, pdfFieldID, flagUIDSet, boundaryHandlingTraversalMode );
return bs->addStructuredBlockData< BoundaryHandling >( factory, identifier ); return bs->addStructuredBlockData< BoundaryHandling >( factory, identifier );
} }
...@@ -109,7 +116,8 @@ public: ...@@ -109,7 +116,8 @@ public:
static const walberla::BoundaryUID & getCurvedBoundaryUID() { static BoundaryUID uid( "Curved" ); return uid; } static const walberla::BoundaryUID & getCurvedBoundaryUID() { static BoundaryUID uid( "Curved" ); return uid; }
ExtendedBoundaryHandlingFactory( const BlockDataID & flagField, const BlockDataID & pdfField, const Set< FlagUID > & flagUIDSet ); ExtendedBoundaryHandlingFactory( const BlockDataID & flagField, const BlockDataID & pdfField, const Set< FlagUID > & flagUIDSet,
const typename BoundaryHandling::Mode boundaryHandlingTraversalMode );
BoundaryHandling * operator()( walberla::IBlock * const block, const walberla::StructuredBlockStorage * const storage ) const; BoundaryHandling * operator()( walberla::IBlock * const block, const walberla::StructuredBlockStorage * const storage ) const;
...@@ -119,6 +127,8 @@ private: ...@@ -119,6 +127,8 @@ private:
const Set< FlagUID > flagUIDSet_; const Set< FlagUID > flagUIDSet_;
const typename BoundaryHandling::Mode boundaryHandlingTraversalMode_;
}; // class ExtendedBoundaryHandlingFactory }; // class ExtendedBoundaryHandlingFactory
...@@ -132,8 +142,9 @@ private: ...@@ -132,8 +142,9 @@ private:
//********************************************************************************************************************** //**********************************************************************************************************************
template <typename LatticeModel, typename FlagFieldT > template <typename LatticeModel, typename FlagFieldT >
ExtendedBoundaryHandlingFactory<LatticeModel, FlagFieldT>::ExtendedBoundaryHandlingFactory( ExtendedBoundaryHandlingFactory<LatticeModel, FlagFieldT>::ExtendedBoundaryHandlingFactory(
const BlockDataID & flagField, const BlockDataID & pdfField, const Set< FlagUID > & flagUIDSet ) : const BlockDataID & flagField, const BlockDataID & pdfField, const Set< FlagUID > & flagUIDSet,
flagField_( flagField ), pdfField_( pdfField ), flagUIDSet_(flagUIDSet) const typename BoundaryHandling::Mode boundaryHandlingTraversalMode ) :
flagField_( flagField ), pdfField_( pdfField ), flagUIDSet_(flagUIDSet), boundaryHandlingTraversalMode_(boundaryHandlingTraversalMode)
{ {
} }
...@@ -158,7 +169,8 @@ ExtendedBoundaryHandlingFactory<LatticeModel, FlagFieldT>::operator()( IBlock * ...@@ -158,7 +169,8 @@ ExtendedBoundaryHandlingFactory<LatticeModel, FlagFieldT>::operator()( IBlock *
BcPressure ( getPressureBoundaryUID(), getPressure(), pdfField ), BcPressure ( getPressureBoundaryUID(), getPressure(), pdfField ),
BcUBB ( getUBBBoundaryUID(), getUBB(), pdfField, flagField, storage->getLevel(*block), block->getAABB() ), BcUBB ( getUBBBoundaryUID(), getUBB(), pdfField, flagField, storage->getLevel(*block), block->getAABB() ),
BcOutlet ( getOutletBoundaryUID(), getOutlet(), pdfField, flagField, mask ), BcOutlet ( getOutletBoundaryUID(), getOutlet(), pdfField, flagField, mask ),
BcCurved ( getCurvedBoundaryUID(), getCurved(), pdfField, flagField, mask ) BcCurved ( getCurvedBoundaryUID(), getCurved(), pdfField, flagField, mask ),
boundaryHandlingTraversalMode_
); );
return handling; return handling;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment