From 94d3e79a8617f88dc0219cfdeedfa3147833719d Mon Sep 17 00:00:00 2001 From: Adrian Kummerlaender Date: Mon, 24 Jun 2019 14:43:36 +0200 Subject: Initialize at openlb-1-3 --- src/particles/twoWayCouplings/dragModels3D.h | 113 +++++++++++++++++++++++++++ 1 file changed, 113 insertions(+) create mode 100644 src/particles/twoWayCouplings/dragModels3D.h (limited to 'src/particles/twoWayCouplings/dragModels3D.h') diff --git a/src/particles/twoWayCouplings/dragModels3D.h b/src/particles/twoWayCouplings/dragModels3D.h new file mode 100644 index 0000000..0f22429 --- /dev/null +++ b/src/particles/twoWayCouplings/dragModels3D.h @@ -0,0 +1,113 @@ +/* Lattice Boltzmann sample, written in C++, using the OpenLB + * library + * + * Copyright (C) 2019 Davide Dapelo + * E-mail contact: info@openlb.net + * The most recent release of OpenLB can be downloaded at + * + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this program; if not, write to the Free + * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +/* Drag force models for Lagrangian two-way coupling -- header file. + */ + +#ifndef LB_DRAG_MODELS_H +#define LB_DRAG_MODELS_H + +#include "functors/lattice/reductionF3D.h" +#include "twoWayHelperFunctionals.h" + +namespace olb { + +/** Abstact base class for DragModelBase. + * Its raison d'etre consists of not being templetized in Lattice. + */ +template class Particle> +class DragModel { +public: + /// Returns the scalar drag coefficient to overload. globicFull = { globic, latticeRoundedP[0, ..., 2] } + virtual T operator() (Particle* p, T latticeVelF[], T latticeVelP[], int globicFull[])=0; +protected: + /// Functional to compute particle Reynolds number + std::shared_ptr > _reP; +}; + +/** Abstact class for all the drag models. + * The virtual method computeDragCoeff returns the drag coefficient. + * Input parameters in attice units. + */ +template class Particle> +class DragModelBase : public DragModel { +public: + /// Constructor + DragModelBase(UnitConverter& converter); + /// Returns the scalar drag coefficient to overload. + //virtual T operator() (Particle* p, T latticeVelF[], T latticeVelP[], int globic)=0; +protected: + UnitConverter& _converter; // reference to a UnitConverter +}; + +/** Class to compute a drag coefficient Cd=1.83 for low-Re Stokes drag. + */ +template class Particle> +class StokesSimplifiedDragModel : public DragModelBase { +public: + /// Constructor + StokesSimplifiedDragModel(UnitConverter& converter); + /// Returns the scalar drag coefficient. globicFull = { globic, latticeRoundedP[0, ..., 2] } + virtual T operator() (Particle* p, T latticeVelF[], T latticeVelP[], int globicFull[]) override; +}; + +/** Class to compute the standard drag coefficient + * as in Morsi and Alexander (1972). + */ +template class Particle> +class MorsiDragModel : public DragModelBase { +public: + /// Constructor + MorsiDragModel(UnitConverter& converter); + /// Returns the scalar drag coefficient. globicFull = { globic, latticeRoundedP[0, ..., 2] } + virtual T operator() (Particle* p, T latticeVelF[], T latticeVelP[], int globicFull[]) override; +}; + +/** Class to compute the drag coefficient for gas bubbles in a liquid fluid phase + * as in Dewsbury et al. (1999). + */ +template class Particle> +class DewsburyDragModel : public DragModelBase { +public: + /// Constructor + DewsburyDragModel(UnitConverter& converter); + /// Returns the scalar drag coefficient. globicFull = { globic, latticeRoundedP[0, ..., 2] } + virtual T operator() (Particle* p, T latticeVelF[], T latticeVelP[], int globicFull[]) override; +}; + +/** Class to compute the drag coefficient for gas bubbles in a liquid fluid phase + * as in Dewsbury et al. (1999), in a power-law fluid. + */ +template class Particle> +class PowerLawDewsburyDragModel : public DewsburyDragModel { +public: + /// Constructor + PowerLawDewsburyDragModel ( + UnitConverter& converter, SuperLattice3D& sLattice ); +}; + + +} + +#endif -- cgit v1.2.3