From f82a4041be5206868514e797db0466c065615aad Mon Sep 17 00:00:00 2001
From: Robert K <robertk@posteo.org>
Date: Mon, 16 Dec 2019 15:03:21 +0100
Subject: [PATCH] Cleanup, make shock_tube_fast work again.

---
 dune/fem-dg/solver/dg.hh        |  6 ++++++
 pydemo/euler/shock_tube_fast.py | 16 ++++++++++++----
 pydemo/rk/scheme.py             |  4 ++--
 python/dune/femdg/_operators.py |  6 +++---
 4 files changed, 23 insertions(+), 9 deletions(-)

diff --git a/dune/fem-dg/solver/dg.hh b/dune/fem-dg/solver/dg.hh
index f815bab4..24c90ab8 100644
--- a/dune/fem-dg/solver/dg.hh
+++ b/dune/fem-dg/solver/dg.hh
@@ -199,7 +199,13 @@ namespace Fem
       }
     }
 
+    //! deprecated method
     void solve( DestinationType& dest ) const
+    {
+      step( dest );
+    }
+
+    void step( DestinationType& dest ) const
     {
       // check if initialization needs to be done
       checkInitialize( dest );
diff --git a/pydemo/euler/shock_tube_fast.py b/pydemo/euler/shock_tube_fast.py
index 16981c21..33524cce 100644
--- a/pydemo/euler/shock_tube_fast.py
+++ b/pydemo/euler/shock_tube_fast.py
@@ -4,7 +4,7 @@ from dune.fem import parameter
 import dune.create as create
 from dune.models.elliptic.formfiles import loadModels
 from llf import NumFlux
-from dune.femdg import createFemDGSolver
+from dune.femdg import femDGSolver
 from ufl import *
 
 gamma = 1.4
@@ -13,11 +13,19 @@ dim = 2
 from euler import sod as problem
 #from euler import radialSod3 as problem
 
-Model, initial, x0,x1,N, endTime, name = problem(dim,gamma)
+Model, initial, x0,x1,N, endTime, name, exact = problem(dim,gamma)
 
 parameter.append({"fem.verboserank": -1})
 parameter.append("parameter")
 
+parameters = {"fem.ode.odesolver": "EX",
+              "fem.timeprovider.factor": 0.45,
+              "dgadvectionflux.method": "EULER-HLLC",
+              "femdg.limiter.limiteps": 1,
+              "femdg.limiter.admissiblefunctions": 1,
+              "femdg.limiter.tolerance": 1}
+
+
 grid = structuredGrid(x0,x1,N)
 # grid = create.grid("ALUSimplex", cartesianDomain(x0,x1,N))
 dimR     = grid.dimension + 2
@@ -82,7 +90,7 @@ def useODESolver(polOrder=2, limiter='default'):
         space = create.space("dgonb", grid, order=polOrder, dimRange=dimR)
     u_h = initialize(space)
     # rho, v, p = Model.toPrim(u_h)
-    operator = createFemDGSolver( Model, space, limiter=limiter )
+    operator = femDGSolver( Model, space, limiter=limiter, parameters=parameters )
     # operator.setTimeStepSize(dt)
 
     operator.applyLimiter( u_h );
@@ -96,7 +104,7 @@ def useODESolver(polOrder=2, limiter='default'):
     start = time.time()
     tcount = 0
     while t < endTime:
-        operator.solve(target=u_h)
+        operator.step(target=u_h)
         # operator.applyLimiter( u_h );
         dt = operator.deltaT()
         t += dt
diff --git a/pydemo/rk/scheme.py b/pydemo/rk/scheme.py
index 5e630d5d..c7e76f1e 100644
--- a/pydemo/rk/scheme.py
+++ b/pydemo/rk/scheme.py
@@ -41,7 +41,7 @@ def run(Model, initial, x0,x1,N, endTime, name, exact,
     # create solution scheme, i.e. operator and ODE solver
     operator = femDGOperator( Model, space, limiter=limiter, threading=True, parameters=parameters )
     explOp = operator.explicitOperator()
-    #rksolver = createRungeKuttaSolver( space, operator )
+    rksolver = createRungeKuttaSolver( space, operator )
 
     # limit initial data if necessary
     operator.applyLimiter( u_h );
@@ -77,7 +77,7 @@ def run(Model, initial, x0,x1,N, endTime, name, exact,
         if dt is not None:
             operator.setTimeStepSize(dt)
         # solver time step
-        #rksolver.step(target=u_h)
+        rksolver.step(target=u_h)
         #operator.step(target=u_h)
         # obtain new time step size
         dt = operator.deltaT()
diff --git a/python/dune/femdg/_operators.py b/python/dune/femdg/_operators.py
index 41162115..1fe76b2a 100644
--- a/python/dune/femdg/_operators.py
+++ b/python/dune/femdg/_operators.py
@@ -434,10 +434,10 @@ def femDGSolver(Model, space,
     deltaT = Method('deltaT', '&DuneType::deltaT')
     # add method to set a fixed time step
     setTimeStepSize = Method('setTimeStepSize', '&DuneType::setTimeStepSize')
-    # add method to solve (not requiring u_h_n)
-    solve = Method('step', '&DuneType::solve', extra=['"target"_a'])
+    # add method to solve one step (not requiring u_h_n)
+    step = Method('step', '&DuneType::step', extra=['"target"_a'])
 
-    return load(includes, typeName, constructor, setTimeStepSize, deltaT, applyLimiter, solve,
+    return load(includes, typeName, constructor, setTimeStepSize, deltaT, applyLimiter, step,
               preamble=writer.writer.getvalue()).\
                     Operator( space, advModel, diffModel, parameters=parameters )
 
-- 
GitLab