From f586cf5107d210b8f06b8d2dbbafb5cfa2fd5498 Mon Sep 17 00:00:00 2001 From: kanschat Date: Wed, 23 Jan 2008 23:28:31 +0000 Subject: [PATCH] use viscosity in StokesCosine git-svn-id: https://svn.dealii.org/trunk@15653 0785d39b-7218-0410-832d-ea1e28bc413d --- deal.II/base/include/base/flow_function.h | 23 +++++++++--- deal.II/base/source/flow_function.cc | 43 ++++++++++++++++------- 2 files changed, 49 insertions(+), 17 deletions(-) diff --git a/deal.II/base/include/base/flow_function.h b/deal.II/base/include/base/flow_function.h index 794c1f9dbd..fea9f485f8 100644 --- a/deal.II/base/include/base/flow_function.h +++ b/deal.II/base/include/base/flow_function.h @@ -2,7 +2,7 @@ // $Id$ // Version: $Name$ // -// Copyright (C) 2007 by the deal.II authors +// Copyright (C) 2007, 2008 by the deal.II authors // // This file is subject to QPL and may not be distributed // without copyright and license information. Please refer @@ -91,6 +91,12 @@ namespace Functions * is indexed by solution * component, the inner by * quadrature point. + * + * @warning This is not the + * true Laplacian, but the + * force term to be used as + * right hand side in Stokes' + * equations */ virtual void vector_laplacians (const std::vector > &points, std::vector > &values) const = 0; @@ -189,9 +195,15 @@ namespace Functions /** * Constructor setting the * Reynolds number required for - * pressure computation. + * pressure computation and + * scaling of the right hand side. */ - StokesCosine (const double Reynolds); + StokesCosine (const double viscosity = 1., const double reaction = 0.); + /** + * Change the viscosity and the + * reaction parameter. + */ + void set_parameters (const double viscosity, const double reaction); virtual ~StokesCosine(); virtual void vector_values (const std::vector >& points, @@ -202,7 +214,10 @@ namespace Functions std::vector > &values) const; private: - const double Reynolds; + /// The viscosity + double viscosity; + /// The reaction parameter + double reaction; }; diff --git a/deal.II/base/source/flow_function.cc b/deal.II/base/source/flow_function.cc index 629e98f90d..6b80c3b56e 100644 --- a/deal.II/base/source/flow_function.cc +++ b/deal.II/base/source/flow_function.cc @@ -2,7 +2,7 @@ // $Id$ // Version: $Name$ // -// Copyright (C) 2007 by the deal.II authors +// Copyright (C) 2007, 2008 by the deal.II authors // // This file is subject to QPL and may not be distributed // without copyright and license information. Please refer @@ -214,7 +214,7 @@ namespace Functions for (unsigned int d=1;dmean_pressure; + values[dim][k] = -2*(dim-1)*stretch*stretch*p(0)/Reynolds + this->mean_pressure; } } @@ -269,9 +269,9 @@ namespace Functions //----------------------------------------------------------------------// template - StokesCosine::StokesCosine(const double Re) + StokesCosine::StokesCosine(const double nu, const double r) : - Reynolds(Re) + viscosity(nu), reaction(r) {} @@ -280,6 +280,15 @@ namespace Functions {} + template + void + StokesCosine::set_parameters(const double nu, const double r) + { + viscosity = nu; + reaction = r; + } + + template void StokesCosine::vector_values ( const std::vector >& points, @@ -305,7 +314,7 @@ namespace Functions { values[0][k] = cx*cx*cy*sy; values[1][k] = -cx*sx*cy*cy; - values[2][k] = cx*sx*cy*sy; + values[2][k] = cx*sx*cy*sy + this->mean_pressure; } else if (dim==3) { @@ -316,7 +325,7 @@ namespace Functions values[0][k] = cx*cx*cy*sy*cz*sz; values[1][k] = cx*sx*cy*cy*cz*sz; values[2][k] = -2.*cx*sx*cy*sy*cz*cz; - values[3][k] = cx*sx*cy*sy*cz*sz; + values[3][k] = cx*sx*cy*sy*cz*sz + this->mean_pressure; } else { @@ -401,6 +410,14 @@ namespace Functions Assert(values.size() == dim+1, ExcDimensionMismatch(values.size(), dim+1)); for (unsigned int d=0;dmean_pressure; } else { @@ -644,7 +661,7 @@ namespace Functions values[0][k] = 1. - elx * cos(y); values[1][k] = .5 / numbers::PI * lbda * elx * sin(y); - values[2][k] = -.5 * elx * elx + p_average - this->mean_pressure; + values[2][k] = -.5 * elx * elx + p_average + this->mean_pressure; } } -- 2.39.5