From 95c9f2ee5722fc0596876d86503bd80c3b25f8a3 Mon Sep 17 00:00:00 2001 From: alena <akaranchuk@list.ru> Date: Mon, 17 Jul 2023 12:08:46 +0200 Subject: [PATCH] Change digit constants to char --- .../BoundaryConditions/BCStrategy.cpp | 6 +- .../NonReflectingInflowBCStrategy.cpp | 112 ++++++------ ...lectingOutflowWithRelaxationBCStrategy.cpp | 110 ++++++------ .../VelocityWithDensityBCStrategy.cpp | 4 +- ...onsDoubleGhostLayerFullVectorConnector.cpp | 15 +- .../ThreeDistributionsFullVectorConnector.cpp | 15 +- .../Interactors/D3Q27Interactor.cpp | 92 +++++----- .../D3Q27TriFaceMeshInteractor.cpp | 159 +++++++++--------- .../VirtualFluidsCore/LBM/BGKLBMKernel.cpp | 2 +- .../LBM/InitDensityLBMKernel.cpp | 2 +- .../CompressibleOffsetInterpolator.cpp | 6 +- .../CompressibleOffsetMomentsInterpolator.cpp | 16 +- .../IncompressibleOffsetInterpolator.cpp | 90 +++++----- .../IntegrateValuesHelper.cpp | 4 +- ...teBoundaryConditionsSimulationObserver.cpp | 16 +- .../InitDistributionsBlockVisitor.cpp | 2 +- 16 files changed, 336 insertions(+), 315 deletions(-) diff --git a/src/cpu/VirtualFluidsCore/BoundaryConditions/BCStrategy.cpp b/src/cpu/VirtualFluidsCore/BoundaryConditions/BCStrategy.cpp index 3331f2453..5458fa09c 100644 --- a/src/cpu/VirtualFluidsCore/BoundaryConditions/BCStrategy.cpp +++ b/src/cpu/VirtualFluidsCore/BoundaryConditions/BCStrategy.cpp @@ -54,18 +54,20 @@ void BCStrategy::setBcPointer(SPtr<BoundaryConditions> bcPtr) { this->bcPtr = bc ////////////////////////////////////////////////////////////////////////// void BCStrategy::setCompressible(bool c) { + using namespace vf::basics::constant; + compressible = c; if (this->compressible) { calcFeqsForDirFct = &D3Q27System::getCompFeqForDirection; calcMacrosFct = &D3Q27System::calcCompMacroscopicValues; calcFeqFct = &D3Q27System::calcCompFeq; - compressibleFactor = 1.0; + compressibleFactor = c1o1; } else { calcFeqsForDirFct = &D3Q27System::getIncompFeqForDirection; calcMacrosFct = &D3Q27System::calcIncompMacroscopicValues; calcFeqFct = &D3Q27System::calcIncompFeq; - compressibleFactor = 0.0; + compressibleFactor = c0o1; } } ////////////////////////////////////////////////////////////////////////// diff --git a/src/cpu/VirtualFluidsCore/BoundaryConditions/NonReflectingInflowBCStrategy.cpp b/src/cpu/VirtualFluidsCore/BoundaryConditions/NonReflectingInflowBCStrategy.cpp index 7f5eaf840..b1cf37e4b 100644 --- a/src/cpu/VirtualFluidsCore/BoundaryConditions/NonReflectingInflowBCStrategy.cpp +++ b/src/cpu/VirtualFluidsCore/BoundaryConditions/NonReflectingInflowBCStrategy.cpp @@ -98,14 +98,14 @@ void NonReflectingInflowBCStrategy::applyBC() LBMReal rho, vx1, vx2, vx3; calcMacrosFct(f, rho, vx1, vx2, vx3); //vx1 = 0.; - LBMReal BCVeloWeight = 0.5; + LBMReal BCVeloWeight = c1o2; // LBMReal velocity = 0.004814077025232405; // LBMReal velocity = 0.00057735; //LBMReal velocity = 0.04; // LBMReal velocity = 0.01; // LBMReal velocity = 1./112.; // LBMReal velocity = 1./126.; - LBMReal velocity = 1./200.; + LBMReal velocity = c1o100/2; // LBMReal velocity = 0.005; //LBMReal delf =(-velocity+vx1)*0.5 ; LBMReal delf; @@ -114,15 +114,15 @@ void NonReflectingInflowBCStrategy::applyBC() case DIR_P00: delf = (-velocity + vx1) * BCVeloWeight; // delf = (-velocity ) * BCVeloWeight; - f[DIR_P00] = ftemp[DIR_P00] * (one_over_sqrt3 + vx1) + (1.0 - one_over_sqrt3 - vx1) * f[DIR_P00] - delf* WEIGTH[DIR_P00]; - f[DIR_PP0] = ftemp[DIR_PP0] * (one_over_sqrt3 + vx1) + (1.0 - one_over_sqrt3 - vx1) * f[DIR_PP0]- delf* WEIGTH[DIR_PP0]; - f[DIR_PM0] = ftemp[DIR_PM0] * (one_over_sqrt3 + vx1) + (1.0 - one_over_sqrt3 - vx1) * f[DIR_PM0]- delf* WEIGTH[DIR_PM0]; - f[DIR_P0P] = ftemp[DIR_P0P] * (one_over_sqrt3 + vx1) + (1.0 - one_over_sqrt3 - vx1) * f[DIR_P0P]- delf* WEIGTH[DIR_P0P]; - f[DIR_P0M] = ftemp[DIR_P0M] * (one_over_sqrt3 + vx1) + (1.0 - one_over_sqrt3 - vx1) * f[DIR_P0M]- delf* WEIGTH[DIR_P0M]; - f[DIR_PPP] = ftemp[DIR_PPP] * (one_over_sqrt3 + vx1) + (1.0 - one_over_sqrt3 - vx1) * f[DIR_PPP]- delf* WEIGTH[DIR_PPP]; - f[DIR_PMP] = ftemp[DIR_PMP] * (one_over_sqrt3 + vx1) + (1.0 - one_over_sqrt3 - vx1) * f[DIR_PMP]- delf* WEIGTH[DIR_PMP]; - f[DIR_PPM] = ftemp[DIR_PPM] * (one_over_sqrt3 + vx1) + (1.0 - one_over_sqrt3 - vx1) * f[DIR_PPM]- delf* WEIGTH[DIR_PPM]; - f[DIR_PMM] = ftemp[DIR_PMM] * (one_over_sqrt3 + vx1) + (1.0 - one_over_sqrt3 - vx1) * f[DIR_PMM]- delf* WEIGTH[DIR_PMM]; + f[DIR_P00] = ftemp[DIR_P00] * (one_over_sqrt3 + vx1) + (c1o1 - one_over_sqrt3 - vx1) * f[DIR_P00] - delf* WEIGTH[DIR_P00]; + f[DIR_PP0] = ftemp[DIR_PP0] * (one_over_sqrt3 + vx1) + (c1o1 - one_over_sqrt3 - vx1) * f[DIR_PP0]- delf* WEIGTH[DIR_PP0]; + f[DIR_PM0] = ftemp[DIR_PM0] * (one_over_sqrt3 + vx1) + (c1o1 - one_over_sqrt3 - vx1) * f[DIR_PM0]- delf* WEIGTH[DIR_PM0]; + f[DIR_P0P] = ftemp[DIR_P0P] * (one_over_sqrt3 + vx1) + (c1o1 - one_over_sqrt3 - vx1) * f[DIR_P0P]- delf* WEIGTH[DIR_P0P]; + f[DIR_P0M] = ftemp[DIR_P0M] * (one_over_sqrt3 + vx1) + (c1o1 - one_over_sqrt3 - vx1) * f[DIR_P0M]- delf* WEIGTH[DIR_P0M]; + f[DIR_PPP] = ftemp[DIR_PPP] * (one_over_sqrt3 + vx1) + (c1o1 - one_over_sqrt3 - vx1) * f[DIR_PPP]- delf* WEIGTH[DIR_PPP]; + f[DIR_PMP] = ftemp[DIR_PMP] * (one_over_sqrt3 + vx1) + (c1o1 - one_over_sqrt3 - vx1) * f[DIR_PMP]- delf* WEIGTH[DIR_PMP]; + f[DIR_PPM] = ftemp[DIR_PPM] * (one_over_sqrt3 + vx1) + (c1o1 - one_over_sqrt3 - vx1) * f[DIR_PPM]- delf* WEIGTH[DIR_PPM]; + f[DIR_PMM] = ftemp[DIR_PMM] * (one_over_sqrt3 + vx1) + (c1o1 - one_over_sqrt3 - vx1) * f[DIR_PMM]- delf* WEIGTH[DIR_PMM]; //f[DIR_P00] = (ftemp[DIR_P00] * (one_over_sqrt3 + vx1) + (1.0 - one_over_sqrt3 - vx1) * f[DIR_P00]) * // (1 - BCVeloWeight) + // (ftemp[DIR_M00] * (one_over_sqrt3 + vx1) + (1.0 - one_over_sqrt3 - vx1) * f[DIR_M00] + @@ -181,23 +181,23 @@ void NonReflectingInflowBCStrategy::applyBC() break; case DIR_M00: delf = (-velocity - vx1) * BCVeloWeight; - f[DIR_M00] = ftemp[DIR_M00] * (one_over_sqrt3 - vx1) + (1.0 - one_over_sqrt3 + vx1) * f[DIR_M00] - + f[DIR_M00] = ftemp[DIR_M00] * (one_over_sqrt3 - vx1) + (c1o1 - one_over_sqrt3 + vx1) * f[DIR_M00] - delf * WEIGTH[DIR_M00]; - f[DIR_MP0] = ftemp[DIR_MP0] * (one_over_sqrt3 - vx1) + (1.0 - one_over_sqrt3 + vx1) * f[DIR_MP0] - + f[DIR_MP0] = ftemp[DIR_MP0] * (one_over_sqrt3 - vx1) + (c1o1 - one_over_sqrt3 + vx1) * f[DIR_MP0] - delf * WEIGTH[DIR_MP0]; - f[DIR_MM0] = ftemp[DIR_MM0] * (one_over_sqrt3 - vx1) + (1.0 - one_over_sqrt3 + vx1) * f[DIR_MM0] - + f[DIR_MM0] = ftemp[DIR_MM0] * (one_over_sqrt3 - vx1) + (c1o1 - one_over_sqrt3 + vx1) * f[DIR_MM0] - delf * WEIGTH[DIR_MM0]; - f[DIR_M0P] = ftemp[DIR_M0P] * (one_over_sqrt3 - vx1) + (1.0 - one_over_sqrt3 + vx1) * f[DIR_M0P] - + f[DIR_M0P] = ftemp[DIR_M0P] * (one_over_sqrt3 - vx1) + (c1o1 - one_over_sqrt3 + vx1) * f[DIR_M0P] - delf * WEIGTH[DIR_M0P]; - f[DIR_M0M] = ftemp[DIR_M0M] * (one_over_sqrt3 - vx1) + (1.0 - one_over_sqrt3 + vx1) * f[DIR_M0M] - + f[DIR_M0M] = ftemp[DIR_M0M] * (one_over_sqrt3 - vx1) + (c1o1 - one_over_sqrt3 + vx1) * f[DIR_M0M] - delf * WEIGTH[DIR_M0M]; - f[DIR_MPP] = ftemp[DIR_MPP] * (one_over_sqrt3 - vx1) + (1.0 - one_over_sqrt3 + vx1) * f[DIR_MPP] - + f[DIR_MPP] = ftemp[DIR_MPP] * (one_over_sqrt3 - vx1) + (c1o1 - one_over_sqrt3 + vx1) * f[DIR_MPP] - delf * WEIGTH[DIR_MPP]; - f[DIR_MMP] = ftemp[DIR_MMP] * (one_over_sqrt3 - vx1) + (1.0 - one_over_sqrt3 + vx1) * f[DIR_MMP] - + f[DIR_MMP] = ftemp[DIR_MMP] * (one_over_sqrt3 - vx1) + (c1o1 - one_over_sqrt3 + vx1) * f[DIR_MMP] - delf * WEIGTH[DIR_MMP]; - f[DIR_MPM] = ftemp[DIR_MPM] * (one_over_sqrt3 - vx1) + (1.0 - one_over_sqrt3 + vx1) * f[DIR_MPM] - + f[DIR_MPM] = ftemp[DIR_MPM] * (one_over_sqrt3 - vx1) + (c1o1 - one_over_sqrt3 + vx1) * f[DIR_MPM] - delf * WEIGTH[DIR_MPM]; - f[DIR_MMM] = ftemp[DIR_MMM] * (one_over_sqrt3 - vx1) + (1.0 - one_over_sqrt3 + vx1) * f[DIR_MMM] - + f[DIR_MMM] = ftemp[DIR_MMM] * (one_over_sqrt3 - vx1) + (c1o1 - one_over_sqrt3 + vx1) * f[DIR_MMM] - delf * WEIGTH[DIR_MMM]; distributions->setDistributionInvForDirection(f[DIR_M00], x1 + DX1[DIR_P00], x2 + DX2[DIR_P00], x3 + DX3[DIR_P00], DIR_P00); @@ -212,23 +212,23 @@ void NonReflectingInflowBCStrategy::applyBC() break; case DIR_0P0: delf = (-velocity + vx2) * BCVeloWeight; - f[DIR_0P0] = ftemp[DIR_0P0] * (one_over_sqrt3 + vx2) + (1.0 - one_over_sqrt3 - vx2) * f[DIR_0P0] - + f[DIR_0P0] = ftemp[DIR_0P0] * (one_over_sqrt3 + vx2) + (c1o1 - one_over_sqrt3 - vx2) * f[DIR_0P0] - delf * WEIGTH[DIR_0P0]; - f[DIR_PP0] = ftemp[DIR_PP0] * (one_over_sqrt3 + vx2) + (1.0 - one_over_sqrt3 - vx2) * f[DIR_PP0] - + f[DIR_PP0] = ftemp[DIR_PP0] * (one_over_sqrt3 + vx2) + (c1o1 - one_over_sqrt3 - vx2) * f[DIR_PP0] - delf * WEIGTH[DIR_PP0]; - f[DIR_MP0] = ftemp[DIR_MP0] * (one_over_sqrt3 + vx2) + (1.0 - one_over_sqrt3 - vx2) * f[DIR_MP0] - + f[DIR_MP0] = ftemp[DIR_MP0] * (one_over_sqrt3 + vx2) + (c1o1 - one_over_sqrt3 - vx2) * f[DIR_MP0] - delf * WEIGTH[DIR_MP0]; - f[DIR_0PP] = ftemp[DIR_0PP] * (one_over_sqrt3 + vx2) + (1.0 - one_over_sqrt3 - vx2) * f[DIR_0PP] - + f[DIR_0PP] = ftemp[DIR_0PP] * (one_over_sqrt3 + vx2) + (c1o1 - one_over_sqrt3 - vx2) * f[DIR_0PP] - delf * WEIGTH[DIR_0PP]; - f[DIR_0PM] = ftemp[DIR_0PM] * (one_over_sqrt3 + vx2) + (1.0 - one_over_sqrt3 - vx2) * f[DIR_0PM] - + f[DIR_0PM] = ftemp[DIR_0PM] * (one_over_sqrt3 + vx2) + (c1o1 - one_over_sqrt3 - vx2) * f[DIR_0PM] - delf * WEIGTH[DIR_0PM]; - f[DIR_PPP] = ftemp[DIR_PPP] * (one_over_sqrt3 + vx2) + (1.0 - one_over_sqrt3 - vx2) * f[DIR_PPP] - + f[DIR_PPP] = ftemp[DIR_PPP] * (one_over_sqrt3 + vx2) + (c1o1 - one_over_sqrt3 - vx2) * f[DIR_PPP] - delf * WEIGTH[DIR_PPP]; - f[DIR_MPP] = ftemp[DIR_MPP] * (one_over_sqrt3 + vx2) + (1.0 - one_over_sqrt3 - vx2) * f[DIR_MPP] - + f[DIR_MPP] = ftemp[DIR_MPP] * (one_over_sqrt3 + vx2) + (c1o1 - one_over_sqrt3 - vx2) * f[DIR_MPP] - delf * WEIGTH[DIR_MPP]; - f[DIR_PPM] = ftemp[DIR_PPM] * (one_over_sqrt3 + vx2) + (1.0 - one_over_sqrt3 - vx2) * f[DIR_PPM] - + f[DIR_PPM] = ftemp[DIR_PPM] * (one_over_sqrt3 + vx2) + (c1o1 - one_over_sqrt3 - vx2) * f[DIR_PPM] - delf * WEIGTH[DIR_PPM]; - f[DIR_MPM] = ftemp[DIR_MPM] * (one_over_sqrt3 + vx2) + (1.0 - one_over_sqrt3 - vx2) * f[DIR_MPM] - + f[DIR_MPM] = ftemp[DIR_MPM] * (one_over_sqrt3 + vx2) + (c1o1 - one_over_sqrt3 - vx2) * f[DIR_MPM] - delf * WEIGTH[DIR_MPM]; distributions->setDistributionInvForDirection(f[DIR_0P0], x1 + DX1[DIR_0M0], x2 + DX2[DIR_0M0], x3 + DX3[DIR_0M0], DIR_0M0); @@ -243,23 +243,23 @@ void NonReflectingInflowBCStrategy::applyBC() break; case DIR_0M0: delf = (-velocity - vx2) * BCVeloWeight; - f[DIR_0M0] = ftemp[DIR_0M0] * (one_over_sqrt3 - vx2) + (1.0 - one_over_sqrt3 + vx2) * f[DIR_0M0] - + f[DIR_0M0] = ftemp[DIR_0M0] * (one_over_sqrt3 - vx2) + (c1o1 - one_over_sqrt3 + vx2) * f[DIR_0M0] - delf * WEIGTH[DIR_0M0]; - f[DIR_PM0] = ftemp[DIR_PM0] * (one_over_sqrt3 - vx2) + (1.0 - one_over_sqrt3 + vx2) * f[DIR_PM0] - + f[DIR_PM0] = ftemp[DIR_PM0] * (one_over_sqrt3 - vx2) + (c1o1 - one_over_sqrt3 + vx2) * f[DIR_PM0] - delf * WEIGTH[DIR_PM0]; - f[DIR_MM0] = ftemp[DIR_MM0] * (one_over_sqrt3 - vx2) + (1.0 - one_over_sqrt3 + vx2) * f[DIR_MM0] - + f[DIR_MM0] = ftemp[DIR_MM0] * (one_over_sqrt3 - vx2) + (c1o1 - one_over_sqrt3 + vx2) * f[DIR_MM0] - delf * WEIGTH[DIR_MM0]; - f[DIR_0MP] = ftemp[DIR_0MP] * (one_over_sqrt3 - vx2) + (1.0 - one_over_sqrt3 + vx2) * f[DIR_0MP] - + f[DIR_0MP] = ftemp[DIR_0MP] * (one_over_sqrt3 - vx2) + (c1o1 - one_over_sqrt3 + vx2) * f[DIR_0MP] - delf * WEIGTH[DIR_0MP]; - f[DIR_0MM] = ftemp[DIR_0MM] * (one_over_sqrt3 - vx2) + (1.0 - one_over_sqrt3 + vx2) * f[DIR_0MM] - + f[DIR_0MM] = ftemp[DIR_0MM] * (one_over_sqrt3 - vx2) + (c1o1 - one_over_sqrt3 + vx2) * f[DIR_0MM] - delf * WEIGTH[DIR_0MM]; - f[DIR_PMP] = ftemp[DIR_PMP] * (one_over_sqrt3 - vx2) + (1.0 - one_over_sqrt3 + vx2) * f[DIR_PMP] - + f[DIR_PMP] = ftemp[DIR_PMP] * (one_over_sqrt3 - vx2) + (c1o1 - one_over_sqrt3 + vx2) * f[DIR_PMP] - delf * WEIGTH[DIR_PMP]; - f[DIR_MMP] = ftemp[DIR_MMP] * (one_over_sqrt3 - vx2) + (1.0 - one_over_sqrt3 + vx2) * f[DIR_MMP] - + f[DIR_MMP] = ftemp[DIR_MMP] * (one_over_sqrt3 - vx2) + (c1o1 - one_over_sqrt3 + vx2) * f[DIR_MMP] - delf * WEIGTH[DIR_MMP]; - f[DIR_PMM] = ftemp[DIR_PMM] * (one_over_sqrt3 - vx2) + (1.0 - one_over_sqrt3 + vx2) * f[DIR_PMM] - + f[DIR_PMM] = ftemp[DIR_PMM] * (one_over_sqrt3 - vx2) + (c1o1 - one_over_sqrt3 + vx2) * f[DIR_PMM] - delf * WEIGTH[DIR_PMM]; - f[DIR_MMM] = ftemp[DIR_MMM] * (one_over_sqrt3 - vx2) + (1.0 - one_over_sqrt3 + vx2) * f[DIR_MMM] - + f[DIR_MMM] = ftemp[DIR_MMM] * (one_over_sqrt3 - vx2) + (c1o1 - one_over_sqrt3 + vx2) * f[DIR_MMM] - delf * WEIGTH[DIR_MMM]; distributions->setDistributionInvForDirection(f[DIR_0M0], x1 + DX1[DIR_0P0], x2 + DX2[DIR_0P0], x3 + DX3[DIR_0P0], DIR_0P0); @@ -274,23 +274,23 @@ void NonReflectingInflowBCStrategy::applyBC() break; case DIR_00P: delf = (-velocity + vx3) * BCVeloWeight; - f[DIR_00P] = ftemp[DIR_00P] * (one_over_sqrt3 + vx3) + (1.0 - one_over_sqrt3 - vx3) * f[DIR_00P] - + f[DIR_00P] = ftemp[DIR_00P] * (one_over_sqrt3 + vx3) + (c1o1 - one_over_sqrt3 - vx3) * f[DIR_00P] - delf * WEIGTH[DIR_00P]; - f[DIR_P0P] = ftemp[DIR_P0P] * (one_over_sqrt3 + vx3) + (1.0 - one_over_sqrt3 - vx3) * f[DIR_P0P] - + f[DIR_P0P] = ftemp[DIR_P0P] * (one_over_sqrt3 + vx3) + (c1o1 - one_over_sqrt3 - vx3) * f[DIR_P0P] - delf * WEIGTH[DIR_P0P]; - f[DIR_M0P] = ftemp[DIR_M0P] * (one_over_sqrt3 + vx3) + (1.0 - one_over_sqrt3 - vx3) * f[DIR_M0P] - + f[DIR_M0P] = ftemp[DIR_M0P] * (one_over_sqrt3 + vx3) + (c1o1 - one_over_sqrt3 - vx3) * f[DIR_M0P] - delf * WEIGTH[DIR_M0P]; - f[DIR_0PP] = ftemp[DIR_0PP] * (one_over_sqrt3 + vx3) + (1.0 - one_over_sqrt3 - vx3) * f[DIR_0PP] - + f[DIR_0PP] = ftemp[DIR_0PP] * (one_over_sqrt3 + vx3) + (c1o1 - one_over_sqrt3 - vx3) * f[DIR_0PP] - delf * WEIGTH[DIR_0PP]; - f[DIR_0MP] = ftemp[DIR_0MP] * (one_over_sqrt3 + vx3) + (1.0 - one_over_sqrt3 - vx3) * f[DIR_0MP] - + f[DIR_0MP] = ftemp[DIR_0MP] * (one_over_sqrt3 + vx3) + (c1o1 - one_over_sqrt3 - vx3) * f[DIR_0MP] - delf * WEIGTH[DIR_0MP]; - f[DIR_PPP] = ftemp[DIR_PPP] * (one_over_sqrt3 + vx3) + (1.0 - one_over_sqrt3 - vx3) * f[DIR_PPP] - + f[DIR_PPP] = ftemp[DIR_PPP] * (one_over_sqrt3 + vx3) + (c1o1 - one_over_sqrt3 - vx3) * f[DIR_PPP] - delf * WEIGTH[DIR_PPP]; - f[DIR_MPP] = ftemp[DIR_MPP] * (one_over_sqrt3 + vx3) + (1.0 - one_over_sqrt3 - vx3) * f[DIR_MPP] - + f[DIR_MPP] = ftemp[DIR_MPP] * (one_over_sqrt3 + vx3) + (c1o1 - one_over_sqrt3 - vx3) * f[DIR_MPP] - delf * WEIGTH[DIR_MPP]; - f[DIR_PMP] = ftemp[DIR_PMP] * (one_over_sqrt3 + vx3) + (1.0 - one_over_sqrt3 - vx3) * f[DIR_PMP] - + f[DIR_PMP] = ftemp[DIR_PMP] * (one_over_sqrt3 + vx3) + (c1o1 - one_over_sqrt3 - vx3) * f[DIR_PMP] - delf * WEIGTH[DIR_PMP]; - f[DIR_MMP] = ftemp[DIR_MMP] * (one_over_sqrt3 + vx3) + (1.0 - one_over_sqrt3 - vx3) * f[DIR_MMP] - + f[DIR_MMP] = ftemp[DIR_MMP] * (one_over_sqrt3 + vx3) + (c1o1 - one_over_sqrt3 - vx3) * f[DIR_MMP] - delf * WEIGTH[DIR_MMP]; distributions->setDistributionInvForDirection(f[DIR_00P], x1 + DX1[DIR_00M], x2 + DX2[DIR_00M], x3 + DX3[DIR_00M], DIR_00M); @@ -305,23 +305,23 @@ void NonReflectingInflowBCStrategy::applyBC() break; case DIR_00M: delf = (-velocity - vx3) * BCVeloWeight; - f[DIR_00M] = ftemp[DIR_00M] * (one_over_sqrt3 - vx3) + (1.0 - one_over_sqrt3 + vx3) * f[DIR_00M] - + f[DIR_00M] = ftemp[DIR_00M] * (one_over_sqrt3 - vx3) + (c1o1 - one_over_sqrt3 + vx3) * f[DIR_00M] - delf * WEIGTH[DIR_00M]; - f[DIR_P0M] = ftemp[DIR_P0M] * (one_over_sqrt3 - vx3) + (1.0 - one_over_sqrt3 + vx3) * f[DIR_P0M] - + f[DIR_P0M] = ftemp[DIR_P0M] * (one_over_sqrt3 - vx3) + (c1o1 - one_over_sqrt3 + vx3) * f[DIR_P0M] - delf * WEIGTH[DIR_P0M]; - f[DIR_M0M] = ftemp[DIR_M0M] * (one_over_sqrt3 - vx3) + (1.0 - one_over_sqrt3 + vx3) * f[DIR_M0M] - + f[DIR_M0M] = ftemp[DIR_M0M] * (one_over_sqrt3 - vx3) + (c1o1 - one_over_sqrt3 + vx3) * f[DIR_M0M] - delf * WEIGTH[DIR_M0M]; - f[DIR_0PM] = ftemp[DIR_0PM] * (one_over_sqrt3 - vx3) + (1.0 - one_over_sqrt3 + vx3) * f[DIR_0PM] - + f[DIR_0PM] = ftemp[DIR_0PM] * (one_over_sqrt3 - vx3) + (c1o1 - one_over_sqrt3 + vx3) * f[DIR_0PM] - delf * WEIGTH[DIR_0PM]; - f[DIR_0MM] = ftemp[DIR_0MM] * (one_over_sqrt3 - vx3) + (1.0 - one_over_sqrt3 + vx3) * f[DIR_0MM] - + f[DIR_0MM] = ftemp[DIR_0MM] * (one_over_sqrt3 - vx3) + (c1o1 - one_over_sqrt3 + vx3) * f[DIR_0MM] - delf * WEIGTH[DIR_0MM]; - f[DIR_PPM] = ftemp[DIR_PPM] * (one_over_sqrt3 - vx3) + (1.0 - one_over_sqrt3 + vx3) * f[DIR_PPM] - + f[DIR_PPM] = ftemp[DIR_PPM] * (one_over_sqrt3 - vx3) + (c1o1 - one_over_sqrt3 + vx3) * f[DIR_PPM] - delf * WEIGTH[DIR_PPM]; - f[DIR_MPM] = ftemp[DIR_MPM] * (one_over_sqrt3 - vx3) + (1.0 - one_over_sqrt3 + vx3) * f[DIR_MPM] - + f[DIR_MPM] = ftemp[DIR_MPM] * (one_over_sqrt3 - vx3) + (c1o1 - one_over_sqrt3 + vx3) * f[DIR_MPM] - delf * WEIGTH[DIR_MPM]; - f[DIR_PMM] = ftemp[DIR_PMM] * (one_over_sqrt3 - vx3) + (1.0 - one_over_sqrt3 + vx3) * f[DIR_PMM] - + f[DIR_PMM] = ftemp[DIR_PMM] * (one_over_sqrt3 - vx3) + (c1o1 - one_over_sqrt3 + vx3) * f[DIR_PMM] - delf * WEIGTH[DIR_PMM]; - f[DIR_MMM] = ftemp[DIR_MMM] * (one_over_sqrt3 - vx3) + (1.0 - one_over_sqrt3 + vx3) * f[DIR_MMM] - + f[DIR_MMM] = ftemp[DIR_MMM] * (one_over_sqrt3 - vx3) + (c1o1 - one_over_sqrt3 + vx3) * f[DIR_MMM] - delf * WEIGTH[DIR_MMM]; distributions->setDistributionInvForDirection(f[DIR_00M], x1 + DX1[DIR_00P], x2 + DX2[DIR_00P], x3 + DX3[DIR_00P], DIR_00P); diff --git a/src/cpu/VirtualFluidsCore/BoundaryConditions/NonReflectingOutflowWithRelaxationBCStrategy.cpp b/src/cpu/VirtualFluidsCore/BoundaryConditions/NonReflectingOutflowWithRelaxationBCStrategy.cpp index 3e10421e5..f0fb4ccae 100644 --- a/src/cpu/VirtualFluidsCore/BoundaryConditions/NonReflectingOutflowWithRelaxationBCStrategy.cpp +++ b/src/cpu/VirtualFluidsCore/BoundaryConditions/NonReflectingOutflowWithRelaxationBCStrategy.cpp @@ -98,18 +98,18 @@ void NonReflectingOutflowWithRelaxationBCStrategy::applyBC() LBMReal rho, vx1, vx2, vx3; calcMacrosFct(f, rho, vx1, vx2, vx3); - LBMReal delf = rho*0.01; + LBMReal delf = rho* c1o100; switch (direction) { case DIR_P00: - f[DIR_P00] = ftemp[DIR_P00] * (one_over_sqrt3 + vx1) + (1.0 - one_over_sqrt3 - vx1) * f[DIR_P00] - delf* WEIGTH[DIR_P00]; - f[DIR_PP0] = ftemp[DIR_PP0] * (one_over_sqrt3 + vx1) + (1.0 - one_over_sqrt3 - vx1) * f[DIR_PP0]- delf* WEIGTH[DIR_PP0]; - f[DIR_PM0] = ftemp[DIR_PM0] * (one_over_sqrt3 + vx1) + (1.0 - one_over_sqrt3 - vx1) * f[DIR_PM0]- delf* WEIGTH[DIR_PM0]; - f[DIR_P0P] = ftemp[DIR_P0P] * (one_over_sqrt3 + vx1) + (1.0 - one_over_sqrt3 - vx1) * f[DIR_P0P]- delf* WEIGTH[DIR_P0P]; - f[DIR_P0M] = ftemp[DIR_P0M] * (one_over_sqrt3 + vx1) + (1.0 - one_over_sqrt3 - vx1) * f[DIR_P0M]- delf* WEIGTH[DIR_P0M]; - f[DIR_PPP] = ftemp[DIR_PPP] * (one_over_sqrt3 + vx1) + (1.0 - one_over_sqrt3 - vx1) * f[DIR_PPP]- delf* WEIGTH[DIR_PPP]; - f[DIR_PMP] = ftemp[DIR_PMP] * (one_over_sqrt3 + vx1) + (1.0 - one_over_sqrt3 - vx1) * f[DIR_PMP]- delf* WEIGTH[DIR_PMP]; - f[DIR_PPM] = ftemp[DIR_PPM] * (one_over_sqrt3 + vx1) + (1.0 - one_over_sqrt3 - vx1) * f[DIR_PPM]- delf* WEIGTH[DIR_PPM]; - f[DIR_PMM] = ftemp[DIR_PMM] * (one_over_sqrt3 + vx1) + (1.0 - one_over_sqrt3 - vx1) * f[DIR_PMM]- delf* WEIGTH[DIR_PMM]; + f[DIR_P00] = ftemp[DIR_P00] * (one_over_sqrt3 + vx1) + (c1o1 - one_over_sqrt3 - vx1) * f[DIR_P00] - delf* WEIGTH[DIR_P00]; + f[DIR_PP0] = ftemp[DIR_PP0] * (one_over_sqrt3 + vx1) + (c1o1 - one_over_sqrt3 - vx1) * f[DIR_PP0]- delf* WEIGTH[DIR_PP0]; + f[DIR_PM0] = ftemp[DIR_PM0] * (one_over_sqrt3 + vx1) + (c1o1 - one_over_sqrt3 - vx1) * f[DIR_PM0]- delf* WEIGTH[DIR_PM0]; + f[DIR_P0P] = ftemp[DIR_P0P] * (one_over_sqrt3 + vx1) + (c1o1 - one_over_sqrt3 - vx1) * f[DIR_P0P]- delf* WEIGTH[DIR_P0P]; + f[DIR_P0M] = ftemp[DIR_P0M] * (one_over_sqrt3 + vx1) + (c1o1 - one_over_sqrt3 - vx1) * f[DIR_P0M]- delf* WEIGTH[DIR_P0M]; + f[DIR_PPP] = ftemp[DIR_PPP] * (one_over_sqrt3 + vx1) + (c1o1 - one_over_sqrt3 - vx1) * f[DIR_PPP]- delf* WEIGTH[DIR_PPP]; + f[DIR_PMP] = ftemp[DIR_PMP] * (one_over_sqrt3 + vx1) + (c1o1 - one_over_sqrt3 - vx1) * f[DIR_PMP]- delf* WEIGTH[DIR_PMP]; + f[DIR_PPM] = ftemp[DIR_PPM] * (one_over_sqrt3 + vx1) + (c1o1 - one_over_sqrt3 - vx1) * f[DIR_PPM]- delf* WEIGTH[DIR_PPM]; + f[DIR_PMM] = ftemp[DIR_PMM] * (one_over_sqrt3 + vx1) + (c1o1 - one_over_sqrt3 - vx1) * f[DIR_PMM]- delf* WEIGTH[DIR_PMM]; distributions->setDistributionInvForDirection(f[DIR_P00], x1 + DX1[DIR_M00], x2 + DX2[DIR_M00], x3 + DX3[DIR_M00], DIR_M00); distributions->setDistributionInvForDirection(f[DIR_PP0], x1 + DX1[DIR_MM0], x2 + DX2[DIR_MM0], x3 + DX3[DIR_MM0], DIR_MM0); @@ -122,15 +122,15 @@ void NonReflectingOutflowWithRelaxationBCStrategy::applyBC() distributions->setDistributionInvForDirection(f[DIR_PMM], x1 + DX1[DIR_MPP], x2 + DX2[DIR_MPP], x3 + DX3[DIR_MPP], DIR_MPP); break; case DIR_M00: - f[DIR_M00] = ftemp[DIR_M00] * (one_over_sqrt3 - vx1) + (1.0 - one_over_sqrt3 + vx1) * f[DIR_M00]- delf* WEIGTH[DIR_M00]; - f[DIR_MP0] = ftemp[DIR_MP0] * (one_over_sqrt3 - vx1) + (1.0 - one_over_sqrt3 + vx1) * f[DIR_MP0]- delf* WEIGTH[DIR_MP0]; - f[DIR_MM0] = ftemp[DIR_MM0] * (one_over_sqrt3 - vx1) + (1.0 - one_over_sqrt3 + vx1) * f[DIR_MM0]- delf* WEIGTH[DIR_MM0]; - f[DIR_M0P] = ftemp[DIR_M0P] * (one_over_sqrt3 - vx1) + (1.0 - one_over_sqrt3 + vx1) * f[DIR_M0P]- delf* WEIGTH[DIR_M0P]; - f[DIR_M0M] = ftemp[DIR_M0M] * (one_over_sqrt3 - vx1) + (1.0 - one_over_sqrt3 + vx1) * f[DIR_M0M]- delf* WEIGTH[DIR_M0M]; - f[DIR_MPP] = ftemp[DIR_MPP] * (one_over_sqrt3 - vx1) + (1.0 - one_over_sqrt3 + vx1) * f[DIR_MPP]- delf* WEIGTH[DIR_MPP]; - f[DIR_MMP] = ftemp[DIR_MMP] * (one_over_sqrt3 - vx1) + (1.0 - one_over_sqrt3 + vx1) * f[DIR_MMP]- delf* WEIGTH[DIR_MMP]; - f[DIR_MPM] = ftemp[DIR_MPM] * (one_over_sqrt3 - vx1) + (1.0 - one_over_sqrt3 + vx1) * f[DIR_MPM]- delf* WEIGTH[DIR_MPM]; - f[DIR_MMM] = ftemp[DIR_MMM] * (one_over_sqrt3 - vx1) + (1.0 - one_over_sqrt3 + vx1) * f[DIR_MMM]- delf* WEIGTH[DIR_MMM]; + f[DIR_M00] = ftemp[DIR_M00] * (one_over_sqrt3 - vx1) + (c1o1 - one_over_sqrt3 + vx1) * f[DIR_M00]- delf* WEIGTH[DIR_M00]; + f[DIR_MP0] = ftemp[DIR_MP0] * (one_over_sqrt3 - vx1) + (c1o1 - one_over_sqrt3 + vx1) * f[DIR_MP0]- delf* WEIGTH[DIR_MP0]; + f[DIR_MM0] = ftemp[DIR_MM0] * (one_over_sqrt3 - vx1) + (c1o1 - one_over_sqrt3 + vx1) * f[DIR_MM0]- delf* WEIGTH[DIR_MM0]; + f[DIR_M0P] = ftemp[DIR_M0P] * (one_over_sqrt3 - vx1) + (c1o1 - one_over_sqrt3 + vx1) * f[DIR_M0P]- delf* WEIGTH[DIR_M0P]; + f[DIR_M0M] = ftemp[DIR_M0M] * (one_over_sqrt3 - vx1) + (c1o1 - one_over_sqrt3 + vx1) * f[DIR_M0M]- delf* WEIGTH[DIR_M0M]; + f[DIR_MPP] = ftemp[DIR_MPP] * (one_over_sqrt3 - vx1) + (c1o1 - one_over_sqrt3 + vx1) * f[DIR_MPP]- delf* WEIGTH[DIR_MPP]; + f[DIR_MMP] = ftemp[DIR_MMP] * (one_over_sqrt3 - vx1) + (c1o1 - one_over_sqrt3 + vx1) * f[DIR_MMP]- delf* WEIGTH[DIR_MMP]; + f[DIR_MPM] = ftemp[DIR_MPM] * (one_over_sqrt3 - vx1) + (c1o1 - one_over_sqrt3 + vx1) * f[DIR_MPM]- delf* WEIGTH[DIR_MPM]; + f[DIR_MMM] = ftemp[DIR_MMM] * (one_over_sqrt3 - vx1) + (c1o1 - one_over_sqrt3 + vx1) * f[DIR_MMM]- delf* WEIGTH[DIR_MMM]; distributions->setDistributionInvForDirection(f[DIR_M00], x1 + DX1[DIR_P00], x2 + DX2[DIR_P00], x3 + DX3[DIR_P00], DIR_P00); distributions->setDistributionInvForDirection(f[DIR_MP0], x1 + DX1[DIR_PM0], x2 + DX2[DIR_PM0], x3 + DX3[DIR_PM0], DIR_PM0); @@ -143,15 +143,15 @@ void NonReflectingOutflowWithRelaxationBCStrategy::applyBC() distributions->setDistributionInvForDirection(f[DIR_MMM], x1 + DX1[DIR_PPP], x2 + DX2[DIR_PPP], x3 + DX3[DIR_PPP], DIR_PPP); break; case DIR_0P0: - f[DIR_0P0] = ftemp[DIR_0P0] * (one_over_sqrt3 + vx2) + (1.0 - one_over_sqrt3 - vx2) * f[DIR_0P0]- delf* WEIGTH[DIR_0P0]; - f[DIR_PP0] = ftemp[DIR_PP0] * (one_over_sqrt3 + vx2) + (1.0 - one_over_sqrt3 - vx2) * f[DIR_PP0]- delf* WEIGTH[DIR_PP0]; - f[DIR_MP0] = ftemp[DIR_MP0] * (one_over_sqrt3 + vx2) + (1.0 - one_over_sqrt3 - vx2) * f[DIR_MP0]- delf* WEIGTH[DIR_MP0]; - f[DIR_0PP] = ftemp[DIR_0PP] * (one_over_sqrt3 + vx2) + (1.0 - one_over_sqrt3 - vx2) * f[DIR_0PP]- delf* WEIGTH[DIR_0PP]; - f[DIR_0PM] = ftemp[DIR_0PM] * (one_over_sqrt3 + vx2) + (1.0 - one_over_sqrt3 - vx2) * f[DIR_0PM]- delf* WEIGTH[DIR_0PM]; - f[DIR_PPP] = ftemp[DIR_PPP] * (one_over_sqrt3 + vx2) + (1.0 - one_over_sqrt3 - vx2) * f[DIR_PPP]- delf* WEIGTH[DIR_PPP]; - f[DIR_MPP] = ftemp[DIR_MPP] * (one_over_sqrt3 + vx2) + (1.0 - one_over_sqrt3 - vx2) * f[DIR_MPP]- delf* WEIGTH[DIR_MPP]; - f[DIR_PPM] = ftemp[DIR_PPM] * (one_over_sqrt3 + vx2) + (1.0 - one_over_sqrt3 - vx2) * f[DIR_PPM]- delf* WEIGTH[DIR_PPM]; - f[DIR_MPM] = ftemp[DIR_MPM] * (one_over_sqrt3 + vx2) + (1.0 - one_over_sqrt3 - vx2) * f[DIR_MPM]- delf* WEIGTH[DIR_MPM]; + f[DIR_0P0] = ftemp[DIR_0P0] * (one_over_sqrt3 + vx2) + (c1o1 - one_over_sqrt3 - vx2) * f[DIR_0P0]- delf* WEIGTH[DIR_0P0]; + f[DIR_PP0] = ftemp[DIR_PP0] * (one_over_sqrt3 + vx2) + (c1o1 - one_over_sqrt3 - vx2) * f[DIR_PP0]- delf* WEIGTH[DIR_PP0]; + f[DIR_MP0] = ftemp[DIR_MP0] * (one_over_sqrt3 + vx2) + (c1o1 - one_over_sqrt3 - vx2) * f[DIR_MP0]- delf* WEIGTH[DIR_MP0]; + f[DIR_0PP] = ftemp[DIR_0PP] * (one_over_sqrt3 + vx2) + (c1o1 - one_over_sqrt3 - vx2) * f[DIR_0PP]- delf* WEIGTH[DIR_0PP]; + f[DIR_0PM] = ftemp[DIR_0PM] * (one_over_sqrt3 + vx2) + (c1o1 - one_over_sqrt3 - vx2) * f[DIR_0PM]- delf* WEIGTH[DIR_0PM]; + f[DIR_PPP] = ftemp[DIR_PPP] * (one_over_sqrt3 + vx2) + (c1o1 - one_over_sqrt3 - vx2) * f[DIR_PPP]- delf* WEIGTH[DIR_PPP]; + f[DIR_MPP] = ftemp[DIR_MPP] * (one_over_sqrt3 + vx2) + (c1o1 - one_over_sqrt3 - vx2) * f[DIR_MPP]- delf* WEIGTH[DIR_MPP]; + f[DIR_PPM] = ftemp[DIR_PPM] * (one_over_sqrt3 + vx2) + (c1o1 - one_over_sqrt3 - vx2) * f[DIR_PPM]- delf* WEIGTH[DIR_PPM]; + f[DIR_MPM] = ftemp[DIR_MPM] * (one_over_sqrt3 + vx2) + (c1o1 - one_over_sqrt3 - vx2) * f[DIR_MPM]- delf* WEIGTH[DIR_MPM]; distributions->setDistributionInvForDirection(f[DIR_0P0], x1 + DX1[DIR_0M0], x2 + DX2[DIR_0M0], x3 + DX3[DIR_0M0], DIR_0M0); distributions->setDistributionInvForDirection(f[DIR_PP0], x1 + DX1[DIR_MM0], x2 + DX2[DIR_MM0], x3 + DX3[DIR_MM0], DIR_MM0); @@ -164,15 +164,15 @@ void NonReflectingOutflowWithRelaxationBCStrategy::applyBC() distributions->setDistributionInvForDirection(f[DIR_MPM], x1 + DX1[DIR_PMP], x2 + DX2[DIR_PMP], x3 + DX3[DIR_PMP], DIR_PMP); break; case DIR_0M0: - f[DIR_0M0] = ftemp[DIR_0M0] * (one_over_sqrt3 - vx2) + (1.0 - one_over_sqrt3 + vx2) * f[DIR_0M0]- delf* WEIGTH[DIR_0M0]; - f[DIR_PM0] = ftemp[DIR_PM0] * (one_over_sqrt3 - vx2) + (1.0 - one_over_sqrt3 + vx2) * f[DIR_PM0]- delf* WEIGTH[DIR_PM0]; - f[DIR_MM0] = ftemp[DIR_MM0] * (one_over_sqrt3 - vx2) + (1.0 - one_over_sqrt3 + vx2) * f[DIR_MM0]- delf* WEIGTH[DIR_MM0]; - f[DIR_0MP] = ftemp[DIR_0MP] * (one_over_sqrt3 - vx2) + (1.0 - one_over_sqrt3 + vx2) * f[DIR_0MP]- delf* WEIGTH[DIR_0MP]; - f[DIR_0MM] = ftemp[DIR_0MM] * (one_over_sqrt3 - vx2) + (1.0 - one_over_sqrt3 + vx2) * f[DIR_0MM]- delf* WEIGTH[DIR_0MM]; - f[DIR_PMP] = ftemp[DIR_PMP] * (one_over_sqrt3 - vx2) + (1.0 - one_over_sqrt3 + vx2) * f[DIR_PMP]- delf* WEIGTH[DIR_PMP]; - f[DIR_MMP] = ftemp[DIR_MMP] * (one_over_sqrt3 - vx2) + (1.0 - one_over_sqrt3 + vx2) * f[DIR_MMP]- delf* WEIGTH[DIR_MMP]; - f[DIR_PMM] = ftemp[DIR_PMM] * (one_over_sqrt3 - vx2) + (1.0 - one_over_sqrt3 + vx2) * f[DIR_PMM]- delf* WEIGTH[DIR_PMM]; - f[DIR_MMM] = ftemp[DIR_MMM] * (one_over_sqrt3 - vx2) + (1.0 - one_over_sqrt3 + vx2) * f[DIR_MMM]- delf* WEIGTH[DIR_MMM]; + f[DIR_0M0] = ftemp[DIR_0M0] * (one_over_sqrt3 - vx2) + (c1o1 - one_over_sqrt3 + vx2) * f[DIR_0M0]- delf* WEIGTH[DIR_0M0]; + f[DIR_PM0] = ftemp[DIR_PM0] * (one_over_sqrt3 - vx2) + (c1o1 - one_over_sqrt3 + vx2) * f[DIR_PM0]- delf* WEIGTH[DIR_PM0]; + f[DIR_MM0] = ftemp[DIR_MM0] * (one_over_sqrt3 - vx2) + (c1o1 - one_over_sqrt3 + vx2) * f[DIR_MM0]- delf* WEIGTH[DIR_MM0]; + f[DIR_0MP] = ftemp[DIR_0MP] * (one_over_sqrt3 - vx2) + (c1o1 - one_over_sqrt3 + vx2) * f[DIR_0MP]- delf* WEIGTH[DIR_0MP]; + f[DIR_0MM] = ftemp[DIR_0MM] * (one_over_sqrt3 - vx2) + (c1o1 - one_over_sqrt3 + vx2) * f[DIR_0MM]- delf* WEIGTH[DIR_0MM]; + f[DIR_PMP] = ftemp[DIR_PMP] * (one_over_sqrt3 - vx2) + (c1o1 - one_over_sqrt3 + vx2) * f[DIR_PMP]- delf* WEIGTH[DIR_PMP]; + f[DIR_MMP] = ftemp[DIR_MMP] * (one_over_sqrt3 - vx2) + (c1o1 - one_over_sqrt3 + vx2) * f[DIR_MMP]- delf* WEIGTH[DIR_MMP]; + f[DIR_PMM] = ftemp[DIR_PMM] * (one_over_sqrt3 - vx2) + (c1o1 - one_over_sqrt3 + vx2) * f[DIR_PMM]- delf* WEIGTH[DIR_PMM]; + f[DIR_MMM] = ftemp[DIR_MMM] * (one_over_sqrt3 - vx2) + (c1o1 - one_over_sqrt3 + vx2) * f[DIR_MMM]- delf* WEIGTH[DIR_MMM]; distributions->setDistributionInvForDirection(f[DIR_0M0], x1 + DX1[DIR_0P0], x2 + DX2[DIR_0P0], x3 + DX3[DIR_0P0], DIR_0P0); distributions->setDistributionInvForDirection(f[DIR_PM0], x1 + DX1[DIR_MP0], x2 + DX2[DIR_MP0], x3 + DX3[DIR_MP0], DIR_MP0); @@ -185,15 +185,15 @@ void NonReflectingOutflowWithRelaxationBCStrategy::applyBC() distributions->setDistributionInvForDirection(f[DIR_MMM], x1 + DX1[DIR_PPP], x2 + DX2[DIR_PPP], x3 + DX3[DIR_PPP], DIR_PPP); break; case DIR_00P: - f[DIR_00P] = ftemp[DIR_00P] * (one_over_sqrt3 + vx3) + (1.0 - one_over_sqrt3 - vx3) * f[DIR_00P]- delf* WEIGTH[DIR_00P]; - f[DIR_P0P] = ftemp[DIR_P0P] * (one_over_sqrt3 + vx3) + (1.0 - one_over_sqrt3 - vx3) * f[DIR_P0P]- delf* WEIGTH[DIR_P0P]; - f[DIR_M0P] = ftemp[DIR_M0P] * (one_over_sqrt3 + vx3) + (1.0 - one_over_sqrt3 - vx3) * f[DIR_M0P]- delf* WEIGTH[DIR_M0P]; - f[DIR_0PP] = ftemp[DIR_0PP] * (one_over_sqrt3 + vx3) + (1.0 - one_over_sqrt3 - vx3) * f[DIR_0PP]- delf* WEIGTH[DIR_0PP]; - f[DIR_0MP] = ftemp[DIR_0MP] * (one_over_sqrt3 + vx3) + (1.0 - one_over_sqrt3 - vx3) * f[DIR_0MP]- delf* WEIGTH[DIR_0MP]; - f[DIR_PPP] = ftemp[DIR_PPP] * (one_over_sqrt3 + vx3) + (1.0 - one_over_sqrt3 - vx3) * f[DIR_PPP]- delf* WEIGTH[DIR_PPP]; - f[DIR_MPP] = ftemp[DIR_MPP] * (one_over_sqrt3 + vx3) + (1.0 - one_over_sqrt3 - vx3) * f[DIR_MPP]- delf* WEIGTH[DIR_MPP]; - f[DIR_PMP] = ftemp[DIR_PMP] * (one_over_sqrt3 + vx3) + (1.0 - one_over_sqrt3 - vx3) * f[DIR_PMP]- delf* WEIGTH[DIR_PMP]; - f[DIR_MMP] = ftemp[DIR_MMP] * (one_over_sqrt3 + vx3) + (1.0 - one_over_sqrt3 - vx3) * f[DIR_MMP]- delf* WEIGTH[DIR_MMP]; + f[DIR_00P] = ftemp[DIR_00P] * (one_over_sqrt3 + vx3) + (c1o1 - one_over_sqrt3 - vx3) * f[DIR_00P]- delf* WEIGTH[DIR_00P]; + f[DIR_P0P] = ftemp[DIR_P0P] * (one_over_sqrt3 + vx3) + (c1o1 - one_over_sqrt3 - vx3) * f[DIR_P0P]- delf* WEIGTH[DIR_P0P]; + f[DIR_M0P] = ftemp[DIR_M0P] * (one_over_sqrt3 + vx3) + (c1o1 - one_over_sqrt3 - vx3) * f[DIR_M0P]- delf* WEIGTH[DIR_M0P]; + f[DIR_0PP] = ftemp[DIR_0PP] * (one_over_sqrt3 + vx3) + (c1o1 - one_over_sqrt3 - vx3) * f[DIR_0PP]- delf* WEIGTH[DIR_0PP]; + f[DIR_0MP] = ftemp[DIR_0MP] * (one_over_sqrt3 + vx3) + (c1o1 - one_over_sqrt3 - vx3) * f[DIR_0MP]- delf* WEIGTH[DIR_0MP]; + f[DIR_PPP] = ftemp[DIR_PPP] * (one_over_sqrt3 + vx3) + (c1o1 - one_over_sqrt3 - vx3) * f[DIR_PPP]- delf* WEIGTH[DIR_PPP]; + f[DIR_MPP] = ftemp[DIR_MPP] * (one_over_sqrt3 + vx3) + (c1o1 - one_over_sqrt3 - vx3) * f[DIR_MPP]- delf* WEIGTH[DIR_MPP]; + f[DIR_PMP] = ftemp[DIR_PMP] * (one_over_sqrt3 + vx3) + (c1o1 - one_over_sqrt3 - vx3) * f[DIR_PMP]- delf* WEIGTH[DIR_PMP]; + f[DIR_MMP] = ftemp[DIR_MMP] * (one_over_sqrt3 + vx3) + (c1o1 - one_over_sqrt3 - vx3) * f[DIR_MMP]- delf* WEIGTH[DIR_MMP]; distributions->setDistributionInvForDirection(f[DIR_00P], x1 + DX1[DIR_00M], x2 + DX2[DIR_00M], x3 + DX3[DIR_00M], DIR_00M); distributions->setDistributionInvForDirection(f[DIR_P0P], x1 + DX1[DIR_M0M], x2 + DX2[DIR_M0M], x3 + DX3[DIR_M0M], DIR_M0M); @@ -206,15 +206,15 @@ void NonReflectingOutflowWithRelaxationBCStrategy::applyBC() distributions->setDistributionInvForDirection(f[DIR_MMP], x1 + DX1[DIR_PPM], x2 + DX2[DIR_PPM], x3 + DX3[DIR_PPM], DIR_PPM); break; case DIR_00M: - f[DIR_00M] = ftemp[DIR_00M] * (one_over_sqrt3 - vx3) + (1.0 - one_over_sqrt3 + vx3) * f[DIR_00M]- delf* WEIGTH[DIR_00M]; - f[DIR_P0M] = ftemp[DIR_P0M] * (one_over_sqrt3 - vx3) + (1.0 - one_over_sqrt3 + vx3) * f[DIR_P0M]- delf* WEIGTH[DIR_P0M]; - f[DIR_M0M] = ftemp[DIR_M0M] * (one_over_sqrt3 - vx3) + (1.0 - one_over_sqrt3 + vx3) * f[DIR_M0M]- delf* WEIGTH[DIR_M0M]; - f[DIR_0PM] = ftemp[DIR_0PM] * (one_over_sqrt3 - vx3) + (1.0 - one_over_sqrt3 + vx3) * f[DIR_0PM]- delf* WEIGTH[DIR_0PM]; - f[DIR_0MM] = ftemp[DIR_0MM] * (one_over_sqrt3 - vx3) + (1.0 - one_over_sqrt3 + vx3) * f[DIR_0MM]- delf* WEIGTH[DIR_0MM]; - f[DIR_PPM] = ftemp[DIR_PPM] * (one_over_sqrt3 - vx3) + (1.0 - one_over_sqrt3 + vx3) * f[DIR_PPM]- delf* WEIGTH[DIR_PPM]; - f[DIR_MPM] = ftemp[DIR_MPM] * (one_over_sqrt3 - vx3) + (1.0 - one_over_sqrt3 + vx3) * f[DIR_MPM]- delf* WEIGTH[DIR_MPM]; - f[DIR_PMM] = ftemp[DIR_PMM] * (one_over_sqrt3 - vx3) + (1.0 - one_over_sqrt3 + vx3) * f[DIR_PMM]- delf* WEIGTH[DIR_PMM]; - f[DIR_MMM] = ftemp[DIR_MMM] * (one_over_sqrt3 - vx3) + (1.0 - one_over_sqrt3 + vx3) * f[DIR_MMM]- delf* WEIGTH[DIR_MMM]; + f[DIR_00M] = ftemp[DIR_00M] * (one_over_sqrt3 - vx3) + (c1o1 - one_over_sqrt3 + vx3) * f[DIR_00M]- delf* WEIGTH[DIR_00M]; + f[DIR_P0M] = ftemp[DIR_P0M] * (one_over_sqrt3 - vx3) + (c1o1 - one_over_sqrt3 + vx3) * f[DIR_P0M]- delf* WEIGTH[DIR_P0M]; + f[DIR_M0M] = ftemp[DIR_M0M] * (one_over_sqrt3 - vx3) + (c1o1 - one_over_sqrt3 + vx3) * f[DIR_M0M]- delf* WEIGTH[DIR_M0M]; + f[DIR_0PM] = ftemp[DIR_0PM] * (one_over_sqrt3 - vx3) + (c1o1 - one_over_sqrt3 + vx3) * f[DIR_0PM]- delf* WEIGTH[DIR_0PM]; + f[DIR_0MM] = ftemp[DIR_0MM] * (one_over_sqrt3 - vx3) + (c1o1 - one_over_sqrt3 + vx3) * f[DIR_0MM]- delf* WEIGTH[DIR_0MM]; + f[DIR_PPM] = ftemp[DIR_PPM] * (one_over_sqrt3 - vx3) + (c1o1 - one_over_sqrt3 + vx3) * f[DIR_PPM]- delf* WEIGTH[DIR_PPM]; + f[DIR_MPM] = ftemp[DIR_MPM] * (one_over_sqrt3 - vx3) + (c1o1 - one_over_sqrt3 + vx3) * f[DIR_MPM]- delf* WEIGTH[DIR_MPM]; + f[DIR_PMM] = ftemp[DIR_PMM] * (one_over_sqrt3 - vx3) + (c1o1 - one_over_sqrt3 + vx3) * f[DIR_PMM]- delf* WEIGTH[DIR_PMM]; + f[DIR_MMM] = ftemp[DIR_MMM] * (one_over_sqrt3 - vx3) + (c1o1 - one_over_sqrt3 + vx3) * f[DIR_MMM]- delf* WEIGTH[DIR_MMM]; distributions->setDistributionInvForDirection(f[DIR_00M], x1 + DX1[DIR_00P], x2 + DX2[DIR_00P], x3 + DX3[DIR_00P], DIR_00P); distributions->setDistributionInvForDirection(f[DIR_P0M], x1 + DX1[DIR_M0P], x2 + DX2[DIR_M0P], x3 + DX3[DIR_M0P], DIR_M0P); diff --git a/src/cpu/VirtualFluidsCore/BoundaryConditions/VelocityWithDensityBCStrategy.cpp b/src/cpu/VirtualFluidsCore/BoundaryConditions/VelocityWithDensityBCStrategy.cpp index 1b579877a..0278ee095 100644 --- a/src/cpu/VirtualFluidsCore/BoundaryConditions/VelocityWithDensityBCStrategy.cpp +++ b/src/cpu/VirtualFluidsCore/BoundaryConditions/VelocityWithDensityBCStrategy.cpp @@ -55,6 +55,8 @@ void VelocityWithDensityBCStrategy::addDistributions(SPtr<DistributionArray3D> d ////////////////////////////////////////////////////////////////////////// void VelocityWithDensityBCStrategy::applyBC() { + using namespace vf::basics::constant; + //velocity bc for non reflecting pressure bc real f[D3Q27System::ENDF+1]; //real feq[D3Q27System::ENDF+1]; @@ -63,7 +65,7 @@ void VelocityWithDensityBCStrategy::applyBC() calcMacrosFct(f, drho, vx1, vx2, vx3); //calcFeqFct(feq, drho, vx1, vx2, vx3); - rho = 1.0+drho*compressibleFactor; + rho = c1o1+drho*compressibleFactor; for (int fdir = D3Q27System::FSTARTDIR; fdir <= D3Q27System::FENDDIR; fdir++) { diff --git a/src/cpu/VirtualFluidsCore/Connectors/ThreeDistributionsDoubleGhostLayerFullVectorConnector.cpp b/src/cpu/VirtualFluidsCore/Connectors/ThreeDistributionsDoubleGhostLayerFullVectorConnector.cpp index 8334b93d2..a94da62ef 100644 --- a/src/cpu/VirtualFluidsCore/Connectors/ThreeDistributionsDoubleGhostLayerFullVectorConnector.cpp +++ b/src/cpu/VirtualFluidsCore/Connectors/ThreeDistributionsDoubleGhostLayerFullVectorConnector.cpp @@ -51,6 +51,7 @@ ThreeDistributionsDoubleGhostLayerFullVectorConnector::ThreeDistributionsDoubleG void ThreeDistributionsDoubleGhostLayerFullVectorConnector::init() { using namespace vf::lbm::dir; + using namespace vf::basics::constant; FullVectorConnector::init(); @@ -64,26 +65,26 @@ void ThreeDistributionsDoubleGhostLayerFullVectorConnector::init() { case DIR_000: UB_THROW(UbException(UB_EXARGS, "ZERO not allowed")); break; case DIR_P00: - case DIR_M00: sender->getData().resize(maxX2*maxX3*anz*2, 0.0); break; + case DIR_M00: sender->getData().resize(maxX2*maxX3*anz*2, c0o1); break; case DIR_0P0: - case DIR_0M0: sender->getData().resize(maxX1*maxX3*anz*2, 0.0); break; + case DIR_0M0: sender->getData().resize(maxX1*maxX3*anz*2, c0o1); break; case DIR_00P: - case DIR_00M: sender->getData().resize(maxX1*maxX2*anz*2, 0.0); break; + case DIR_00M: sender->getData().resize(maxX1*maxX2*anz*2, c0o1); break; case DIR_PP0: case DIR_MM0: case DIR_PM0: - case DIR_MP0: sender->getData().resize(maxX3*anz*4, 0.0); break; + case DIR_MP0: sender->getData().resize(maxX3*anz*4, c0o1); break; case DIR_P0P: case DIR_M0M: case DIR_P0M: - case DIR_M0P: sender->getData().resize(maxX2*anz*4, 0.0); break; + case DIR_M0P: sender->getData().resize(maxX2*anz*4, c0o1); break; case DIR_0PP: case DIR_0MM: case DIR_0PM: - case DIR_0MP: sender->getData().resize(maxX1*anz*4, 0.0); break; + case DIR_0MP: sender->getData().resize(maxX1*anz*4, c0o1); break; case DIR_PPP: case DIR_MMM: @@ -92,7 +93,7 @@ void ThreeDistributionsDoubleGhostLayerFullVectorConnector::init() case DIR_PMP: case DIR_MPM: case DIR_PMM: - case DIR_MPP: sender->getData().resize(anz*8, 0.0); break; + case DIR_MPP: sender->getData().resize(anz*8, c0o1); break; default: UB_THROW(UbException(UB_EXARGS, "unknown sendDir")); } diff --git a/src/cpu/VirtualFluidsCore/Connectors/ThreeDistributionsFullVectorConnector.cpp b/src/cpu/VirtualFluidsCore/Connectors/ThreeDistributionsFullVectorConnector.cpp index 1b4f243ee..65315b4f3 100644 --- a/src/cpu/VirtualFluidsCore/Connectors/ThreeDistributionsFullVectorConnector.cpp +++ b/src/cpu/VirtualFluidsCore/Connectors/ThreeDistributionsFullVectorConnector.cpp @@ -51,6 +51,7 @@ ThreeDistributionsFullVectorConnector::ThreeDistributionsFullVectorConnector(SPt void ThreeDistributionsFullVectorConnector::init() { using namespace vf::lbm::dir; + using namespace vf::basics::constant; FullVectorConnector::init(); @@ -63,26 +64,26 @@ void ThreeDistributionsFullVectorConnector::init() { case DIR_000: UB_THROW(UbException(UB_EXARGS, "ZERO not allowed")); break; case DIR_P00: - case DIR_M00: sender->getData().resize(maxX2*maxX3*anz, 0.0); break; + case DIR_M00: sender->getData().resize(maxX2*maxX3*anz, c0o1); break; case DIR_0P0: - case DIR_0M0: sender->getData().resize(maxX1*maxX3*anz, 0.0); break; + case DIR_0M0: sender->getData().resize(maxX1*maxX3*anz, c0o1); break; case DIR_00P: - case DIR_00M: sender->getData().resize(maxX1*maxX2*anz, 0.0); break; + case DIR_00M: sender->getData().resize(maxX1*maxX2*anz, c0o1); break; case DIR_PP0: case DIR_MM0: case DIR_PM0: - case DIR_MP0: sender->getData().resize(maxX3*anz, 0.0); break; + case DIR_MP0: sender->getData().resize(maxX3*anz, c0o1); break; case DIR_P0P: case DIR_M0M: case DIR_P0M: - case DIR_M0P: sender->getData().resize(maxX2*anz, 0.0); break; + case DIR_M0P: sender->getData().resize(maxX2*anz, c0o1); break; case DIR_0PP: case DIR_0MM: case DIR_0PM: - case DIR_0MP: sender->getData().resize(maxX1*anz, 0.0); break; + case DIR_0MP: sender->getData().resize(maxX1*anz, c0o1); break; case DIR_PPP: case DIR_MMM: @@ -91,7 +92,7 @@ void ThreeDistributionsFullVectorConnector::init() case DIR_PMP: case DIR_MPM: case DIR_PMM: - case DIR_MPP: sender->getData().resize(anz, 0.0); break; + case DIR_MPP: sender->getData().resize(anz, c0o1); break; default: UB_THROW(UbException(UB_EXARGS, "unknown sendDir")); } diff --git a/src/cpu/VirtualFluidsCore/Interactors/D3Q27Interactor.cpp b/src/cpu/VirtualFluidsCore/Interactors/D3Q27Interactor.cpp index 02a94f573..d9c605a58 100644 --- a/src/cpu/VirtualFluidsCore/Interactors/D3Q27Interactor.cpp +++ b/src/cpu/VirtualFluidsCore/Interactors/D3Q27Interactor.cpp @@ -88,80 +88,81 @@ D3Q27Interactor::~D3Q27Interactor() = default; void D3Q27Interactor::initRayVectors() { using namespace vf::lbm::dir; + using namespace vf::basics::constant; int fdir; real c1oS2 = vf::basics::constant::one_over_sqrt2; real c1oS3 = vf::basics::constant::one_over_sqrt3; fdir = DIR_P00; - rayX1[fdir] = 1.0; - rayX2[fdir] = 0.0; - rayX3[fdir] = 0.0; + rayX1[fdir] = c1o1; + rayX2[fdir] = c0o1; + rayX3[fdir] = c0o1; fdir = DIR_M00; - rayX1[fdir] = -1.0; - rayX2[fdir] = 0.0; - rayX3[fdir] = 0.0; + rayX1[fdir] = -c1o1; + rayX2[fdir] = c0o1; + rayX3[fdir] = c0o1; fdir = DIR_0P0; - rayX1[fdir] = 0.0; - rayX2[fdir] = 1.0; - rayX3[fdir] = 0.0; + rayX1[fdir] = c0o1; + rayX2[fdir] = c1o1; + rayX3[fdir] = c0o1; fdir = DIR_0M0; - rayX1[fdir] = 0.0; - rayX2[fdir] = -1.0; - rayX3[fdir] = 0.0; + rayX1[fdir] = c0o1; + rayX2[fdir] = -c1o1; + rayX3[fdir] = c0o1; fdir = DIR_00P; - rayX1[fdir] = 0.0; - rayX2[fdir] = 0.0; - rayX3[fdir] = 1.0; + rayX1[fdir] = c0o1; + rayX2[fdir] = c0o1; + rayX3[fdir] = c1o1; fdir = DIR_00M; - rayX1[fdir] = 0.0; - rayX2[fdir] = 0.0; - rayX3[fdir] = -1.0; + rayX1[fdir] = c0o1; + rayX2[fdir] = c0o1; + rayX3[fdir] = -c1o1; fdir = DIR_PP0; rayX1[fdir] = c1oS2; rayX2[fdir] = c1oS2; - rayX3[fdir] = 0.0; + rayX3[fdir] = c0o1; fdir = DIR_MM0; rayX1[fdir] = -c1oS2; rayX2[fdir] = -c1oS2; - rayX3[fdir] = 0.0; + rayX3[fdir] = c0o1; fdir = DIR_PM0; rayX1[fdir] = c1oS2; rayX2[fdir] = -c1oS2; - rayX3[fdir] = 0.0; + rayX3[fdir] = c0o1; fdir = DIR_MP0; rayX1[fdir] = -c1oS2; rayX2[fdir] = c1oS2; - rayX3[fdir] = 0.0; + rayX3[fdir] = c0o1; fdir = DIR_P0P; rayX1[fdir] = c1oS2; - rayX2[fdir] = 0.0; + rayX2[fdir] = c0o1; rayX3[fdir] = c1oS2; fdir = DIR_M0M; rayX1[fdir] = -c1oS2; - rayX2[fdir] = 0.0; + rayX2[fdir] = c0o1; rayX3[fdir] = -c1oS2; fdir = DIR_P0M; rayX1[fdir] = c1oS2; - rayX2[fdir] = 0.0; + rayX2[fdir] = c0o1; rayX3[fdir] = -c1oS2; fdir = DIR_M0P; rayX1[fdir] = -c1oS2; - rayX2[fdir] = 0.0; + rayX2[fdir] = c0o1; rayX3[fdir] = c1oS2; fdir = DIR_0PP; - rayX1[fdir] = 0.0; + rayX1[fdir] = c0o1; rayX2[fdir] = c1oS2; rayX3[fdir] = c1oS2; fdir = DIR_0MM; - rayX1[fdir] = 0.0; + rayX1[fdir] = c0o1; rayX2[fdir] = -c1oS2; rayX3[fdir] = -c1oS2; fdir = DIR_0PM; - rayX1[fdir] = 0.0; + rayX1[fdir] = c0o1; rayX2[fdir] = c1oS2; rayX3[fdir] = -c1oS2; fdir = DIR_0MP; - rayX1[fdir] = 0.0; + rayX1[fdir] = c0o1; rayX2[fdir] = -c1oS2; rayX3[fdir] = c1oS2; @@ -285,6 +286,7 @@ void D3Q27Interactor::updateInteractor(const real ×tep) bool D3Q27Interactor::setDifferencesToGbObject3D(const SPtr<Block3D> block) { using namespace vf::lbm::dir; + using namespace vf::basics::constant; if (!block) return false; @@ -297,7 +299,7 @@ bool D3Q27Interactor::setDifferencesToGbObject3D(const SPtr<Block3D> block) solidNodeIndicesMap[block] = set<UbTupleInt3>(); set<UbTupleInt3> &solidNodeIndices = solidNodeIndicesMap[block]; - real timestep = 0; + real timestep = c0o1; bool oneEntryGotBC = false; bool gotQs = false; SPtr<BoundaryConditions> bc; @@ -396,11 +398,11 @@ bool D3Q27Interactor::setDifferencesToGbObject3D(const SPtr<Block3D> block) rayX2[fdir], rayX3[fdir]); q /= distNeigh[fdir]; - // assert(UbMath::lessEqual(q, 1.0)); + // assert(UbMath::lessEqual(q, c1o1)); - if (UbMath::inClosedInterval(q, 1.0, 1.0)) - q = 1.0; - if (UbMath::greater(q, 0.0) && UbMath::lessEqual(q, 1.0)) { + if (UbMath::inClosedInterval(q, c1o1, c1o1)) + q = c1o1; + if (UbMath::greater(q, c0o1) && UbMath::lessEqual(q, c1o1)) { //#pragma omp critical (BC_CHANGE) { bc = bcArray->getBC(ix1, ix2, ix3); @@ -410,9 +412,9 @@ bool D3Q27Interactor::setDifferencesToGbObject3D(const SPtr<Block3D> block) } if (bc->hasNoSlipBoundary()) { - bc->setBoundaryVelocityX1(0.0); - bc->setBoundaryVelocityX2(0.0); - bc->setBoundaryVelocityX3(0.0); + bc->setBoundaryVelocityX1(c0o1); + bc->setBoundaryVelocityX2(c0o1); + bc->setBoundaryVelocityX3(c0o1); } for (int index = (int)BCs.size() - 1; index >= 0; --index) @@ -499,7 +501,7 @@ bool D3Q27Interactor::setDifferencesToGbObject3D(const SPtr<Block3D> block) GbLine3D *clippedLine = this->geoObject3D->createClippedLine3D(pointA, pointB); if (clippedLine) { - real q = 0.0; + real q = c0o1; if (!this->isInverseSolid()) // A is outside { real distanceAB = pointA.getDistance(&pointB); // pointA to B @@ -518,16 +520,16 @@ bool D3Q27Interactor::setDifferencesToGbObject3D(const SPtr<Block3D> block) pointB.getX1Coordinate(), pointB.getX2Coordinate(), pointB.getX3Coordinate(), pointIsOnBoundary) && pointIsOnBoundary) { - // A is definitely inside, B is exactly on ObjectBoundary => q = 1.0 - q = 1.0; + // A is definitely inside, B is exactly on ObjectBoundary => q = c1o1 + q = c1o1; } else { - q = 0.0; + q = c0o1; } } - if (UbMath::inClosedInterval(q, 1.0, 1.0)) - q = 1.0; - if (UbMath::lessEqual(q, 1.0) && UbMath::greater(q, 0.0)) { + if (UbMath::inClosedInterval(q, c1o1, c1o1)) + q = c1o1; + if (UbMath::lessEqual(q, c1o1) && UbMath::greater(q, c0o1)) { { bc = bcArray->getBC(ix1, ix2, ix3); if (!bc) { diff --git a/src/cpu/VirtualFluidsCore/Interactors/D3Q27TriFaceMeshInteractor.cpp b/src/cpu/VirtualFluidsCore/Interactors/D3Q27TriFaceMeshInteractor.cpp index c30a4cc8c..db41bba85 100644 --- a/src/cpu/VirtualFluidsCore/Interactors/D3Q27TriFaceMeshInteractor.cpp +++ b/src/cpu/VirtualFluidsCore/Interactors/D3Q27TriFaceMeshInteractor.cpp @@ -123,6 +123,7 @@ bool D3Q27TriFaceMeshInteractor::setDifferencesToGbObject3D(const SPtr<Block3D> void D3Q27TriFaceMeshInteractor::setQs(const real &timeStep) { using namespace vf::lbm::dir; + using namespace vf::basics::constant; UBLOGML(logDEBUG1, "\nLBMTriFaceMeshInteractor - setQs start "); if (!this->grid.lock()) @@ -168,7 +169,7 @@ void D3Q27TriFaceMeshInteractor::setQs(const real &timeStep) // grobe Blocklaengen SPtr<CoordinateTransformation3D> trafo = grid.lock()->getCoordinateTransformator(); double cblockDeltaX1, cblockDeltaX2, cblockDeltaX3, delta; - cblockDeltaX1 = cblockDeltaX2 = cblockDeltaX3 = delta = 1.0 / (double)(1 << coarsestInitLevel); + cblockDeltaX1 = cblockDeltaX2 = cblockDeltaX3 = delta = c1o1 / (double)(1 << coarsestInitLevel); if (trafo) { cblockDeltaX1 = trafo->getX1CoordinateScaling() * delta; cblockDeltaX2 = trafo->getX2CoordinateScaling() * delta; @@ -208,12 +209,12 @@ void D3Q27TriFaceMeshInteractor::setQs(const real &timeStep) // blockDeltaCalculator->getMinX1Delta(level) -> ein geinlinter wert wird geholt // TODO: set 5.0 as variable parameter in constructor, default 2.0 - deltaMinX1[level] = (float)(5.0 * nodeDeltaX1); // kein minus da unten -deltaMin - deltaMinX2[level] = (float)(5.0 * nodeDeltaX2); - deltaMinX3[level] = (float)(5.0 * nodeDeltaX3); - deltaMaxX1[level] = (float)(5.0 * nodeDeltaX1); - deltaMaxX2[level] = (float)(5.0 * nodeDeltaX2); - deltaMaxX3[level] = (float)(5.0 * nodeDeltaX3); + deltaMinX1[level] = (float)(c5o1 * nodeDeltaX1); // kein minus da unten -deltaMin + deltaMinX2[level] = (float)(c5o1 * nodeDeltaX2); + deltaMinX3[level] = (float)(c5o1 * nodeDeltaX3); + deltaMaxX1[level] = (float)(c5o1 * nodeDeltaX1); + deltaMaxX2[level] = (float)(c5o1 * nodeDeltaX2); + deltaMaxX3[level] = (float)(c5o1 * nodeDeltaX3); } ////////////////////////////////////////////////////////////////////////// @@ -237,7 +238,7 @@ void D3Q27TriFaceMeshInteractor::setQs(const real &timeStep) std::vector<GbTriFaceMesh3D::Vertex> &nodes = *mesh->getNodes(); std::map<SPtr<Block3D>, std::set<UbTupleInt3>> tmpSolidNodesFromOtherInteractors; - int onePercent = UbMath::integerRounding(triangles.size() * 0.01); + int onePercent = UbMath::integerRounding(triangles.size() * c1o100); if (onePercent == 0) onePercent = 1; UbTimer setQTimer; @@ -330,13 +331,13 @@ void D3Q27TriFaceMeshInteractor::setQs(const real &timeStep) blockMaxX[1] = (float)(val<2>(coords) + val<2>(deltas) + deltaMaxX2[level]); blockMaxX[2] = (float)(val<3>(coords) + val<3>(deltas) + deltaMaxX3[level]); - boxCenter[0] = (float)(0.5 * (blockMaxX[0] + blockMinX[0])); - boxCenter[1] = (float)(0.5 * (blockMaxX[1] + blockMinX[1])); - boxCenter[2] = (float)(0.5 * (blockMaxX[2] + blockMinX[2])); + boxCenter[0] = (float)(c1o2 * (blockMaxX[0] + blockMinX[0])); + boxCenter[1] = (float)(c1o2 * (blockMaxX[1] + blockMinX[1])); + boxCenter[2] = (float)(c1o2 * (blockMaxX[2] + blockMinX[2])); - halfBoxSize[0] = (float)(0.5 * (blockMaxX[0] - blockMinX[0])); - halfBoxSize[1] = (float)(0.5 * (blockMaxX[1] - blockMinX[1])); - halfBoxSize[2] = (float)(0.5 * (blockMaxX[2] - blockMinX[2])); + halfBoxSize[0] = (float)(c1o2 * (blockMaxX[0] - blockMinX[0])); + halfBoxSize[1] = (float)(c1o2 * (blockMaxX[1] - blockMinX[1])); + halfBoxSize[2] = (float)(c1o2 * (blockMaxX[2] - blockMinX[2])); // wenn dreieck "vergroesserten cube" nicht schneidet/beruehrt -> keine BC moeglich -> continue if (!GbMeshTools3D::triBoxOverlap(boxCenter, halfBoxSize, triPoints)) { @@ -445,11 +446,11 @@ void D3Q27TriFaceMeshInteractor::setQs(const real &timeStep) a = e1x1 * px1 + e1x2 * px2 + e1x3 * px3; if (fabs(a) < 1.E-10) continue; - f = 1.0 / a; + f = c1o1 / a; // u = f * ( s dot p) u = f * (sx1 * px1 + sx2 * px2 + sx3 * px3); - if (u < -1.E-10 || u > 1.0 + 1.E-10) + if (u < -1.E-10 || u > c1o1 + 1.E-10) continue; // q = s x e1 @@ -459,7 +460,7 @@ void D3Q27TriFaceMeshInteractor::setQs(const real &timeStep) // v = f*(e2 dot q) v = f * (this->rayX1[fdir] * qx1 + this->rayX2[fdir] * qx2 + this->rayX3[fdir] * qx3); - if (v < -1.E-10 || (u + v) > 1.0 + 1.E-10) + if (v < -1.E-10 || (u + v) > c1o1 + 1.E-10) continue; // t = f * (e2 dot q) @@ -492,7 +493,7 @@ void D3Q27TriFaceMeshInteractor::setQs(const real &timeStep) (z1 - internX3) * (z1 - internX3)); q_ehsan /= nodeDeltaToNeigh[level][fdir]; q = q_ehsan; - if (UbMath::greater(q, 1.0) || UbMath::lessEqual(q, 0.0)) + if (UbMath::greater(q, c1o1) || UbMath::lessEqual(q, 0.0)) continue; // gefundenes q auf gueltigkeit pruefen @@ -507,9 +508,9 @@ void D3Q27TriFaceMeshInteractor::setQs(const real &timeStep) continue; } - if (UbMath::inClosedInterval(q, 1.0, 1.0)) - q = 1.0; - if (UbMath::greater(q, 0.0) && UbMath::lessEqual(q, 1.0)) { + if (UbMath::inClosedInterval(q, c1o1, c1o1)) + q = c1o1; + if (UbMath::greater(q, 0.0) && UbMath::lessEqual(q, c1o1)) { gotQs = blockGotBCs = true; bc = bcMatrix->getBC(ix1, ix2, ix3); @@ -591,6 +592,7 @@ void D3Q27TriFaceMeshInteractor::setQs(const real &timeStep) void D3Q27TriFaceMeshInteractor::initInteractor2(const real &timeStep) { using namespace vf::lbm::dir; + using namespace vf::basics::constant; UBLOGML(logDEBUG1, "\nLBMTriFaceMeshInteractor - initInteractor start "); if (!this->grid.lock()) @@ -642,7 +644,7 @@ void D3Q27TriFaceMeshInteractor::initInteractor2(const real &timeStep) // grobe Blocklaengen SPtr<CoordinateTransformation3D> trafo = grid.lock()->getCoordinateTransformator(); double cblockDeltaX1, cblockDeltaX2, cblockDeltaX3, delta; - cblockDeltaX1 = cblockDeltaX2 = cblockDeltaX3 = delta = 1.0 / (double)(1 << coarsestInitLevel); + cblockDeltaX1 = cblockDeltaX2 = cblockDeltaX3 = delta = c1o1 / (double)(1 << coarsestInitLevel); if (trafo) { cblockDeltaX1 = trafo->getX1CoordinateScaling() * delta; cblockDeltaX2 = trafo->getX2CoordinateScaling() * delta; @@ -735,13 +737,13 @@ void D3Q27TriFaceMeshInteractor::initInteractor2(const real &timeStep) // notwendige variablen initialisieren (u.a. blockDeltas des groben levels) float triPoints[3][3]; - real vx1 = 0.0, vx2 = 0.0, vx3 = 0.0; + real vx1 = c0o1, vx2 = c0o1, vx3 = c0o1; unsigned counterTriBoxOverlap = 0, counterAABBTriFace = 0, counterHalfspace = 0, counterBilligOBB = 0; std::vector<GbTriFaceMesh3D::TriFace> &triangles = *mesh->getTriangles(); std::vector<GbTriFaceMesh3D::Vertex> &nodes = *mesh->getNodes(); std::map<SPtr<Block3D>, std::set<std::vector<int>>> tmpSolidNodesFromOtherInteractors; - int onePercent = UbMath::integerRounding(triangles.size() * 0.01); + int onePercent = UbMath::integerRounding(triangles.size() * c1o100); if (onePercent == 0) onePercent = 1; UbTimer setQTimer; @@ -845,13 +847,13 @@ void D3Q27TriFaceMeshInteractor::initInteractor2(const real &timeStep) blockMaxX[1] = (float)(val<2>(coords) + val<2>(deltas) + deltaMaxX2[level]); blockMaxX[2] = (float)(val<3>(coords) + val<3>(deltas) + deltaMaxX3[level]); - boxCenter[0] = (float)(0.5 * (blockMaxX[0] + blockMinX[0])); - boxCenter[1] = (float)(0.5 * (blockMaxX[1] + blockMinX[1])); - boxCenter[2] = (float)(0.5 * (blockMaxX[2] + blockMinX[2])); + boxCenter[0] = (float)(c1o2 * (blockMaxX[0] + blockMinX[0])); + boxCenter[1] = (float)(c1o2 * (blockMaxX[1] + blockMinX[1])); + boxCenter[2] = (float)(c1o2 * (blockMaxX[2] + blockMinX[2])); - halfBoxSize[0] = (float)(0.5 * (blockMaxX[0] - blockMinX[0])); - halfBoxSize[1] = (float)(0.5 * (blockMaxX[1] - blockMinX[1])); - halfBoxSize[2] = (float)(0.5 * (blockMaxX[2] - blockMinX[2])); + halfBoxSize[0] = (float)(c1o2 * (blockMaxX[0] - blockMinX[0])); + halfBoxSize[1] = (float)(c1o2 * (blockMaxX[1] - blockMinX[1])); + halfBoxSize[2] = (float)(c1o2 * (blockMaxX[2] - blockMinX[2])); // wenn dreieck "vergroesserten cube" nicht schneidet/beruehrt -> keine BC moeglich -> continue if (!GbMeshTools3D::triBoxOverlap(boxCenter, halfBoxSize, triPoints)) { @@ -887,9 +889,9 @@ void D3Q27TriFaceMeshInteractor::initInteractor2(const real &timeStep) double qEinflussDelta = 1.1 * sqrt(nodeDx1 * nodeDx1 + nodeDx2 * nodeDx2 + nodeDx3 * nodeDx3); for (int ix3 = indexMinX3; ix3 < indexMaxX3; ix3++) { - internX3 = val<3>(coords) + nodeDx3 * ix3 - 0.5 * nodeDx3; + internX3 = val<3>(coords) + nodeDx3 * ix3 - c1o2 * nodeDx3; for (int ix2 = indexMinX2; ix2 < indexMaxX2; ix2++) { - internX2 = val<2>(coords) + nodeDx2 * ix2 - 0.5 * nodeDx2; + internX2 = val<2>(coords) + nodeDx2 * ix2 - c1o2 * nodeDx2; for (int ix1 = indexMinX1; ix1 < indexMaxX1; ix1++) { // int blx1 =block->getX1(); @@ -930,7 +932,7 @@ void D3Q27TriFaceMeshInteractor::initInteractor2(const real &timeStep) } } - internX1 = val<1>(coords) + nodeDx1 * ix1 - 0.5 * nodeDx1; + internX1 = val<1>(coords) + nodeDx1 * ix1 - c1o2 * nodeDx1; ////////////////////////////////////////////////////////////////////////// // Punkt in AABB von Dreieck? @@ -996,11 +998,11 @@ void D3Q27TriFaceMeshInteractor::initInteractor2(const real &timeStep) a = e1x1 * px1 + e1x2 * px2 + e1x3 * px3; if (fabs(a) < 1.E-10) continue; - f = 1.0 / a; + f = c1o1 / a; // u = f * ( s dot p) u = f * (sx1 * px1 + sx2 * px2 + sx3 * px3); - if (u < -1.E-10 || u > 1.0 + 1.E-10) + if (u < -1.E-10 || u > c1o1 + 1.E-10) continue; // q = s x e1 @@ -1010,7 +1012,7 @@ void D3Q27TriFaceMeshInteractor::initInteractor2(const real &timeStep) // v = f*(e2 dot q) v = f * (this->rayX1[fdir] * qx1 + this->rayX2[fdir] * qx2 + this->rayX3[fdir] * qx3); - if (v < -1.E-10 || (u + v) > 1.0 + 1.E-10) + if (v < -1.E-10 || (u + v) > c1o1 + 1.E-10) continue; // t = f * (e2 dot q) @@ -1029,9 +1031,9 @@ void D3Q27TriFaceMeshInteractor::initInteractor2(const real &timeStep) continue; } - if (UbMath::inClosedInterval(q, 1.0, 1.0)) - q = 1.0; - if (UbMath::greater(q, 0.0) && UbMath::lessEqual(q, 1.0)) { + if (UbMath::inClosedInterval(q, c1o1, c1o1)) + q = c1o1; + if (UbMath::greater(q, 0.0) && UbMath::lessEqual(q, c1o1)) { // if( !solidFromOtherInteractor ) //--> Knoten schon solid-->BC setzen // ueberfluessig SG changed to if( solidFromOtherInteractor ) //--> Knoten schon // solid-->BC setzen ueberfluessig @@ -1211,9 +1213,9 @@ void D3Q27TriFaceMeshInteractor::initInteractor2(const real &timeStep) // int ride=0; // } if (flagField(bx1, bx2, bx3) == UNDEF_FLAG) { - if (mesh->isPointInGbObject3D(val<1>(coords) + bx1 * nodeDeltaX1 - 0.5 * nodeDeltaX1, - val<2>(coords) + bx2 * nodeDeltaX2 - 0.5 * nodeDeltaX2, - val<3>(coords) + bx3 * nodeDeltaX3 - 0.5 * nodeDeltaX3)) { + if (mesh->isPointInGbObject3D(val<1>(coords) + bx1 * nodeDeltaX1 - c1o2 * nodeDeltaX1, + val<2>(coords) + bx2 * nodeDeltaX2 - c1o2 * nodeDeltaX2, + val<3>(coords) + bx3 * nodeDeltaX3 - c1o2 * nodeDeltaX3)) { (this->*gridFill)(flagField, bx1, bx2, bx3, SOLID_FLAG); } else { (this->*gridFill)(flagField, bx1, bx2, bx3, FLUID_FLAG); @@ -1309,6 +1311,8 @@ void D3Q27TriFaceMeshInteractor::initInteractor2(const real &timeStep) ////////////////////////////////////////////////////////////////////////// void D3Q27TriFaceMeshInteractor::refineBlockGridToLevel(int level, real startDistance, real stopDistance) { + using namespace vf::basics::constant; + UBLOG(logDEBUG1, "D3Q27TriFaceMeshInteractor::refineBlockGridToLevel - start"); // ToDo: evtl checken, ob man noch einen HalbraumCheck für StopDistance einbaut @@ -1365,27 +1369,27 @@ void D3Q27TriFaceMeshInteractor::refineBlockGridToLevel(int level, real startDis // Boundingbox um massgebliches dx erweitern -> zur Bestimmung der zu testenden Bloecke if (triangle.nx > 1.0E-8) { - minX1 = triangle.getMinX(nodes) + 1.05 * triangle.nx * startDistance; - maxX1 = triangle.getMaxX(nodes) + 1.05 * triangle.nx * stopDistance; + minX1 = triangle.getMinX(nodes) + c21o20 * triangle.nx * startDistance; + maxX1 = triangle.getMaxX(nodes) + c21o20 * triangle.nx * stopDistance; } else { - minX1 = triangle.getMinX(nodes) + 1.05 * triangle.nx * stopDistance; - maxX1 = triangle.getMaxX(nodes) + 1.05 * triangle.nx * startDistance; + minX1 = triangle.getMinX(nodes) + c21o20 * triangle.nx * stopDistance; + maxX1 = triangle.getMaxX(nodes) + c21o20 * triangle.nx * startDistance; } if (triangle.ny > 1.0E-8) { - minX2 = triangle.getMinY(nodes) + 1.05 * triangle.ny * startDistance; - maxX2 = triangle.getMaxY(nodes) + 1.05 * triangle.ny * stopDistance; + minX2 = triangle.getMinY(nodes) + c21o20 * triangle.ny * startDistance; + maxX2 = triangle.getMaxY(nodes) + c21o20 * triangle.ny * stopDistance; } else { - minX2 = triangle.getMinY(nodes) + 1.05 * triangle.ny * stopDistance; - maxX2 = triangle.getMaxY(nodes) + 1.05 * triangle.ny * startDistance; + minX2 = triangle.getMinY(nodes) + c21o20 * triangle.ny * stopDistance; + maxX2 = triangle.getMaxY(nodes) + c21o20 * triangle.ny * startDistance; } if (triangle.nz > 1.0E-8) { - minX3 = triangle.getMinZ(nodes) + 1.05 * triangle.nz * startDistance; - maxX3 = triangle.getMaxZ(nodes) + 1.05 * triangle.nz * stopDistance; + minX3 = triangle.getMinZ(nodes) + c21o20 * triangle.nz * startDistance; + maxX3 = triangle.getMaxZ(nodes) + c21o20 * triangle.nz * stopDistance; } else { - minX3 = triangle.getMinZ(nodes) + 1.05 * triangle.nz * stopDistance; - maxX3 = triangle.getMaxZ(nodes) + 1.05 * triangle.nz * startDistance; + minX3 = triangle.getMinZ(nodes) + c21o20 * triangle.nz * stopDistance; + maxX3 = triangle.getMaxZ(nodes) + c21o20 * triangle.nz * startDistance; } int flag = 0; @@ -1435,15 +1439,15 @@ void D3Q27TriFaceMeshInteractor::refineBlockGridToLevel(int level, real startDis // blockseite ermitteln (skalarprodukt dreiecks-normale, vector (midTri->midCub) ) // je nachdem muss für den massgeblichen block start oder stopdistance verwendet werden // liegt block auf pos seite -> stopdistance ansonsten startdistance - double skalarprod = triangle.nx * (0.5 * (x1a + x1b) - triangle.getX1Centroid(nodes)) + - triangle.ny * (0.5 * (x2a + x2b) - triangle.getX2Centroid(nodes)) + - triangle.nz * (0.5 * (x3a + x3b) - triangle.getX3Centroid(nodes)); + double skalarprod = triangle.nx * (c1o2 * (x1a + x1b) - triangle.getX1Centroid(nodes)) + + triangle.ny * (c1o2 * (x2a + x2b) - triangle.getX2Centroid(nodes)) + + triangle.nz * (c1o2 * (x3a + x3b) - triangle.getX3Centroid(nodes)); - double blockdelta = 1.05 * stopDistance; + double blockdelta = c21o20 * stopDistance; if (skalarprod < 1.E-8) - blockdelta = -1.05 * startDistance; // startDistance<0!! + blockdelta = -c21o20 * startDistance; // startDistance<0!! else if (fabs(skalarprod) < 1.E-8) - blockdelta = 1.05 * UbMath::max(-startDistance, stopDistance); + blockdelta = c21o20 * UbMath::max(-startDistance, stopDistance); // block anpassen blockMinX[0] = (float)(val<1>(coords) - blockdelta); @@ -1454,13 +1458,13 @@ void D3Q27TriFaceMeshInteractor::refineBlockGridToLevel(int level, real startDis blockMaxX[1] = (float)(val<2>(coords) + val<2>(deltas) + blockdelta); blockMaxX[2] = (float)(val<3>(coords) + val<3>(deltas) + blockdelta); - boxCenter[0] = (float)(0.5 * (blockMaxX[0] + blockMinX[0])); - boxCenter[1] = (float)(0.5 * (blockMaxX[1] + blockMinX[1])); - boxCenter[2] = (float)(0.5 * (blockMaxX[2] + blockMinX[2])); + boxCenter[0] = (float)(c1o2 * (blockMaxX[0] + blockMinX[0])); + boxCenter[1] = (float)(c1o2 * (blockMaxX[1] + blockMinX[1])); + boxCenter[2] = (float)(c1o2 * (blockMaxX[2] + blockMinX[2])); - halfBoxSize[0] = (float)(0.5 * (blockMaxX[0] - blockMinX[0])); - halfBoxSize[1] = (float)(0.5 * (blockMaxX[1] - blockMinX[1])); - halfBoxSize[2] = (float)(0.5 * (blockMaxX[2] - blockMinX[2])); + halfBoxSize[0] = (float)(c1o2 * (blockMaxX[0] - blockMinX[0])); + halfBoxSize[1] = (float)(c1o2 * (blockMaxX[1] - blockMinX[1])); + halfBoxSize[2] = (float)(c1o2 * (blockMaxX[2] - blockMinX[2])); GbTriFaceMesh3D::Vertex &v1_ = nodes[triangle.v1]; GbTriFaceMesh3D::Vertex &v2_ = nodes[triangle.v2]; @@ -1558,10 +1562,11 @@ UbTupleDouble3 D3Q27TriFaceMeshInteractor::getForces() //} ////return getForcesTriangle(); // this->calculateForces(); + using namespace vf::basics::constant; - real forceX1 = 0.0; - real forceX2 = 0.0; - real forceX3 = 0.0; + real forceX1 = c0o1; + real forceX2 = c0o1; + real forceX3 = c0o1; // double area = 0.0; @@ -1580,9 +1585,11 @@ UbTupleDouble3 D3Q27TriFaceMeshInteractor::getForces() ////////////////////////////////////////////////////////////////////////// UbTupleDouble3 D3Q27TriFaceMeshInteractor::getForcesTriangle() { - real forceX1 = 0.0; - real forceX2 = 0.0; - real forceX3 = 0.0; + using namespace vf::basics::constant; + + real forceX1 = c0o1; + real forceX2 = c0o1; + real forceX3 = c0o1; // D3Q19BlockGrid& grid.lock() = dynamic_cast<D3Q19BlockGrid&>(*this->grid.lock()); //// CoordinateTransformation3D *trafo = this->grid.lock()->getTransformation(); @@ -1829,6 +1836,8 @@ string D3Q27TriFaceMeshInteractor::toString() ////////////////////////////////////////////////////////////////////////// void D3Q27TriFaceMeshInteractor::reinitWithStoredQs(const real & /*timeStep*/) { + using namespace vf::basics::constant; + // alle solid Bloecke wieder solid setzen std::vector<SPtr<Block3D>> &solidBlocks = this->getSolidBlockSet(); for (size_t i = 0; i < solidBlocks.size(); i++) { @@ -1879,9 +1888,9 @@ void D3Q27TriFaceMeshInteractor::reinitWithStoredQs(const real & /*timeStep*/) // es handelt sich un ein statisches Objekt und beim Propeller gibt // es Schwierigkeiten an den Flügelspitzen, dass kann daher kommen, // dass dort zuviel bc-flaggs sind und mit Geschwindigkeit ergibt dies ziemlich grosse Werte - bc->setBoundaryVelocityX1(0.0); - bc->setBoundaryVelocityX2(0.0); - bc->setBoundaryVelocityX3(0.0); + bc->setBoundaryVelocityX1(c0o1); + bc->setBoundaryVelocityX2(c0o1); + bc->setBoundaryVelocityX3(c0o1); // TODO: HACK GEHOERT NICHT HIERHIER!!! - end bool gotQs = false; diff --git a/src/cpu/VirtualFluidsCore/LBM/BGKLBMKernel.cpp b/src/cpu/VirtualFluidsCore/LBM/BGKLBMKernel.cpp index b50103ff8..0145e633d 100644 --- a/src/cpu/VirtualFluidsCore/LBM/BGKLBMKernel.cpp +++ b/src/cpu/VirtualFluidsCore/LBM/BGKLBMKernel.cpp @@ -138,7 +138,7 @@ void BGKLBMKernel::calculate(int step) vx3 = f[DIR_00P] - f[DIR_00M] + f[DIR_P0P] - f[DIR_M0M] - f[DIR_P0M] + f[DIR_M0P] + f[DIR_0PP] - f[DIR_0MM] - f[DIR_0PM] + f[DIR_0MP] + f[DIR_PPP] + f[DIR_MMP] + f[DIR_PMP] + f[DIR_MPP] - f[DIR_PPM] - f[DIR_MMM] - f[DIR_PMM] - f[DIR_MPM]; - real cu_sq = 1.5 * (vx1 * vx1 + vx2 * vx2 + vx3 * vx3); + real cu_sq = c3o2 * (vx1 * vx1 + vx2 * vx2 + vx3 * vx3); feq[DIR_000] = c8o27 * (drho - cu_sq); feq[DIR_P00] = c2o27 * (drho + c3o1 * (vx1) + c9o2 * (vx1) * (vx1)-cu_sq); diff --git a/src/cpu/VirtualFluidsCore/LBM/InitDensityLBMKernel.cpp b/src/cpu/VirtualFluidsCore/LBM/InitDensityLBMKernel.cpp index bf68b4d43..574014992 100644 --- a/src/cpu/VirtualFluidsCore/LBM/InitDensityLBMKernel.cpp +++ b/src/cpu/VirtualFluidsCore/LBM/InitDensityLBMKernel.cpp @@ -957,7 +957,7 @@ void InitDensityLBMKernel::calculate(int /*step*/) //vx2 = vx2+(vvy-vx2); //vx3 = vx3+(vvz-vx3); - real cu_sq = 1.5*(vx1*vx1+vx2*vx2+vx3*vx3); + real cu_sq = c3o2*(vx1*vx1+vx2*vx2+vx3*vx3); feq[DIR_000] = c8o27*(drho-cu_sq); feq[DIR_P00] = c2o27*(drho+c3o1*(vx1)+c9o2*(vx1)*(vx1)-cu_sq); diff --git a/src/cpu/VirtualFluidsCore/LBM/Interpolation/CompressibleOffsetInterpolator.cpp b/src/cpu/VirtualFluidsCore/LBM/Interpolation/CompressibleOffsetInterpolator.cpp index 509115d26..a5450b3b4 100644 --- a/src/cpu/VirtualFluidsCore/LBM/Interpolation/CompressibleOffsetInterpolator.cpp +++ b/src/cpu/VirtualFluidsCore/LBM/Interpolation/CompressibleOffsetInterpolator.cpp @@ -375,7 +375,7 @@ void CompressibleOffsetInterpolator::calcInterpolatedCoefficiets(const D3Q27ICel x_BE = c1o4*eps_new*(-((c2o1*axx - c3o1*axz - c2o1*bxy - c6o1*cxx + cxz))/(c54o1*o)); x_TN = c1o4*eps_new*(-((-c4o1*axx + bxy + c3o1*bxz + c3o1*cxy + cxz))/(c54o1*o)); x_BN = c1o4*eps_new*(-((-c4o1*axx + bxy - c3o1*bxz - c3o1*cxy + cxz))/(c54o1*o)); - x_ZERO = 0.; + x_ZERO = c0o1; x_TNE = c1o4*eps_new*(-((axy + axz + c2o1*bxx + bxz + c2o1*cxx + cxy))/(c72o1*o)); x_TSW = c1o4*eps_new*(((-axy + axz - c2o1*bxx + bxz + c2o1*cxx + cxy))/(c72o1*o)); x_TSE = c1o4*eps_new*(((axy - axz + c2o1*bxx + bxz - c2o1*cxx + cxy))/(c72o1*o)); @@ -390,7 +390,7 @@ void CompressibleOffsetInterpolator::calcInterpolatedCoefficiets(const D3Q27ICel y_BE = c1o4*eps_new*(-((axy - c3o1*ayz - c4o1*byy - c3o1*cxy + cyz))/(c54o1*o)); y_TN = c1o4*eps_new*(-((-c2o1*axy + c2o1*byy + c3o1*byz + c6o1*cyy + cyz))/(c54o1*o)); y_BN = c1o4*eps_new*(-((-c2o1*axy + c2o1*byy - c3o1*byz - c6o1*cyy + cyz))/(c54o1*o)); - y_ZERO = 0.; + y_ZERO = c0o1; y_TNE = c1o4*eps_new*(-((c2o1*ayy + ayz + bxy + byz + cxy + c2o1*cyy))/(c72o1*o)); y_TSW = c1o4*eps_new*(((-c2o1*ayy + ayz - bxy + byz + cxy + c2o1*cyy))/(c72o1*o)); y_TSE = c1o4*eps_new*(((c2o1*ayy - ayz + bxy + byz - cxy + c2o1*cyy))/(c72o1*o)); @@ -405,7 +405,7 @@ void CompressibleOffsetInterpolator::calcInterpolatedCoefficiets(const D3Q27ICel z_BE = c1o4*eps_new*(-((axz - c6o1*azz - c2o1*byz - c3o1*cxz + c2o1*czz))/(c54o1*o)); z_TN = c1o4*eps_new*(-((-c2o1*axz + byz + c6o1*bzz + c3o1*cyz + c2o1*czz))/(c54o1*o)); z_BN = c1o4*eps_new*(-((-c2o1*axz + byz - c6o1*bzz - c3o1*cyz + c2o1*czz))/(c54o1*o)); - z_ZERO = 0.; + z_ZERO = c0o1; z_TNE = c1o4*eps_new*(-((ayz + c2o1*azz + bxz + c2o1*bzz + cxz + cyz))/(c72o1*o)); z_TSW = c1o4*eps_new*(((-ayz + c2o1*azz - bxz + c2o1*bzz + cxz + cyz))/(c72o1*o)); z_TSE = c1o4*eps_new*(((ayz - c2o1*azz + bxz + c2o1*bzz - cxz + cyz))/(c72o1*o)); diff --git a/src/cpu/VirtualFluidsCore/LBM/Interpolation/CompressibleOffsetMomentsInterpolator.cpp b/src/cpu/VirtualFluidsCore/LBM/Interpolation/CompressibleOffsetMomentsInterpolator.cpp index e7d891df0..9003b1206 100644 --- a/src/cpu/VirtualFluidsCore/LBM/Interpolation/CompressibleOffsetMomentsInterpolator.cpp +++ b/src/cpu/VirtualFluidsCore/LBM/Interpolation/CompressibleOffsetMomentsInterpolator.cpp @@ -46,14 +46,14 @@ void CompressibleOffsetMomentsInterpolator::interpolateCoarseToFine(D3Q27ICell& vf::lbm::Coefficients coefficients; calculateCoefficients(coefficients, icellC, omegaC, xoff, yoff, zoff); - vf::lbm::interpolateCF(icellF.BSW, omegaF, vf::basics::constant::c1o2, coefficients, -0.25, -0.25, -0.25); - vf::lbm::interpolateCF(icellF.BNE, omegaF, vf::basics::constant::c1o2, coefficients, 0.25, 0.25, -0.25); - vf::lbm::interpolateCF(icellF.TNW, omegaF, vf::basics::constant::c1o2, coefficients, -0.25, 0.25, 0.25); - vf::lbm::interpolateCF(icellF.TSE, omegaF, vf::basics::constant::c1o2, coefficients, 0.25, -0.25, 0.25); - vf::lbm::interpolateCF(icellF.BNW, omegaF, vf::basics::constant::c1o2, coefficients, -0.25, 0.25, -0.25); - vf::lbm::interpolateCF(icellF.BSE, omegaF, vf::basics::constant::c1o2, coefficients, 0.25, -0.25, -0.25); - vf::lbm::interpolateCF(icellF.TSW, omegaF, vf::basics::constant::c1o2, coefficients, -0.25, -0.25, 0.25); - vf::lbm::interpolateCF(icellF.TNE, omegaF, vf::basics::constant::c1o2, coefficients, 0.25, 0.25, 0.25); + vf::lbm::interpolateCF(icellF.BSW, omegaF, vf::basics::constant::c1o2, coefficients, -c1o4, -c1o4, -c1o4); + vf::lbm::interpolateCF(icellF.BNE, omegaF, vf::basics::constant::c1o2, coefficients, c1o4, c1o4, -c1o4); + vf::lbm::interpolateCF(icellF.TNW, omegaF, vf::basics::constant::c1o2, coefficients, -c1o4, c1o4, c1o4); + vf::lbm::interpolateCF(icellF.TSE, omegaF, vf::basics::constant::c1o2, coefficients, c1o4, -c1o4, c1o4); + vf::lbm::interpolateCF(icellF.BNW, omegaF, vf::basics::constant::c1o2, coefficients, -c1o4, c1o4, -c1o4); + vf::lbm::interpolateCF(icellF.BSE, omegaF, vf::basics::constant::c1o2, coefficients, c1o4, -c1o4, -c1o4); + vf::lbm::interpolateCF(icellF.TSW, omegaF, vf::basics::constant::c1o2, coefficients, -c1o4, -c1o4, c1o4); + vf::lbm::interpolateCF(icellF.TNE, omegaF, vf::basics::constant::c1o2, coefficients, c1o4, c1o4, c1o4); } void CompressibleOffsetMomentsInterpolator::interpolateFineToCoarse(D3Q27ICell& icellF, real* icellC, real xoff, real yoff, real zoff) diff --git a/src/cpu/VirtualFluidsCore/LBM/Interpolation/IncompressibleOffsetInterpolator.cpp b/src/cpu/VirtualFluidsCore/LBM/Interpolation/IncompressibleOffsetInterpolator.cpp index 0cd441255..a00c26619 100644 --- a/src/cpu/VirtualFluidsCore/LBM/Interpolation/IncompressibleOffsetInterpolator.cpp +++ b/src/cpu/VirtualFluidsCore/LBM/Interpolation/IncompressibleOffsetInterpolator.cpp @@ -435,56 +435,56 @@ void IncompressibleOffsetInterpolator::calcInterpolatedCoefficiets(const D3Q27IC f_BE = eps_new*(-(ax - c3o1*az - c2o1*by - c3o1*cx + cz+c2o1*kxxMyyAverage-kxxMzzAverage-c3o1*kxzAverage)/(c54o1*o)); f_TN = eps_new*(-(-c2o1*ax + by + c3o1*bz + c3o1*cy + cz-kxxMyyAverage-kxxMzzAverage+c3o1*kyzAverage)/(c54o1*o)); f_BN = eps_new*(-(-c2o1*ax + by - c3o1*bz - c3o1*cy + cz-kxxMyyAverage-kxxMzzAverage-c3o1*kyzAverage)/(c54o1*o)); - f_ZERO = 0.; + f_ZERO = c0o1; f_TNE = eps_new*(-(ay + az + bx + bz + cx + cy+kxyAverage+kxzAverage+kyzAverage)/(c72o1*o)); f_TSW = eps_new*((-ay + az - bx + bz + cx + cy-kxyAverage+kxzAverage+kyzAverage)/(c72o1*o)); f_TSE = eps_new*((ay - az + bx + bz - cx + cy+kxyAverage-kxzAverage+kyzAverage)/(c72o1*o)); f_TNW = eps_new*((ay + az + bx - bz + cx - cy+kxyAverage+kxzAverage-kyzAverage)/(c72o1*o)); - x_E = 0.25*eps_new*((c2o1*(-c4o1*axx + bxy + cxz))/(c27o1*o)); - x_N = 0.25*eps_new*((c2o1*(c2o1*axx - c2o1*bxy + cxz))/(c27o1*o)); - x_T = 0.25*eps_new*((c2o1*(c2o1*axx + bxy - c2o1*cxz))/(c27o1*o)); - x_NE = 0.25*eps_new*(-((c2o1*axx + c3o1*axy + c6o1*bxx + bxy - c2o1*cxz))/(c54o1*o)); - x_SE = 0.25*eps_new*(-((c2o1*axx - c3o1*axy - c6o1*bxx + bxy - c2o1*cxz))/(c54o1*o)); - x_TE = 0.25*eps_new*(-((c2o1*axx + c3o1*axz - c2o1*bxy + c6o1*cxx + cxz))/(c54o1*o)); - x_BE = 0.25*eps_new*(-((c2o1*axx - c3o1*axz - c2o1*bxy - c6o1*cxx + cxz))/(c54o1*o)); - x_TN = 0.25*eps_new*(-((-c4o1*axx + bxy + c3o1*bxz + c3o1*cxy + cxz))/(c54o1*o)); - x_BN = 0.25*eps_new*(-((-c4o1*axx + bxy - c3o1*bxz - c3o1*cxy + cxz))/(c54o1*o)); - x_ZERO = 0.; - x_TNE = 0.25*eps_new*(-((axy + axz + c2o1*bxx + bxz + c2o1*cxx + cxy))/(c72o1*o)); - x_TSW = 0.25*eps_new*(((-axy + axz - c2o1*bxx + bxz + c2o1*cxx + cxy))/(c72o1*o)); - x_TSE = 0.25*eps_new*(((axy - axz + c2o1*bxx + bxz - c2o1*cxx + cxy))/(c72o1*o)); - x_TNW = 0.25*eps_new*(((axy + axz + c2o1*bxx - bxz + c2o1*cxx - cxy))/(c72o1*o)); - - y_E = 0.25*eps_new*(c2o1*(-c2o1*axy + c2o1*byy + cyz))/(c27o1*o); - y_N = 0.25*eps_new*(c2o1*(axy - c4o1*byy + cyz))/(c27o1*o); - y_T = 0.25*eps_new*(c2o1*(axy + c2o1*byy - c2o1*cyz))/(c27o1*o); - y_NE = 0.25*eps_new*(-((axy + c6o1*ayy + c3o1*bxy + c2o1*byy - c2o1*cyz))/(c54o1*o)); - y_SE = 0.25*eps_new*(-((axy - c6o1*ayy - c3o1*bxy + c2o1*byy - c2o1*cyz))/(c54o1*o)); - y_TE = 0.25*eps_new*(-((axy + c3o1*ayz - c4o1*byy + c3o1*cxy + cyz))/(c54o1*o)); - y_BE = 0.25*eps_new*(-((axy - c3o1*ayz - c4o1*byy - c3o1*cxy + cyz))/(c54o1*o)); - y_TN = 0.25*eps_new*(-((-c2o1*axy + c2o1*byy + c3o1*byz + c6o1*cyy + cyz))/(c54o1*o)); - y_BN = 0.25*eps_new*(-((-c2o1*axy + c2o1*byy - c3o1*byz - c6o1*cyy + cyz))/(c54o1*o)); - y_ZERO = 0.; - y_TNE = 0.25*eps_new*(-((c2o1*ayy + ayz + bxy + byz + cxy + c2o1*cyy))/(c72o1*o)); - y_TSW = 0.25*eps_new*(((-c2o1*ayy + ayz - bxy + byz + cxy + c2o1*cyy))/(c72o1*o)); - y_TSE = 0.25*eps_new*(((c2o1*ayy - ayz + bxy + byz - cxy + c2o1*cyy))/(c72o1*o)); - y_TNW = 0.25*eps_new*(((c2o1*ayy + ayz + bxy - byz + cxy - c2o1*cyy))/(c72o1*o)); - - z_E = 0.25*eps_new*((c2o1*(-c2o1*axz + byz + c2o1*czz))/(c27o1*o)); - z_N = 0.25*eps_new*((c2o1*(axz - c2o1*byz + c2o1*czz))/(c27o1*o)); - z_T = 0.25*eps_new*((c2o1*(axz + byz - c4o1*czz))/(c27o1*o)); - z_NE = 0.25*eps_new*(-((axz + c3o1*ayz + c3o1*bxz + byz - c4o1*czz))/(c54o1*o)); - z_SE = 0.25*eps_new*(-((axz - c3o1*ayz - c3o1*bxz + byz - c4o1*czz))/(c54o1*o)); - z_TE = 0.25*eps_new*(-((axz + c6o1*azz - c2o1*byz + c3o1*cxz + c2o1*czz))/(c54o1*o)); - z_BE = 0.25*eps_new*(-((axz - c6o1*azz - c2o1*byz - c3o1*cxz + c2o1*czz))/(c54o1*o)); - z_TN = 0.25*eps_new*(-((-c2o1*axz + byz + c6o1*bzz + c3o1*cyz + c2o1*czz))/(c54o1*o)); - z_BN = 0.25*eps_new*(-((-c2o1*axz + byz - c6o1*bzz - c3o1*cyz + c2o1*czz))/(c54o1*o)); - z_ZERO = 0.; - z_TNE = 0.25*eps_new*(-((ayz + c2o1*azz + bxz + c2o1*bzz + cxz + cyz))/(c72o1*o)); - z_TSW = 0.25*eps_new*(((-ayz + c2o1*azz - bxz + c2o1*bzz + cxz + cyz))/(c72o1*o)); - z_TSE = 0.25*eps_new*(((ayz - c2o1*azz + bxz + c2o1*bzz - cxz + cyz))/(c72o1*o)); - z_TNW = 0.25*eps_new*(((ayz + c2o1*azz + bxz - c2o1*bzz + cxz - cyz))/(c72o1*o)); + x_E = c1o4*eps_new*((c2o1*(-c4o1*axx + bxy + cxz))/(c27o1*o)); + x_N = c1o4*eps_new*((c2o1*(c2o1*axx - c2o1*bxy + cxz))/(c27o1*o)); + x_T = c1o4*eps_new*((c2o1*(c2o1*axx + bxy - c2o1*cxz))/(c27o1*o)); + x_NE = c1o4*eps_new*(-((c2o1*axx + c3o1*axy + c6o1*bxx + bxy - c2o1*cxz))/(c54o1*o)); + x_SE = c1o4*eps_new*(-((c2o1*axx - c3o1*axy - c6o1*bxx + bxy - c2o1*cxz))/(c54o1*o)); + x_TE = c1o4*eps_new*(-((c2o1*axx + c3o1*axz - c2o1*bxy + c6o1*cxx + cxz))/(c54o1*o)); + x_BE = c1o4*eps_new*(-((c2o1*axx - c3o1*axz - c2o1*bxy - c6o1*cxx + cxz))/(c54o1*o)); + x_TN = c1o4*eps_new*(-((-c4o1*axx + bxy + c3o1*bxz + c3o1*cxy + cxz))/(c54o1*o)); + x_BN = c1o4*eps_new*(-((-c4o1*axx + bxy - c3o1*bxz - c3o1*cxy + cxz))/(c54o1*o)); + x_ZERO = c0o1; + x_TNE = c1o4*eps_new*(-((axy + axz + c2o1*bxx + bxz + c2o1*cxx + cxy))/(c72o1*o)); + x_TSW = c1o4*eps_new*(((-axy + axz - c2o1*bxx + bxz + c2o1*cxx + cxy))/(c72o1*o)); + x_TSE = c1o4*eps_new*(((axy - axz + c2o1*bxx + bxz - c2o1*cxx + cxy))/(c72o1*o)); + x_TNW = c1o4*eps_new*(((axy + axz + c2o1*bxx - bxz + c2o1*cxx - cxy))/(c72o1*o)); + + y_E = c1o4*eps_new*(c2o1*(-c2o1*axy + c2o1*byy + cyz))/(c27o1*o); + y_N = c1o4*eps_new*(c2o1*(axy - c4o1*byy + cyz))/(c27o1*o); + y_T = c1o4*eps_new*(c2o1*(axy + c2o1*byy - c2o1*cyz))/(c27o1*o); + y_NE = c1o4*eps_new*(-((axy + c6o1*ayy + c3o1*bxy + c2o1*byy - c2o1*cyz))/(c54o1*o)); + y_SE = c1o4*eps_new*(-((axy - c6o1*ayy - c3o1*bxy + c2o1*byy - c2o1*cyz))/(c54o1*o)); + y_TE = c1o4*eps_new*(-((axy + c3o1*ayz - c4o1*byy + c3o1*cxy + cyz))/(c54o1*o)); + y_BE = c1o4*eps_new*(-((axy - c3o1*ayz - c4o1*byy - c3o1*cxy + cyz))/(c54o1*o)); + y_TN = c1o4*eps_new*(-((-c2o1*axy + c2o1*byy + c3o1*byz + c6o1*cyy + cyz))/(c54o1*o)); + y_BN = c1o4*eps_new*(-((-c2o1*axy + c2o1*byy - c3o1*byz - c6o1*cyy + cyz))/(c54o1*o)); + y_ZERO = c0o1; + y_TNE = c1o4*eps_new*(-((c2o1*ayy + ayz + bxy + byz + cxy + c2o1*cyy))/(c72o1*o)); + y_TSW = c1o4*eps_new*(((-c2o1*ayy + ayz - bxy + byz + cxy + c2o1*cyy))/(c72o1*o)); + y_TSE = c1o4*eps_new*(((c2o1*ayy - ayz + bxy + byz - cxy + c2o1*cyy))/(c72o1*o)); + y_TNW = c1o4*eps_new*(((c2o1*ayy + ayz + bxy - byz + cxy - c2o1*cyy))/(c72o1*o)); + + z_E = c1o4*eps_new*((c2o1*(-c2o1*axz + byz + c2o1*czz))/(c27o1*o)); + z_N = c1o4*eps_new*((c2o1*(axz - c2o1*byz + c2o1*czz))/(c27o1*o)); + z_T = c1o4*eps_new*((c2o1*(axz + byz - c4o1*czz))/(c27o1*o)); + z_NE = c1o4*eps_new*(-((axz + c3o1*ayz + c3o1*bxz + byz - c4o1*czz))/(c54o1*o)); + z_SE = c1o4*eps_new*(-((axz - c3o1*ayz - c3o1*bxz + byz - c4o1*czz))/(c54o1*o)); + z_TE = c1o4*eps_new*(-((axz + c6o1*azz - c2o1*byz + c3o1*cxz + c2o1*czz))/(c54o1*o)); + z_BE = c1o4*eps_new*(-((axz - c6o1*azz - c2o1*byz - c3o1*cxz + c2o1*czz))/(c54o1*o)); + z_TN = c1o4*eps_new*(-((-c2o1*axz + byz + c6o1*bzz + c3o1*cyz + c2o1*czz))/(c54o1*o)); + z_BN = c1o4*eps_new*(-((-c2o1*axz + byz - c6o1*bzz - c3o1*cyz + c2o1*czz))/(c54o1*o)); + z_ZERO = c0o1; + z_TNE = c1o4*eps_new*(-((ayz + c2o1*azz + bxz + c2o1*bzz + cxz + cyz))/(c72o1*o)); + z_TSW = c1o4*eps_new*(((-ayz + c2o1*azz - bxz + c2o1*bzz + cxz + cyz))/(c72o1*o)); + z_TSE = c1o4*eps_new*(((ayz - c2o1*azz + bxz + c2o1*bzz - cxz + cyz))/(c72o1*o)); + z_TNW = c1o4*eps_new*(((ayz + c2o1*azz + bxz - c2o1*bzz + cxz - cyz))/(c72o1*o)); xy_E = c1o16*eps_new *(( c2o1*cxyz)/(c27o1*o)); xy_N = c1o16*eps_new *(( c2o1*cxyz)/(c27o1*o)); diff --git a/src/cpu/VirtualFluidsCore/SimulationObservers/IntegrateValuesHelper.cpp b/src/cpu/VirtualFluidsCore/SimulationObservers/IntegrateValuesHelper.cpp index 89938deb9..720cb2809 100644 --- a/src/cpu/VirtualFluidsCore/SimulationObservers/IntegrateValuesHelper.cpp +++ b/src/cpu/VirtualFluidsCore/SimulationObservers/IntegrateValuesHelper.cpp @@ -174,6 +174,8 @@ void IntegrateValuesHelper::calculateAV() ////////////////////////////////////////////////////////////////////////// void IntegrateValuesHelper::calculateMQ() { + using namespace vf::basics::constant; + real f[D3Q27System::ENDF + 1]; real vx1, vx2, vx3, rho; clearData(); @@ -186,7 +188,7 @@ void IntegrateValuesHelper::calculateMQ() for (CalcNodes cn : cnodes) { SPtr<ILBMKernel> kernel = cn.block->getKernel(); - real dx = 1.0 / (real)(1 << cn.block->getLevel()); + real dx = c1o1 / (real)(1 << cn.block->getLevel()); real cellVolume = dx * dx * dx; if (kernel->getCompressible()) { diff --git a/src/cpu/VirtualFluidsCore/SimulationObservers/WriteBoundaryConditionsSimulationObserver.cpp b/src/cpu/VirtualFluidsCore/SimulationObservers/WriteBoundaryConditionsSimulationObserver.cpp index 9d09db9e2..8bbe4cc95 100644 --- a/src/cpu/VirtualFluidsCore/SimulationObservers/WriteBoundaryConditionsSimulationObserver.cpp +++ b/src/cpu/VirtualFluidsCore/SimulationObservers/WriteBoundaryConditionsSimulationObserver.cpp @@ -132,6 +132,8 @@ void WriteBoundaryConditionsSimulationObserver::clearData() ////////////////////////////////////////////////////////////////////////// void WriteBoundaryConditionsSimulationObserver::addDataGeo(SPtr<Block3D> block) { + using namespace vf::basics::constant; + UbTupleDouble3 org = grid->getBlockWorldCoordinates(block); UbTupleDouble3 nodeOffset = grid->getNodeOffset(block); real dx = grid->getDeltaX(block); @@ -178,22 +180,22 @@ void WriteBoundaryConditionsSimulationObserver::addDataGeo(SPtr<Block3D> block) float(val<3>(org) - val<3>(nodeOffset) + ix3 * dx))); if (!bcArray->hasBC(ix1, ix2, ix3)) { - data[0].push_back(0.0); + data[0].push_back(c0o1); } else if (bcArray->getBC(ix1, ix2, ix3)->hasNoSlipBoundary()) - data[0].push_back(1.0); + data[0].push_back(c1o1); else if (bcArray->getBC(ix1, ix2, ix3)->hasVelocityBoundary()) - data[0].push_back(2.0); + data[0].push_back(c2o1); else if (bcArray->getBC(ix1, ix2, ix3)->hasDensityBoundary()) - data[0].push_back(3.0); + data[0].push_back(c3o1); else if (bcArray->getBC(ix1, ix2, ix3)->hasSlipBoundary()) - data[0].push_back(4.0); + data[0].push_back(c4o1); // else // data[0].push_back(5.0); if (bcArray->isSolid(ix1, ix2, ix3)) { - data[1].push_back(1.0); + data[1].push_back(c1o1); } else { - data[1].push_back(0.0); + data[1].push_back(c0o1); } data[2].push_back(level); diff --git a/src/cpu/VirtualFluidsCore/Visitors/InitDistributionsBlockVisitor.cpp b/src/cpu/VirtualFluidsCore/Visitors/InitDistributionsBlockVisitor.cpp index 68ebae1d6..0cc445b30 100644 --- a/src/cpu/VirtualFluidsCore/Visitors/InitDistributionsBlockVisitor.cpp +++ b/src/cpu/VirtualFluidsCore/Visitors/InitDistributionsBlockVisitor.cpp @@ -182,7 +182,7 @@ void InitDistributionsBlockVisitor::visit(const SPtr<Grid3D> grid, SPtr<Block3D> rho = muRho.Eval(); //x-derivative - real deltaX=dx*0.5; + real deltaX=dx*c1o2; x1 = coords[0]+deltaX; real vx1Plusx1 = muVx1.Eval(); real vx2Plusx1 = muVx2.Eval(); -- GitLab