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

minor changes

parent 299a4789
No related branches found
No related tags found
1 merge request!15Exchange troubled cell
from ufl import *
from dune.common import FieldVector
from dune.grid import reader
from dune.ufl import Space, GridFunction
from dune.fem.function import gridFunction
import numpy
......@@ -128,7 +129,8 @@ def sod(dim=2,gamma=1.4):
#Model.domain=[[0, 0], [1, 0.25], [256, 64]]
#Model.domain=[[0, 0], [1, 0.25], [128, 32]]
Model.domain=[[0, 0], [1, 0.25], [64, 16]]
Model.endTime=0.15
Model.domain=(reader.dgf, "grid2d_nonaffine.dgf")
Model.endTime=0.25
def chorin(gv,t):
gf = gv.function("chorin","chorin.hh", Vl,Vr,gamma,x0,t,name="chorin")
lgf = gf.localFunction() # this seems to fail?
......@@ -137,7 +139,7 @@ def sod(dim=2,gamma=1.4):
lgf.bind(e)
return FieldVector( Model.toCons(lgf(x)) )
# return Model.toCons(gf(e,x))
lf.plot()
# lf.plot()
return lf
Model.exact = lambda gv,t: chorin(gv,t)
Model.name="sod"
......
#import mpi4py.rc
# mpi4py.rc.threaded = False
from dune.fem import parameter
from dune.alugrid import aluCubeGrid
from dune.femdg.testing import run
# from euler import constant as problem
......@@ -16,12 +17,9 @@ parameter.append({"fem.verboserank": 0})
primitive=lambda Model,uh: {"pressure": Model.toPrim(uh)[2]}
parameters = {"fem.ode.odesolver": "EX",
"fem.timeprovider.factor": 0.25,
"fem.ode.order": 3,
"femdg.limiter.admissiblefunctions": 1,
"femdg.limiter.indicator": 1,
"femdg.limiter.tolerance": 1,
"femdg.limiter.epsilon": 1e-8}
"femdg.limiter.tolerance":1 }
#-----------------
# "dgadvectionflux.method": "EULER-HLLC", "EULER-HLL", "LLF"
# default value is 'LLF'
......@@ -32,10 +30,16 @@ parameters = {"fem.ode.odesolver": "EX",
# 0 = only dg solution | 1 = only reconstruction | 2 = both
#-----------------
run(problem(),
startLevel=0, polOrder=2, limiter="default",
primitive=primitive, saveStep=0.16, subsamp=2,
dt=None,threading=False,grid="alucube", space="dgonb",
Model = problem()
Model.domain = aluCubeGrid(Model.domain,dimgrid=2)
run(Model,
startLevel=3, polOrder=4, limiter="default",
primitive=primitive, saveStep=0.05, subsamp=2,
dt=None,threading=False,grid="alucube",
space="dglagrange",
# space=("dglagrange","lobatto"),
# space=("dglagrange","gauss"),
parameters=parameters)
# print(str(parameter))
......@@ -150,7 +150,7 @@ def femDGOperator(Model, space,
advectionFlux="default",
diffusionScheme = "cdg2",
threading=False,
defaultQuadrature=False,
defaultQuadrature=True,
codegen=True,
initialTime=0.0, parameters=None):
......
......@@ -12,6 +12,13 @@ class FemDGStepper:
self.rkScheme.setTimeStepSize(dt)
self.rkScheme.solve(u)
return self.rkScheme.deltaT()
@property
def deltaT(self):
return self.rkScheme.deltaT()
@deltaT.setter
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 = {}
......
......@@ -63,7 +63,10 @@ def run(Model, Stepper=None,
# create discrete function space
try:
if space.lower() == "finitevolume":
if type(space) in [list,tuple]:
space = create.space( space[0], grid, dimRange=dimR, order=polOrder,
pointType=space[1] )
elif space.lower() == "finitevolume":
space = create.space( space, grid, dimRange=dimR)
else:
space = create.space( space, grid, order=polOrder, dimRange=dimR)
......@@ -72,7 +75,10 @@ def run(Model, Stepper=None,
if modifyModel is not None:
Model = modifyModel(Model,space)
operator = femDGOperator(Model, space, limiter=limiter, threading=threading, parameters=parameters )
operator = femDGOperator(Model, space,
limiter=limiter, threading=threading, parameters=parameters,
defaultQuadrature=True
)
stepper = Stepper(operator, cfl)
# create and initialize solution
u_h = space.interpolate(Model.initial, name='u_h')
......
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