Skip to content
Snippets Groups Projects
Commit 5139b52a authored by Andreas Dedner's avatar Andreas Dedner
Browse files

return a global minimized dt in steppers

parent 53d17f20
No related branches found
No related tags found
1 merge request!15Exchange troubled cell
Pipeline #29626 failed
......@@ -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)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment