Define some often used mathematical functions. More...
#include <algorithm>#include <numeric>#include <cmath>#include <utility>#include <dune/common/typetraits.hh>#include <dune/common/fvector.hh>#include <dune/common/fmatrix.hh>#include <dune/common/dynmatrix.hh>#include <dune/common/float_cmp.hh>Go to the source code of this file.
Define some often used mathematical functions.
Classes | |
| struct | Dumux::InterpolationPolicy::Linear |
| interpolate linearly between two given values More... | |
| struct | Dumux::InterpolationPolicy::LinearTable |
| interpolate linearly in a piecewise linear function (tabularized function) More... | |
Namespaces | |
| namespace | Dumux |
| Adaption of the non-isothermal two-phase two-component flow model to problems with CO2. | |
| namespace | Dumux::InterpolationPolicy |
| forward declaration of the linear interpolation policy (default) | |
Functions | |
| template<class Scalar > | |
| constexpr Scalar | Dumux::arithmeticMean (Scalar x, Scalar y, Scalar wx=1.0, Scalar wy=1.0) noexcept |
| Calculate the (weighted) arithmetic mean of two scalar values. More... | |
| template<class Scalar > | |
| constexpr Scalar | Dumux::harmonicMean (Scalar x, Scalar y, Scalar wx=1.0, Scalar wy=1.0) noexcept |
| Calculate the (weighted) harmonic mean of two scalar values. More... | |
| template<class Scalar > | |
| Scalar | Dumux::geometricMean (Scalar x, Scalar y) noexcept |
| Calculate the geometric mean of two scalar values. More... | |
| template<class Scalar , int m, int n> | |
| void | Dumux::harmonicMeanMatrix (Dune::FieldMatrix< Scalar, m, n > &K, const Dune::FieldMatrix< Scalar, m, n > &Ki, const Dune::FieldMatrix< Scalar, m, n > &Kj) |
| Calculate the harmonic mean of a fixed-size matrix. More... | |
| template<class Scalar , class SolContainer > | |
| int | Dumux::invertLinearPolynomial (SolContainer &sol, Scalar a, Scalar b) |
| Invert a linear polynomial analytically. More... | |
| template<class Scalar , class SolContainer > | |
| int | Dumux::invertQuadraticPolynomial (SolContainer &sol, Scalar a, Scalar b, Scalar c) |
| Invert a quadratic polynomial analytically. More... | |
| template<class Scalar , class SolContainer > | |
| int | Dumux::invertCubicPolynomial (SolContainer *sol, Scalar a, Scalar b, Scalar c, Scalar d, std::size_t numPostProcessIterations=1) |
| Invert a cubic polynomial analytically. More... | |
| template<class Scalar , int dim> | |
| bool | Dumux::isLarger (const Dune::FieldVector< Scalar, dim > &pos, const Dune::FieldVector< Scalar, dim > &smallerVec) |
| Comparison of two position vectors. More... | |
| template<class Scalar , int dim> | |
| bool | Dumux::isSmaller (const Dune::FieldVector< Scalar, dim > &pos, const Dune::FieldVector< Scalar, dim > &largerVec) |
| Comparison of two position vectors. More... | |
| template<class Scalar , int dim> | |
| bool | Dumux::isBetween (const Dune::FieldVector< Scalar, dim > &pos, const Dune::FieldVector< Scalar, dim > &smallerVec, const Dune::FieldVector< Scalar, dim > &largerVec) |
| Comparison of three position vectors. More... | |
| template<class Policy = InterpolationPolicy::Linear, class Scalar , class ... Parameter> | |
| Scalar | Dumux::interpolate (Scalar ip, Parameter &&... params) |
| a generic function to interpolate given a set of parameters and an interpolation point More... | |
| template<class Scalar > | |
| std::vector< Scalar > | Dumux::linspace (const Scalar begin, const Scalar end, std::size_t samples, bool endPoint=true) |
| Generates linearly spaced vectors. More... | |
| template<class Scalar > | |
| Scalar | Dumux::antoine (Scalar temperature, Scalar A, Scalar B, Scalar C) |
| Evaluates the Antoine equation used to calculate the vapour pressure of various liquids. More... | |
| template<class ValueType > | |
| constexpr int | Dumux::sign (const ValueType &value) noexcept |
| Sign or signum function. More... | |
| template<class Scalar > | |
| Dune::FieldVector< Scalar, 3 > | Dumux::crossProduct (const Dune::FieldVector< Scalar, 3 > &vec1, const Dune::FieldVector< Scalar, 3 > &vec2) |
| Cross product of two vectors in three-dimensional Euclidean space. More... | |
| template<class Scalar > | |
| Scalar | Dumux::crossProduct (const Dune::FieldVector< Scalar, 2 > &vec1, const Dune::FieldVector< Scalar, 2 > &vec2) |
| Cross product of two vectors in two-dimensional Euclidean space retuning scalar. More... | |
| template<class Scalar > | |
| Scalar | Dumux::tripleProduct (const Dune::FieldVector< Scalar, 3 > &vec1, const Dune::FieldVector< Scalar, 3 > &vec2, const Dune::FieldVector< Scalar, 3 > &vec3) |
| Triple product of three vectors in three-dimensional Euclidean space retuning scalar. More... | |
| template<class Scalar , int m, int n> | |
| Dune::FieldMatrix< Scalar, n, m > | Dumux::getTransposed (const Dune::FieldMatrix< Scalar, m, n > &M) |
| Transpose a FieldMatrix. More... | |
| template<class Scalar > | |
| Dune::DynamicMatrix< Scalar > | Dumux::getTransposed (const Dune::DynamicMatrix< Scalar > &M) |
| Transpose a DynamicMatrix. More... | |
| template<class Scalar > | |
| Dune::DynamicMatrix< Scalar > | Dumux::multiplyMatrices (const Dune::DynamicMatrix< Scalar > &M1, const Dune::DynamicMatrix< Scalar > &M2) |
| Multiply two dynamic matrices. More... | |
| template<class Scalar , int rows1, int cols1, int cols2> | |
| Dune::FieldMatrix< Scalar, rows1, cols2 > | Dumux::multiplyMatrices (const Dune::FieldMatrix< Scalar, rows1, cols1 > &M1, const Dune::FieldMatrix< Scalar, cols1, cols2 > &M2) |
| Multiply two field matrices. More... | |
| template<class MatrixType > | |
| Dune::DenseMatrix< MatrixType >::field_type | Dumux::trace (const Dune::DenseMatrix< MatrixType > &M) |
| Trace of a dense matrix. More... | |
| template<class MAT , class V > | |
| Dune::DenseVector< V >::derived_type | Dumux::mv (const Dune::DenseMatrix< MAT > &M, const Dune::DenseVector< V > &v) |
| Returns the result of the projection of a vector v with a Matrix M. More... | |
| template<class FieldScalar , class V > | |
| std::enable_if_t< Dune::IsNumber< FieldScalar >::value, typename Dune::DenseVector< V >::derived_type > | Dumux::mv (const FieldScalar m, const Dune::DenseVector< V > &v) |
| Returns the result of a vector v multiplied by a scalar m. More... | |
| template<class V1 , class MAT , class V2 > | |
| Dune::DenseMatrix< MAT >::value_type | Dumux::vtmv (const Dune::DenseVector< V1 > &v1, const Dune::DenseMatrix< MAT > &M, const Dune::DenseVector< V2 > &v2) |
| Evaluates the scalar product of a vector v2, projected by a matrix M, with a vector v1. More... | |
| template<class V1 , class FieldScalar , class V2 > | |
| std::enable_if_t< Dune::IsNumber< FieldScalar >::value, FieldScalar > | Dumux::vtmv (const Dune::DenseVector< V1 > &v1, const FieldScalar m, const Dune::DenseVector< V2 > &v2) |
| Evaluates the scalar product of a vector v2, scaled by a scalar m, with a vector v1. More... | |
| template<class Scalar > | |
| std::array< Scalar, 2 > | Dumux::linearRegression (const std::vector< Scalar > &x, const std::vector< Scalar > &y) |
| Returns the [intercept, slope] of the regression line fitted to a set of (x, y) data points. More... | |