diff options
Diffstat (limited to 'src/boundary')
104 files changed, 23305 insertions, 0 deletions
diff --git a/src/boundary/MakeHeader b/src/boundary/MakeHeader new file mode 100644 index 0000000..e82060a --- /dev/null +++ b/src/boundary/MakeHeader @@ -0,0 +1,51 @@ +# This file is part of the OpenLB library +# +# Copyright (C) 2007 Mathias Krause +# E-mail contact: info@openlb.net +# The most recent release of OpenLB can be downloaded at +# <http://www.openlb.net/> +# +# 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. + + +generic := + +precompiled := boundaryCondition2D \ + boundaryCondition3D \ + boundaryPostProcessors2D \ + boundaryPostProcessors3D \ + extendedFiniteDifferenceBoundary2D \ + extendedFiniteDifferenceBoundary3D \ + inamuroAnalyticalDynamics \ + inamuroBoundary2D \ + inamuroBoundary3D \ + inamuroNewtonRaphsonDynamics \ + momentaOnBoundaries2D \ + momentaOnBoundaries3D \ + offBoundaryCondition2D \ + offBoundaryCondition3D \ + offBoundaryPostProcessors2D \ + offBoundaryPostProcessors3D \ + superBoundaryCondition2D \ + superBoundaryCondition3D \ + superOffBoundaryCondition2D \ + superOffBoundaryCondition3D \ + zouHeBoundary2D \ + zouHeBoundary3D \ + zouHeDynamics \ + advectionDiffusionBoundaryCondition2D \ + advectionDiffusionBoundaryCondition3D + diff --git a/src/boundary/advectionDiffusionBoundaries.h b/src/boundary/advectionDiffusionBoundaries.h new file mode 100644 index 0000000..86ebd5b --- /dev/null +++ b/src/boundary/advectionDiffusionBoundaries.h @@ -0,0 +1,122 @@ +/* This file is part of the OpenLB library + * + * Copyright (C) 2008 Orestis Malaspinas, Andrea Parmigiani + * E-mail contact: info@openlb.net + * The most recent release of OpenLB can be downloaded at + * <http://www.openlb.net/> + * + * 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. +*/ + +#ifndef ADVECTION_DIFFUSION_BOUNDARIES_H +#define ADVECTION_DIFFUSION_BOUNDARIES_H + +#include "dynamics/latticeDescriptors.h" +#include "dynamics/advectionDiffusionDynamics.h" +#include "dynamics/dynamics.h" + +namespace olb { + +//=================================================================================== +//================= AdvectionDiffusionDynamcison Flat Boundaries ========= +//=================================================================================== +template<typename T, typename DESCRIPTOR, typename Dynamics, int direction, int orientation> +class AdvectionDiffusionBoundariesDynamics : public BasicDynamics<T,DESCRIPTOR> { +public: + /// Constructor + AdvectionDiffusionBoundariesDynamics(T omega_, Momenta<T,DESCRIPTOR>& momenta_); + /// Compute equilibrium distribution function + T computeEquilibrium(int iPop, T rho, const T u[DESCRIPTOR::d], T uSqr) const override; + /// Collision step for flat boundary and given rho + /* Working principle: + * 1. Compute rho_current by summing up all known f_i + * 2. Get difference (rho - rho_current) and initialise the unknown f_i + */ + void collide(Cell<T,DESCRIPTOR>& cell, LatticeStatistics<T>& statistics) override; + /// Get local relaxation parameter of the dynamics + T getOmega() const override; + /// Set local relaxation parameter of the dynamics + void setOmega(T omega_) override; +private: + Dynamics boundaryDynamics; +}; + +//=================================================================================== +//================= AdvectionDiffusionDynamcis On Edges ========= +//=================================================================================== +template<typename T, typename DESCRIPTOR, typename Dynamics, int plane, int normal1, int normal2> +class AdvectionDiffusionEdgesDynamics : public BasicDynamics<T,DESCRIPTOR> { +public: + /// Constructor + AdvectionDiffusionEdgesDynamics(T omega_, Momenta<T,DESCRIPTOR>& momenta_); + /// Compute equilibrium distribution function + T computeEquilibrium(int iPop, T rho, const T u[DESCRIPTOR::d], T uSqr) const override; + /// Collision step + void collide(Cell<T,DESCRIPTOR>& cell, LatticeStatistics<T>& statistics) override; + /// Get local relaxation parameter of the dynamics + T getOmega() const override; + /// Set local relaxation parameter of the dynamics + void setOmega(T omega_) override; +private: + Dynamics boundaryDynamics; +}; + + +//=================================================================================== +//================= AdvectionDiffusionDynamics on Corners for 2D Boundaries ========= +//=================================================================================== +template<typename T, typename DESCRIPTOR, typename Dynamics, int xNormal, int yNormal> +class AdvectionDiffusionCornerDynamics2D : public BasicDynamics<T,DESCRIPTOR> { +public: + /// Constructor + AdvectionDiffusionCornerDynamics2D(T omega_, Momenta<T,DESCRIPTOR>& momenta_); + /// Compute equilibrium distribution function + T computeEquilibrium(int iPop, T rho, const T u[DESCRIPTOR::d], T uSqr) const override; + /// Collision step + void collide(Cell<T,DESCRIPTOR>& cell, LatticeStatistics<T>& statistics) override; + /// Get local relaxation parameter of the dynamics + T getOmega() const override; + /// Set local relaxation parameter of the dynamics + void setOmega(T omega_) override; +private: + Dynamics boundaryDynamics; +}; + +//=================================================================================== +//================= AdvectionDiffusionDynamics on Corners for 3D Boundaries ========= +//=================================================================================== +template<typename T, typename DESCRIPTOR, typename Dynamics, int xNormal, int yNormal, int zNormal> +class AdvectionDiffusionCornerDynamics3D : public BasicDynamics<T,DESCRIPTOR> { +public: + /// Constructor + AdvectionDiffusionCornerDynamics3D(T omega_, Momenta<T,DESCRIPTOR>& momenta_); + /// Compute equilibrium distribution function + T computeEquilibrium(int iPop, T rho, const T u[DESCRIPTOR::d], T uSqr) const override; + /// Collision step + void collide(Cell<T,DESCRIPTOR>& cell, LatticeStatistics<T>& statistics) override; + /// Get local relaxation parameter of the dynamics + T getOmega() const override; + /// Set local relaxation parameter of the dynamics + void setOmega(T omega_) override; +private: + Dynamics boundaryDynamics; +}; + + + +} // namespace olb + +#endif diff --git a/src/boundary/advectionDiffusionBoundaries.hh b/src/boundary/advectionDiffusionBoundaries.hh new file mode 100644 index 0000000..7c7f391 --- /dev/null +++ b/src/boundary/advectionDiffusionBoundaries.hh @@ -0,0 +1,313 @@ +/* This file is part of the OpenLB library + * + * Copyright (C) 2008 Orestis Malaspinas, Andrea Parmigiani + * E-mail contact: info@openlb.net + * The most recent release of OpenLB can be downloaded at + * <http://www.openlb.net/> + * + * 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 + * |