diff --git a/source/Applications/OrganPipe/OrganPipe.cpp b/source/Applications/OrganPipe/OrganPipe.cpp index 0d1ff3e32e372e2ec94ae94cc6022b5c043f0d33..16772ef3448b6b9c56b16f7f4755c175ed553aa4 100644 --- a/source/Applications/OrganPipe/OrganPipe.cpp +++ b/source/Applications/OrganPipe/OrganPipe.cpp @@ -134,14 +134,15 @@ void run(string configname) outflowBCAdapter->setBcAlgorithm(SPtr<BCAlgorithm>(new NonReflectingOutflowBCAlgorithm())); BoundaryConditionsBlockVisitor bcVisitor; - bcVisitor.addBC(noSlipBCAdapter); + bcVisitor.addBC(slipBCAdapter); bcVisitor.addBC(velBCAdapter); bcVisitor.addBC(outflowBCAdapter); SPtr<BCProcessor> bcProc; bcProc = SPtr<BCProcessor>(new BCProcessor()); - SPtr<LBMKernel> kernel = SPtr<LBMKernel>(new CompressibleCumulantLBMKernel()); + //SPtr<LBMKernel> kernel = SPtr<LBMKernel>(new CompressibleCumulantLBMKernel()); + SPtr<LBMKernel> kernel = SPtr<LBMKernel>(new CompressibleCumulant4thOrderViscosityLBMKernel()); kernel->setBCProcessor(bcProc); ////////////////////////////////////////////////////////////////////////// @@ -209,11 +210,11 @@ void run(string configname) if (myid == 0) GbSystem3D::writeGeoObject(addWallZmax.get(), pathOut + "/geo/addWallZmax", WbWriterVtkXmlASCII::getInstance()); //wall interactors - SPtr<D3Q27Interactor> addWallXminInt(new D3Q27Interactor(addWallXmin, grid, noSlipBCAdapter, Interactor3D::SOLID)); - SPtr<D3Q27Interactor> addWallYminInt(new D3Q27Interactor(addWallYmin, grid, noSlipBCAdapter, Interactor3D::SOLID)); - SPtr<D3Q27Interactor> addWallYmaxInt(new D3Q27Interactor(addWallYmax, grid, noSlipBCAdapter, Interactor3D::SOLID)); - SPtr<D3Q27Interactor> addWallZminInt(new D3Q27Interactor(addWallZmin, grid, noSlipBCAdapter, Interactor3D::SOLID)); - SPtr<D3Q27Interactor> addWallZmaxInt(new D3Q27Interactor(addWallZmax, grid, noSlipBCAdapter, Interactor3D::SOLID)); + SPtr<D3Q27Interactor> addWallXminInt(new D3Q27Interactor(addWallXmin, grid, slipBCAdapter, Interactor3D::SOLID)); + SPtr<D3Q27Interactor> addWallYminInt(new D3Q27Interactor(addWallYmin, grid, slipBCAdapter, Interactor3D::SOLID)); + SPtr<D3Q27Interactor> addWallYmaxInt(new D3Q27Interactor(addWallYmax, grid, slipBCAdapter, Interactor3D::SOLID)); + SPtr<D3Q27Interactor> addWallZminInt(new D3Q27Interactor(addWallZmin, grid, slipBCAdapter, Interactor3D::SOLID)); + SPtr<D3Q27Interactor> addWallZmaxInt(new D3Q27Interactor(addWallZmax, grid, slipBCAdapter, Interactor3D::SOLID)); //inflow @@ -293,7 +294,8 @@ void run(string configname) if (refineLevel > 0) { - SetUndefinedNodesBlockVisitor undefNodesVisitor; + bool twoTypeOfConnectorsCheck = false; + SetUndefinedNodesBlockVisitor undefNodesVisitor(twoTypeOfConnectorsCheck); grid->accept(undefNodesVisitor); } diff --git a/source/VirtualFluidsCore/Visitors/SetKernelBlockVisitor.cpp b/source/VirtualFluidsCore/Visitors/SetKernelBlockVisitor.cpp index 17ebd9b84dfa7ce38d3137615d5c46e8fb6feb31..a2987ee43d75609fd7953beee02acd99ca4cd298 100644 --- a/source/VirtualFluidsCore/Visitors/SetKernelBlockVisitor.cpp +++ b/source/VirtualFluidsCore/Visitors/SetKernelBlockVisitor.cpp @@ -7,23 +7,8 @@ #include "Block3D.h" #include "LBMKernel.h" -//SetKernelBlockVisitor::SetKernelBlockVisitor(LBMKernel3DPtr kernel, LBMReal nue) : -// Block3DVisitor(0, Grid3DSystem::MAXLEVEL), kernel(kernel), nue(nue) -//{ -// -//} ////////////////////////////////////////////////////////////////////////// -//SetKernelBlockVisitor::SetKernelBlockVisitor( LBMKernel3DPtr kernel, LBMReal nue, double availMem, double needMem ) : -// Block3DVisitor(0, Grid3DSystem::MAXLEVEL), kernel(kernel), nue(nue) -//{ -// if (needMem > availMem) -// { -// throw UbException(UB_EXARGS,"SetKernelBlockVisitor: Not enough memory!!!"); -// } -//} -////////////////////////////////////////////////////////////////////////// -SetKernelBlockVisitor::SetKernelBlockVisitor(SPtr<LBMKernel> kernel, LBMReal nue, double availMem, double needMem, SetKernelBlockVisitor::Action action /*= SetKernelBlockVisitor::New*/) : - Block3DVisitor(0, Grid3DSystem::MAXLEVEL), kernel(kernel), nue(nue), action(action), dataSetFlag(true) +SetKernelBlockVisitor::SetKernelBlockVisitor(SPtr<LBMKernel> kernel, LBMReal nue, double availMem, double needMem, SetKernelBlockVisitor::Action action) : Block3DVisitor(0, Grid3DSystem::MAXLEVEL), kernel(kernel), nue(nue), action(action), dataSetFlag(true) { if (needMem > availMem) { diff --git a/source/VirtualFluidsCore/Visitors/SetUndefinedNodesBlockVisitor.cpp b/source/VirtualFluidsCore/Visitors/SetUndefinedNodesBlockVisitor.cpp index 91919327ac6665244aa37963d61492523b202069..313a741e5c5d8d480db4787eece03c4ecd5b095f 100644 --- a/source/VirtualFluidsCore/Visitors/SetUndefinedNodesBlockVisitor.cpp +++ b/source/VirtualFluidsCore/Visitors/SetUndefinedNodesBlockVisitor.cpp @@ -10,8 +10,7 @@ #include "ILBMKernel.h" -SetUndefinedNodesBlockVisitor::SetUndefinedNodesBlockVisitor() : - Block3DVisitor(0, Grid3DSystem::MAXLEVEL) +SetUndefinedNodesBlockVisitor::SetUndefinedNodesBlockVisitor(bool twoTypeOfConectorsCheck) : Block3DVisitor(0, Grid3DSystem::MAXLEVEL), twoTypeOfConnectorsCheck(twoTypeOfConnectorsCheck) { } @@ -634,18 +633,18 @@ void SetUndefinedNodesBlockVisitor::visit(SPtr<Grid3D> grid, SPtr<Block3D> block //invert scaleCF blocks if(block->hasInterpolationFlagCF()) { - //if(block->hasInterpolationFlagFC()) - //{ - // for (int i = D3Q27System::E; i <= D3Q27System::BSW; i++) - // { - // UBLOG(logINFO, "FC in dir="<<i<<" "<<block->hasInterpolationFlagFC(i)); - // } - // for (int i = D3Q27System::E; i<=D3Q27System::BSW; i++) - // { - // UBLOG(logINFO, "CF in dir="<<i<<" "<<block->hasInterpolationFlagCF(i)); - // } - // throw UbException(UB_EXARGS, "block "+block->toString()+" has CF and FC"); - //} + if(block->hasInterpolationFlagFC() && twoTypeOfConnectorsCheck) + { + for (int i = D3Q27System::E; i <= D3Q27System::BSW; i++) + { + UBLOG(logINFO, "FC in dir="<<i<<" "<<block->hasInterpolationFlagFC(i)); + } + for (int i = D3Q27System::E; i<=D3Q27System::BSW; i++) + { + UBLOG(logINFO, "CF in dir="<<i<<" "<<block->hasInterpolationFlagCF(i)); + } + throw UbException(UB_EXARGS, "block "+block->toString()+" has CF and FC"); + } minX1 = gl; minX2 = gl; diff --git a/source/VirtualFluidsCore/Visitors/SetUndefinedNodesBlockVisitor.h b/source/VirtualFluidsCore/Visitors/SetUndefinedNodesBlockVisitor.h index b8ecc3a99ac62b39080ea91e26749c321d3b5712..0d3cd6270050b8193d1f4127e024a1b86b70705b 100644 --- a/source/VirtualFluidsCore/Visitors/SetUndefinedNodesBlockVisitor.h +++ b/source/VirtualFluidsCore/Visitors/SetUndefinedNodesBlockVisitor.h @@ -12,13 +12,15 @@ class BCArray3D; class SetUndefinedNodesBlockVisitor : public Block3DVisitor { public: - SetUndefinedNodesBlockVisitor(); + SetUndefinedNodesBlockVisitor(bool twoTypeOfConnectorsCheck = true); virtual ~SetUndefinedNodesBlockVisitor() {} void visit(SPtr<Grid3D> grid, SPtr<Block3D> block) override; - -private: +protected: void setNodesUndefined( int startix1, int endix1, int startix2, int endix2, int startix3, int endix3, SPtr<BCArray3D> bcMatix ); +private: + bool twoTypeOfConnectorsCheck; + }; #endif