From 40376b86cacb142315a5117684ca8655a8c8a668 Mon Sep 17 00:00:00 2001 From: Andreas Lauser <and@poware.org> Date: Fri, 2 Sep 2011 11:54:47 +0000 Subject: [PATCH] richards: make it compile with Scalar != double git-svn-id: svn://svn.iws.uni-stuttgart.de/DUMUX/dumux/trunk@6566 2fb0f335-1f38-0410-981e-8018bf24f1b0 --- .../richards/richardslocalresidual.hh | 5 +++- dumux/boxmodels/richards/richardsmodel.hh | 24 +++++++++---------- .../richards/richardsnewtoncontroller.hh | 2 +- 3 files changed, 17 insertions(+), 14 deletions(-) diff --git a/dumux/boxmodels/richards/richardslocalresidual.hh b/dumux/boxmodels/richards/richardslocalresidual.hh index 9c4ffa718b..833d216572 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 396d49df04..69a935af94 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 f382ae1f5e..497eb62c5d 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 -- GitLab