diff --git a/src/elasticity/solvers/IterativePressureSolver.cpp b/src/elasticity/solvers/IterativePressureSolver.cpp
index d3299f74e99b72b31a9ada6c92f4b4d95705f1b6..f346bc597cb53137d69d5fbb42063cfb2fb81ed4 100644
--- a/src/elasticity/solvers/IterativePressureSolver.cpp
+++ b/src/elasticity/solvers/IterativePressureSolver.cpp
@@ -21,10 +21,21 @@ bool IterativePressureSolver::Method(IElasticity &assemble, Vector &u) {
           << endl;
 
   Vector uNew(u);
+  Vector uOld(u);
+  Vector deltaU(u);
+
+  bool useExtrapolation = false;
+  Config::Get("UseExtrapolation", useExtrapolation);
 
   Initialize(assemble, uNew);
   while (!iteration.IsFinished()) {
-    bool converged = Step(assemble, uNew);
+    int n = iteration.Step();
+
+    if (n > 1) {
+      uOld = uNew;  // u^{n-1}
+    }
+
+    bool converged = Step(assemble, uNew);  // uNew = u^n
 
     if(converged) {
       //mapping von corse to finer
@@ -42,6 +53,11 @@ bool IterativePressureSolver::Method(IElasticity &assemble, Vector &u) {
         return Method(assemble, u);
       return false;
     }
+    // Extrapolation ab n = 2
+    if (useExtrapolation && n >= 2) {
+      deltaU = uNew - uOld;  // Δu = u^n - u^{n-1}
+      uNew += deltaU;        // Extrapolation: u^n = 2 u^n - u^{n-1}
+    }
   }
   mout.EndBlock();
   return true;