From db68877d20e73885e15c7e35ff07a28e8e6e6092 Mon Sep 17 00:00:00 2001
From: Markus Wolff <markus.wolff@twt-gmbh.de>
Date: Fri, 17 May 2013 15:22:13 +0000
Subject: [PATCH] After a grid adaptation the pressure solution vector is now
 initialized using the old pressure solution -> the solution vector is used as
 initial guess by iterative linear solvers

git-svn-id: svn://svn.iws.uni-stuttgart.de/DUMUX/dumux/trunk@10705 2fb0f335-1f38-0410-981e-8018bf24f1b0
---
 .../2p/diffusion/fv/fvpressure2padaptive.hh   | 30 ++++++++++++++++++-
 .../fvmpfal2pfaboundpressure2padaptive.hh     | 15 ++++++++++
 2 files changed, 44 insertions(+), 1 deletion(-)

diff --git a/dumux/decoupled/2p/diffusion/fv/fvpressure2padaptive.hh b/dumux/decoupled/2p/diffusion/fv/fvpressure2padaptive.hh
index a8d1fbfbec..9ca270d91d 100644
--- a/dumux/decoupled/2p/diffusion/fv/fvpressure2padaptive.hh
+++ b/dumux/decoupled/2p/diffusion/fv/fvpressure2padaptive.hh
@@ -134,19 +134,47 @@ public:
     {
         int gridSize = problem_.gridView().size(0);
         // update RHS vector, matrix
+        if (problem_.gridAdapt().wasAdapted())
+        {
         this->A_.setSize(gridSize, gridSize); //
         this->f_.resize(gridSize);
         this->pressure().resize(gridSize);
 
+
+        for (int i = 0; i < gridSize; i++)
+        {
+            CellData& cellData = problem_.variables().cellData(i);
+
+            switch (pressureType_)
+            {
+            case pw:
+                this->pressure()[i] = cellData.pressure(wPhaseIdx);
+                break;
+            case pn:
+                this->pressure()[i] = cellData.pressure(nPhaseIdx);
+                break;
+            case pglobal:
+            	this->pressure()[i] = cellData.globalPressure();
+            	break;
+            }
+        }
+
         ParentType::initializeMatrix();
+    }
+
 
         ParentType::update();
 
-        velocity_.calculateVelocity();
+        calculateVelocity();
 
         return;
     }
 
+    void calculateVelocity()
+    {
+    	velocity_.calculateVelocity();
+    }
+
     /*! \brief Adds pressure output to the output file
      *
      *  \copydetails FVPressure2P::addOutputVtkFields(MultiWriter&)
diff --git a/dumux/decoupled/2p/diffusion/fvmpfa/lmethod/fvmpfal2pfaboundpressure2padaptive.hh b/dumux/decoupled/2p/diffusion/fvmpfa/lmethod/fvmpfal2pfaboundpressure2padaptive.hh
index 1e87f12b7f..910fb820ec 100644
--- a/dumux/decoupled/2p/diffusion/fvmpfa/lmethod/fvmpfal2pfaboundpressure2padaptive.hh
+++ b/dumux/decoupled/2p/diffusion/fvmpfa/lmethod/fvmpfal2pfaboundpressure2padaptive.hh
@@ -311,6 +311,21 @@ public:
             this->f_.resize(gridSize);
             this->pressure().resize(gridSize);
 
+            for (int i = 0; i < gridSize; i++)
+            {
+                CellData& cellData = problem_.variables().cellData(i);
+
+                switch (pressureType_)
+                {
+                case pw:
+                    this->pressure()[i] = cellData.pressure(wPhaseIdx);
+                    break;
+                case pn:
+                    this->pressure()[i] = cellData.pressure(nPhaseIdx);
+                    break;
+                }
+            }
+
             initializeMatrix();
             updateInteractionVolumeInfo();
         }
-- 
GitLab