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