From 4e011e2ae5d49becf8416e466895f8ae9cc35441 Mon Sep 17 00:00:00 2001 From: Michael Kuron <mkuron@icp.uni-stuttgart.de> Date: Fri, 31 Jan 2020 11:56:02 +0100 Subject: [PATCH] Introduce isParser/isVelocity into ParserUBB --- src/lbm/boundary/ParserUBB.h | 25 +++++++++++++++++++------ src/lbm/boundary/factories/all.h | 3 ++- 2 files changed, 21 insertions(+), 7 deletions(-) diff --git a/src/lbm/boundary/ParserUBB.h b/src/lbm/boundary/ParserUBB.h index e9c315c02..2ef68c194 100644 --- a/src/lbm/boundary/ParserUBB.h +++ b/src/lbm/boundary/ParserUBB.h @@ -98,6 +98,16 @@ public: Vector3< real_t > velocity_; }; // class Velocity + static bool isParser(const BoundaryConfiguration & config) { + auto parser = dynamic_cast< const Parser * >( &config ); + return parser != nullptr; + } + + static bool isVelocity(const BoundaryConfiguration & config) { + auto velocity = dynamic_cast< const Velocity * >( &config ); + return velocity != nullptr; + } + typedef GhostLayerField< shared_ptr<Parser>, 1 > ParserField; typedef GhostLayerField< Vector3<real_t>, 1 > VelocityField; @@ -358,14 +368,15 @@ inline void ParserUBB< LatticeModel_T, flag_t, AdaptVelocityToExternalForce, Sto { WALBERLA_ASSERT_NOT_NULLPTR( parserField_ ); - if( auto v = dynamic_cast< const Velocity * >( &parser ) ) + if( isVelocity(parser) ) { + auto v = dynamic_cast< const Velocity * >( &parser ); velocityField_->get( x, y, z ) = v->velocity(); parserField_->get( x, y, z ) = nullptr; return; } - WALBERLA_ASSERT_EQUAL( dynamic_cast< const Parser * >( &parser ), &parser ); + WALBERLA_ASSERT( isParser(parser) ); auto & p = dynamic_cast< const Parser & >( parser ); if( p.isTimeDependent() ) @@ -389,8 +400,9 @@ inline void ParserUBB< LatticeModel_T, flag_t, AdaptVelocityToExternalForce, Sto { WALBERLA_ASSERT_NOT_NULLPTR( parserField_ ); - if( auto v = dynamic_cast< const Velocity * >( &parser ) ) + if( isVelocity(parser) ) { + auto v = dynamic_cast< const Velocity * >( &parser ); for( auto cell = parserField_->beginSliceXYZ( cells ); cell != parserField_->end(); ++cell ) { velocityField_->get( cell.x(), cell.y(), cell.z() ) = v->velocity(); @@ -399,7 +411,7 @@ inline void ParserUBB< LatticeModel_T, flag_t, AdaptVelocityToExternalForce, Sto return; } - WALBERLA_ASSERT_EQUAL( dynamic_cast< const Parser * >( &parser ), &parser ); + WALBERLA_ASSERT( isParser(parser) ); auto & p = dynamic_cast< const Parser & >( parser ); if( p.isTimeDependent() ) @@ -430,8 +442,9 @@ inline void ParserUBB< LatticeModel_T, flag_t, AdaptVelocityToExternalForce, Sto { WALBERLA_ASSERT_NOT_NULLPTR( parserField_ ); - if( auto v = dynamic_cast< const Velocity * >( &parser ) ) + if( isVelocity(parser) ) { + auto v = dynamic_cast< const Velocity * >( &parser ); for( auto cell = begin; cell != end; ++cell ) { velocityField_->get( cell.x(), cell.y(), cell.z() ) = v->velocity(); @@ -440,7 +453,7 @@ inline void ParserUBB< LatticeModel_T, flag_t, AdaptVelocityToExternalForce, Sto return; } - WALBERLA_ASSERT_EQUAL( dynamic_cast< const Parser * >( &parser ), &parser ); + WALBERLA_ASSERT( isParser(parser) ); auto & p = dynamic_cast< const Parser & >( parser ); if( p.isTimeDependent() ) diff --git a/src/lbm/boundary/factories/all.h b/src/lbm/boundary/factories/all.h index 58e1f6bed..b30d024da 100644 --- a/src/lbm/boundary/factories/all.h +++ b/src/lbm/boundary/factories/all.h @@ -24,4 +24,5 @@ #include "DefaultBoundaryHandling.h" #include "DefaultBoundaryHandlingCollection.h" -#include "DefaultDiffusionBoundaryHandling.h" \ No newline at end of file +#include "DefaultDiffusionBoundaryHandling.h" +#include "ExtendedBoundaryHandlingFactory.h" -- GitLab