// -*- 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 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, see . *
*****************************************************************************/
#ifndef DUMUX_DIFFUSIVEPART_HH
#define DUMUX_DIFFUSIVEPART_HH
#include
/**
* \file
* \brief Base class for defining a diffusive part of the saturation transport equation
*/
namespace Dumux
{
/*!\ingroup FVSaturation2p
* \brief Base class for defining the diffusive part of the saturation transport equation
*
* \tparam TypeTag The problem TypeTag
*/
template
class DiffusivePart
{
private:
typedef typename GET_PROP_TYPE(TypeTag, GridView) GridView;
typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar;
typedef typename GET_PROP_TYPE(TypeTag, Problem) Problem;
enum{dim = GridView::dimension};
typedef typename GridView::Intersection Intersection;
typedef Dune::FieldVector DimVector;
public:
//! For initialization
void initialize()
{}
/*! \brief Returns diffusive term for current element face
*
* \param flux Flux vector (gets the flux from the function)
* \param intersection Intersection of two grid elements/global boundary
* \param satI saturation of current element
* \param satJ saturation of neighbor element
* \param pcGradient gradient of capillary pressure between element I and J
*/
void getFlux(DimVector& flux, const Intersection& intersection, Scalar satI, Scalar satJ, const DimVector& pcGradient) const
{}
/*! \brief Returns diffusive term for current element face
*
* \param flux Flux vector (gets the flux from the function)
* \param intersection Intersection of two grid elements/global boundary
* \param satIntersection saturation at the face between element I and J
* \param satGradient gradient of saturation between element I and J
* \param time time
*/
void getFlux(DimVector& flux, const Intersection& intersection,
const Scalar satIntersection, const DimVector& satGradient, const Scalar time) const
{}
/*! \brief Returns diffusive term for current element face
*
* \param flux Flux vector (gets the flux from the function)
* \param intersection Intersection of two grid elements/global boundary
* \param satIntersection saturation at the face between element I and J
* \param satGradient gradient of saturation between element I and J
* \param time time
* \param satI saturation of current element
* \param satJ saturation of neighbor element
*/
void getFlux(DimVector& flux, const Intersection& intersection,
const Scalar satIntersection, const DimVector& satGradient, const Scalar time,
Scalar satI, Scalar satJ) const
{}
/*! Constructs a DiffusivePart object
*
* \param problem problem class object
*/
DiffusivePart(Problem& problem)
{}
};
}
#endif