Skip to content
Snippets Groups Projects
Commit f334d2ef authored by Timo Koch's avatar Timo Koch
Browse files

[common] Add BasicVolumeVariables for reuse in simple models

parent 0e94bc03
No related branches found
No related tags found
1 merge request!3380[example] Add simple diffusion eqution including full model
// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
// vi: set et ts=4 sw=4 sts=4:
/*****************************************************************************
* See the file COPYING for full copying permissions. *
* *
* 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 3 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, see <http://www.gnu.org/licenses/>. *
*****************************************************************************/
/*!
* \file
* \ingroup Common
* \brief Basic volume variables for finite volume methods
*/
#ifndef DUMUX_COMMON_BASIC_VOLUME_VARIABLES_HH
#define DUMUX_COMMON_BASIC_VOLUME_VARIABLES_HH
#include <memory>
namespace Dumux {
template <class Traits>
class BasicVolumeVariables
{
using Scalar = typename Traits::PrimaryVariables::value_type;
public:
//! export the type used for the primary variables
using PrimaryVariables = typename Traits::PrimaryVariables;
/*!
* \brief Update all quantities for a given control volume
*/
template<class ElementSolution, class Problem, class Element, class SubControlVolume>
void update(const ElementSolution& elemSol,
const Problem& problem,
const Element& element,
const SubControlVolume& scv)
{
priVars_ = elemSol[scv.indexInElement()];
}
Scalar priVar(const int pvIdx) const
{ return priVars_[pvIdx]; }
const PrimaryVariables& priVars() const
{ return priVars_; }
// for compatibility with more general models
Scalar extrusionFactor() const
{ return 1.0; }
private:
PrimaryVariables priVars_;
};
} // end namespace Dumux
#endif
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment