From 5139b52a9d0c1153f9bbc1607f2c5ff1b47f894e Mon Sep 17 00:00:00 2001
From: dedner <a.s.dedner@warwick.ac.uk>
Date: Thu, 17 Sep 2020 17:41:21 +0100
Subject: [PATCH] return a global minimized dt in steppers

---
 python/dune/femdg/rk.py | 21 ++++++++++-----------
 1 file changed, 10 insertions(+), 11 deletions(-)

diff --git a/python/dune/femdg/rk.py b/python/dune/femdg/rk.py
index 1ec7972b..a359f582 100644
--- a/python/dune/femdg/rk.py
+++ b/python/dune/femdg/rk.py
@@ -19,11 +19,10 @@ class FemDGStepper:
     def deltaT(self,dt):
         self.rkScheme.setTimeStepSize(dt)
 
-def femdgStepper(*,order=None,rkType=None,operator=None,cfl=None,parameters=True):
-    if parameters is True:
-        parameters = {}
-    elif parameters is False:
-        parameters = None
+def femdgStepper(*,order=None,rkType=None,operator=None,cfl=0.45,parameters=True):
+    if parameters is True: parameters = {}
+    elif parameters is False: parameters = None
+    if rkType == "default": rkType = None
     def _femdgStepper(op,cfl=None):
         if parameters is not None:
             if not "fem.timeprovider.factor" in parameters:
@@ -188,7 +187,7 @@ class RungeKutta:
             u.axpy(dt*self.b[i],self.k[i])
         self.op.applyLimiter( u )
         self.op.stepTime(0,0)
-        return dt
+        return self.op.space.grid.comm.min(dt)
 class Heun(RungeKutta):
     def __init__(self, op, cfl=None):
         A = [[0,0],
@@ -255,7 +254,7 @@ class ImplSSP2: # with stages=1 same as above - increasing stages does not impro
         u.axpy(dt*self.musps, self.tmp)
         self.op.applyLimiter( u )
         self.op.stepTime(0,0)
-        return dt
+        return self.op.space.grid.comm.min(dt)
 class ExplSSP2:
     def __init__(self,stages,op,cfl=None):
         self.op     = op
@@ -289,7 +288,7 @@ class ExplSSP2:
         u.axpy(1/self.stages, self.q2)
         self.op.applyLimiter( u )
         self.op.stepTime(0,0)
-        return dt
+        return self.op.space.grid.comm.min(dt)
 def ssp2(stages,explicit=True):
     if explicit:
         return lambda op,cfl=None: ExplSSP2(stages,op,cfl)
@@ -349,7 +348,7 @@ class ExplSSP3:
             i += 1
         self.op.applyLimiter( u )
         self.op.stepTime(0,0)
-        return dt
+        return self.op.space.grid.comm.min(dt)
 class ImplSSP3:
     def __init__(self,stages,op,cfl=None):
         self.stages = stages
@@ -401,7 +400,7 @@ class ImplSSP3:
         u.axpy(dt*self.musps, self.tmp)
         self.op.applyLimiter( u )
         self.op.stepTime(0,0)
-        return dt
+        return self.op.space.grid.comm.min(dt)
 def ssp3(stages,explicit=True):
     if explicit:
         return lambda op,cfl=None: ExplSSP3(stages,op,cfl)
@@ -456,4 +455,4 @@ class ExplSSP4_10:
         u.axpy(dt/10, self.tmp)
         self.op.applyLimiter( u )
         self.op.stepTime(0,0)
-        return dt
+        return self.op.space.grid.comm.min(dt)
-- 
GitLab