diff --git a/dumux/boxmodels/richards/richardslocalresidual.hh b/dumux/boxmodels/richards/richardslocalresidual.hh index 9c4ffa718be601c7cd7a51cabbbad03f6e30b494..833d2165725975bf1c98959fbd5ed7cc803f8936 100644 --- a/dumux/boxmodels/richards/richardslocalresidual.hh +++ b/dumux/boxmodels/richards/richardslocalresidual.hh @@ -132,7 +132,10 @@ public: Vector tmpVec; fluxVars.intrinsicPermeability().mv(fluxVars.potentialGradW(), tmpVec); - Scalar normalFlux = - (tmpVec*fluxVars.face().normal); + Scalar normalFlux = 0; + for (int i = 0; i < Vector::size; ++ i) + normalFlux += tmpVec[i] + fluxVars.face().normal[i]; + normalFlux *= -1; // data attached to upstream and the downstream vertices // of the current phase diff --git a/dumux/boxmodels/richards/richardsmodel.hh b/dumux/boxmodels/richards/richardsmodel.hh index 396d49df0488d99188385834a88a2b37d9eb2e5a..69a935af94a7486575912c3eb6b0c43ad3f5d941 100644 --- a/dumux/boxmodels/richards/richardsmodel.hh +++ b/dumux/boxmodels/richards/richardsmodel.hh @@ -150,21 +150,21 @@ public: template <class MultiWriter> void addOutputVtkFields(const SolutionVector &sol, MultiWriter &writer) { - typedef Dune::BlockVector<Dune::FieldVector<Scalar, 1> > ScalarField; + typedef Dune::BlockVector<Dune::FieldVector<double, 1> > ScalarField; // create the required scalar fields unsigned numVertices = this->problem_().gridView().size(dim); - ScalarField *pW = writer.allocateManagedBuffer (numVertices); - ScalarField *pN = writer.allocateManagedBuffer (numVertices); - ScalarField *pC = writer.allocateManagedBuffer (numVertices); - ScalarField *Sw = writer.allocateManagedBuffer (numVertices); - ScalarField *Sn = writer.allocateManagedBuffer (numVertices); - ScalarField *rhoW = writer.allocateManagedBuffer (numVertices); - ScalarField *rhoN = writer.allocateManagedBuffer (numVertices); - ScalarField *mobW = writer.allocateManagedBuffer (numVertices); - ScalarField *mobN = writer.allocateManagedBuffer (numVertices); - ScalarField *poro = writer.allocateManagedBuffer (numVertices); - ScalarField *Te = writer.allocateManagedBuffer (numVertices); + ScalarField *pW = writer.allocateManagedBuffer(numVertices); + ScalarField *pN = writer.allocateManagedBuffer(numVertices); + ScalarField *pC = writer.allocateManagedBuffer(numVertices); + ScalarField *Sw = writer.allocateManagedBuffer(numVertices); + ScalarField *Sn = writer.allocateManagedBuffer(numVertices); + ScalarField *rhoW = writer.allocateManagedBuffer(numVertices); + ScalarField *rhoN = writer.allocateManagedBuffer(numVertices); + ScalarField *mobW = writer.allocateManagedBuffer(numVertices); + ScalarField *mobN = writer.allocateManagedBuffer(numVertices); + ScalarField *poro = writer.allocateManagedBuffer(numVertices); + ScalarField *Te = writer.allocateManagedBuffer(numVertices); unsigned numElements = this->gridView_().size(0); ScalarField *rank = diff --git a/dumux/boxmodels/richards/richardsnewtoncontroller.hh b/dumux/boxmodels/richards/richardsnewtoncontroller.hh index f382ae1f5e1e7fad4b8af3528ac2285f39cc4812..497eb62c5d564501f506436b8331cf0501a2d382 100644 --- a/dumux/boxmodels/richards/richardsnewtoncontroller.hh +++ b/dumux/boxmodels/richards/richardsnewtoncontroller.hh @@ -102,7 +102,7 @@ public: Scalar pN = std::max(this->problem_().referencePressure(*eIt, fvElemGeom, i), pW + pcMin); Scalar pcOld = pN - pW; - Scalar SwOld = std::max(0.0, MaterialLaw::Sw(mp, pcOld)); + Scalar SwOld = std::max<Scalar>(0.0, MaterialLaw::Sw(mp, pcOld)); // convert into minimum and maximum wetting phase // pressures