From 995e8411c5fd2517a59705438878d70ba9f1d034 Mon Sep 17 00:00:00 2001
From: Markus Wolff <markus.wolff@twt-gmbh.de>
Date: Tue, 14 Feb 2012 18:30:42 +0000
Subject: [PATCH] fixed bug in 2p mpfa model

   - bug in initialization function



git-svn-id: svn://svn.iws.uni-stuttgart.de/DUMUX/dumux/trunk@7781 2fb0f335-1f38-0410-981e-8018bf24f1b0
---
 dumux/decoupled/2p/diffusion/fvmpfa/fvmpfaopressure2p.hh  | 3 ++-
 dumux/decoupled/2p/diffusion/mimetic/croperator.hh        | 2 +-
 dumux/decoupled/2p/diffusion/mimetic/mimeticpressure2p.hh | 6 +-----
 dumux/decoupled/common/fv/fvpressure.hh                   | 2 +-
 4 files changed, 5 insertions(+), 8 deletions(-)

diff --git a/dumux/decoupled/2p/diffusion/fvmpfa/fvmpfaopressure2p.hh b/dumux/decoupled/2p/diffusion/fvmpfa/fvmpfaopressure2p.hh
index 18fe395c11..955707d348 100644
--- a/dumux/decoupled/2p/diffusion/fvmpfa/fvmpfaopressure2p.hh
+++ b/dumux/decoupled/2p/diffusion/fvmpfa/fvmpfaopressure2p.hh
@@ -115,6 +115,7 @@ class FVMPFAOPressure2P: public FVPressure<TypeTag>
     typedef Dune::FieldVector<Scalar, dim> FieldVector;
 
     //initializes the matrix to store the system of equations
+    friend class FVPressure<TypeTag>;
     void initializeMatrix();
 
     //function which assembles the system of equations to be solved
@@ -139,7 +140,7 @@ public:
 
     void initialize(bool solveTwice = true)
     {
-        initializeMatrix();
+        ParentType::initialize();
         updateMaterialLaws();
 
         assemble();
diff --git a/dumux/decoupled/2p/diffusion/mimetic/croperator.hh b/dumux/decoupled/2p/diffusion/mimetic/croperator.hh
index 3a590974c7..e643bc43c7 100644
--- a/dumux/decoupled/2p/diffusion/mimetic/croperator.hh
+++ b/dumux/decoupled/2p/diffusion/mimetic/croperator.hh
@@ -149,7 +149,7 @@ public:
         faceMapper_.update();
         allMapper_.update();
 
-        A_.setSize(size(), size());
+        A_.setSize(size(), size(),  nnz(is_));
 
         assert(nnz(is_) != 0);
 
diff --git a/dumux/decoupled/2p/diffusion/mimetic/mimeticpressure2p.hh b/dumux/decoupled/2p/diffusion/mimetic/mimeticpressure2p.hh
index e0e462a0f1..06f344e6ca 100644
--- a/dumux/decoupled/2p/diffusion/mimetic/mimeticpressure2p.hh
+++ b/dumux/decoupled/2p/diffusion/mimetic/mimeticpressure2p.hh
@@ -314,13 +314,9 @@ void MimeticPressure2P<TypeTag>::updateMaterialLaws()
         //determine phase saturations from primary saturation variable
 
         Scalar satW = cellData.saturation(wPhaseIdx);
-        Scalar satNW = cellData.saturation(nPhaseIdx);
-
         Scalar pc = MaterialLaw::pC(problem_.spatialParameters().materialLawParams(*eIt), satW);
 
-            cellData.setSaturation(wPhaseIdx, satW);
-            cellData.setSaturation(nPhaseIdx, satNW);
-            cellData.setCapillaryPressure(pc);
+        cellData.setCapillaryPressure(pc);
 
         // initialize mobilities
         Scalar mobilityW = MaterialLaw::krw(problem_.spatialParameters().materialLawParams(*eIt), satW) / viscosity_[wPhaseIdx];
diff --git a/dumux/decoupled/common/fv/fvpressure.hh b/dumux/decoupled/common/fv/fvpressure.hh
index 3e1252ba88..d7adc8ba3d 100644
--- a/dumux/decoupled/common/fv/fvpressure.hh
+++ b/dumux/decoupled/common/fv/fvpressure.hh
@@ -174,7 +174,7 @@ public:
         A_.setSize(size_, size_);
         f_.resize(size_);
         pressure_.resize(size_);
-        initializeMatrix();// initialize sparse matrix
+        asImp_().initializeMatrix();// initialize sparse matrix
         pressure_ = 0;
     }
 
-- 
GitLab