diff options
| -rw-r--r-- | apps/adrian/poiseuille2d/poiseuille2d.cpp | 4 | ||||
| -rw-r--r-- | src/refinement/coupler2D.h | 3 | ||||
| -rw-r--r-- | src/refinement/coupler2D.hh | 30 | ||||
| -rw-r--r-- | src/refinement/grid2D.h | 5 | ||||
| -rw-r--r-- | src/refinement/grid2D.hh | 14 | 
5 files changed, 28 insertions, 28 deletions
| diff --git a/apps/adrian/poiseuille2d/poiseuille2d.cpp b/apps/adrian/poiseuille2d/poiseuille2d.cpp index b16a19b..e71e51e 100644 --- a/apps/adrian/poiseuille2d/poiseuille2d.cpp +++ b/apps/adrian/poiseuille2d/poiseuille2d.cpp @@ -188,7 +188,7 @@ int main(int argc, char* argv[])    prepareGeometry(coarseGrid->getConverter(), coarseGrid->getSuperGeometry());    const Vector<T,2> wantedFineExtend {3.0, 1.5}; -  const Vector<T,2> fineOrigin = coarseGrid->alignLocationToGrid({0.8, (ly-wantedFineExtend[1])/2}); +  const Vector<T,2> fineOrigin = coarseGrid->alignOriginToGrid({0.8, (ly-wantedFineExtend[1])/2});    const Vector<T,2> fineExtend = coarseGrid->alignExtendToGrid(wantedFineExtend);    auto fineGrid = &coarseGrid->refine(fineOrigin, fineExtend); @@ -222,7 +222,7 @@ int main(int argc, char* argv[])    createLocalBoundaryCondition2D<T, DESCRIPTOR>(fineSBoundaryCondition);    const Vector<T,2> wantedFineExtend2 {0.6, 0.4}; -  const Vector<T,2> fineOrigin2 = fineGrid->alignLocationToGrid({1.05, (ly-wantedFineExtend2[1])/2}); +  const Vector<T,2> fineOrigin2 = fineGrid->alignOriginToGrid({1.05, (ly-wantedFineExtend2[1])/2});    const Vector<T,2> fineExtend2 = fineGrid->alignExtendToGrid(wantedFineExtend2);    auto fineGrid2 = &fineGrid->refine(fineOrigin2, fineExtend2); diff --git a/src/refinement/coupler2D.h b/src/refinement/coupler2D.h index e911575..60a5cab 100644 --- a/src/refinement/coupler2D.h +++ b/src/refinement/coupler2D.h @@ -44,6 +44,9 @@ protected:    const Vector<int,3>& getFineLatticeR(int y) const;    const Vector<int,3>& getCoarseLatticeR(int y) const; +  T getScalingFactor() const; +  T getInvScalingFactor() const; +  private:    std::vector<Vector<int,3>> _coarseLatticeR;    std::vector<Vector<int,3>> _fineLatticeR; diff --git a/src/refinement/coupler2D.hh b/src/refinement/coupler2D.hh index d599728..1d773f3 100644 --- a/src/refinement/coupler2D.hh +++ b/src/refinement/coupler2D.hh @@ -30,6 +30,17 @@  namespace olb { +template <typename T, template<typename> class DESCRIPTOR> +T Coupler2D<T,DESCRIPTOR>::getScalingFactor() const +{ +  return 4. - _coarse.getConverter().getLatticeRelaxationFrequency(); +} + +template <typename T, template<typename> class DESCRIPTOR> +T Coupler2D<T,DESCRIPTOR>::getInvScalingFactor() const +{ +  return 1./getScalingFactor(); +}  template <typename T, template<typename> class DESCRIPTOR>  const Vector<int,3>& Coupler2D<T,DESCRIPTOR>::getFineLatticeR(int y) const @@ -175,7 +186,7 @@ void FineCoupler2D<T,DESCRIPTOR>::couple()      Cell<T,DESCRIPTOR> cell;      fineLattice.get(finePos, cell);      for (int iPop=0; iPop < DESCRIPTOR<T>::q; ++iPop) { -       cell[iPop] = fEq[iPop] + this->_coarse.getScalingFactor() * _c2f_fneq[y][iPop]; +       cell[iPop] = fEq[iPop] + this->getScalingFactor() * _c2f_fneq[y][iPop];      }      fineLattice.set(finePos, cell);    } @@ -214,7 +225,7 @@ void FineCoupler2D<T,DESCRIPTOR>::couple()                         _c2f_fneq[y+2][iPop]                       ); -      fineCell[iPop] = lbHelpers<T,DESCRIPTOR>::equilibrium(iPop, rho, u, uSqr) + this->_coarse.getScalingFactor() * fneq; +      fineCell[iPop] = lbHelpers<T,DESCRIPTOR>::equilibrium(iPop, rho, u, uSqr) + this->getScalingFactor() * fneq;      }      fineLattice.set(finePos, fineCell); @@ -249,7 +260,7 @@ void FineCoupler2D<T,DESCRIPTOR>::couple()                         _c2f_fneq[1][iPop],                         _c2f_fneq[2][iPop]                       ); -      fineCell[iPop] = lbHelpers<T,DESCRIPTOR>::equilibrium(iPop, rho, u, uSqr) + this->_coarse.getScalingFactor() * fneq; +      fineCell[iPop] = lbHelpers<T,DESCRIPTOR>::equilibrium(iPop, rho, u, uSqr) + this->getScalingFactor() * fneq;      }      fineLattice.set(finePos, fineCell); @@ -284,7 +295,7 @@ void FineCoupler2D<T,DESCRIPTOR>::couple()                         _c2f_fneq[this->_coarseSize-2][iPop],                         _c2f_fneq[this->_coarseSize-3][iPop]                       ); -      fineCell[iPop] = lbHelpers<T,DESCRIPTOR>::equilibrium(iPop, rho, u, uSqr) + this->_coarse.getScalingFactor() * fneq; +      fineCell[iPop] = lbHelpers<T,DESCRIPTOR>::equilibrium(iPop, rho, u, uSqr) + this->getScalingFactor() * fneq;      }      fineLattice.set(finePos, fineCell); @@ -294,14 +305,15 @@ void FineCoupler2D<T,DESCRIPTOR>::couple()  template <typename T, template<typename> class DESCRIPTOR>  void computeRestrictedFneq(const SuperLattice2D<T,DESCRIPTOR>& lattice, -                           Vector<int,3> pos, +                           Vector<int,3> latticeR,                             T restrictedFneq[DESCRIPTOR<T>::q])  {    for (int iPop=0; iPop < DESCRIPTOR<T>::q; ++iPop) { -    T fNeq[DESCRIPTOR<T>::q] {}; +    const auto neighbor = latticeR + Vector<int,3>{0, DESCRIPTOR<T>::c[iPop][0], DESCRIPTOR<T>::c[iPop][1]};      Cell<T,DESCRIPTOR> cell; -    const Vector<int,3> neighborPos {pos[0], pos[1] + DESCRIPTOR<T>::c[iPop][0], pos[2] + DESCRIPTOR<T>::c[iPop][1]}; -    lattice.get(neighborPos, cell); +    lattice.get(neighbor, cell); + +    T fNeq[DESCRIPTOR<T>::q] {};      lbHelpers<T,DESCRIPTOR>::computeFneq(cell, fNeq);      for (int jPop=0; jPop < DESCRIPTOR<T>::q; ++jPop) { @@ -352,7 +364,7 @@ void CoarseCoupler2D<T,DESCRIPTOR>::couple()      coarseLattice.get(coarsePos, coarseCell);      for (int iPop=0; iPop < DESCRIPTOR<T>::q; ++iPop) { -      coarseCell[iPop] = fEq[iPop] + this->_coarse.getInvScalingFactor() * fNeq[iPop]; +      coarseCell[iPop] = fEq[iPop] + this->getInvScalingFactor() * fNeq[iPop];      }      coarseLattice.set(coarsePos, coarseCell); diff --git a/src/refinement/grid2D.h b/src/refinement/grid2D.h index cc6bb62..1d15170 100644 --- a/src/refinement/grid2D.h +++ b/src/refinement/grid2D.h @@ -66,9 +66,6 @@ public:    SuperGeometry2D<T>& getSuperGeometry();    SuperLattice2D<T,DESCRIPTOR>& getSuperLattice(); -  T getScalingFactor(); -  T getInvScalingFactor(); -    void collideAndStream();    FineCoupler2D<T,DESCRIPTOR>& addFineCoupling( @@ -76,7 +73,7 @@ public:    CoarseCoupler2D<T,DESCRIPTOR>& addCoarseCoupling(      Grid2D<T,DESCRIPTOR>& fineGrid, Vector<T,2> origin, Vector<T,2> extend); -  Vector<T,2> alignLocationToGrid(Vector<T,2> physR) const; +  Vector<T,2> alignOriginToGrid(Vector<T,2> physR) const;    Vector<T,2> alignExtendToGrid(Vector<T,2> physR) const;    Grid2D<T,DESCRIPTOR>& refine(IndicatorF2D<T>& domainF); diff --git a/src/refinement/grid2D.hh b/src/refinement/grid2D.hh index 59e23ce..99a2563 100644 --- a/src/refinement/grid2D.hh +++ b/src/refinement/grid2D.hh @@ -104,18 +104,6 @@ SuperLattice2D<T,DESCRIPTOR>& Grid2D<T,DESCRIPTOR>::getSuperLattice()  }  template <typename T, template<typename> class DESCRIPTOR> -T Grid2D<T,DESCRIPTOR>::getScalingFactor() -{ -  return 4. - _converter->getLatticeRelaxationFrequency(); -} - -template <typename T, template<typename> class DESCRIPTOR> -T Grid2D<T,DESCRIPTOR>::getInvScalingFactor() -{ -  return 1./getScalingFactor(); -} - -template <typename T, template<typename> class DESCRIPTOR>  void Grid2D<T,DESCRIPTOR>::collideAndStream()  {    for ( auto& fineCoupler : _fineCouplers ) { @@ -181,7 +169,7 @@ Grid2D<T,DESCRIPTOR>& Grid2D<T,DESCRIPTOR>::refine(IndicatorF2D<T>& domainF)  }  template <typename T, template<typename> class DESCRIPTOR> -Vector<T,2> Grid2D<T,DESCRIPTOR>::alignLocationToGrid(Vector<T,2> physR) const +Vector<T,2> Grid2D<T,DESCRIPTOR>::alignOriginToGrid(Vector<T,2> physR) const  {    Vector<int,3> latticeR{};    _cuboids->getLatticeR(physR, latticeR); | 
