Skip to content
Snippets Groups Projects
Commit 5233c4d1 authored by René Heß's avatar René Heß
Browse files

FastDGGridOperator in driver

parent 69ed8b0a
No related branches found
No related tags found
No related merge requests found
......@@ -42,6 +42,7 @@ def get_form_compiler_arguments():
parser.add_argument("--timer", action="store_true", help="measure times")
parser.add_argument("--opcounter", action="store_true", default=False, help="Count operations. Should only be used with yaspgrid. Timer should be set.")
parser.add_argument("--project-basedir", type=str, help="The base (build) directory of the dune-perftool project")
parser.add_argument("--fasfdg", action="store_false", help="Use FastDGGridOperator from PDELab.")
# TODO at some point this help description should be updated
parser.add_argument("--sumfact", action="store_true", help="Use sumfactorization")
parser.add_argument("--vectorize-quad", action="store_true", help="whether to generate code with explicit vectorization")
......
......@@ -346,14 +346,34 @@ def name_fem(expr):
@preamble
def typedef_vectorbackend(name):
def define_blocksize(name, expr):
assert isDG(expr)
assert isQuadrilateral(expr)
dimension = name_dimension()
degree = expr._degree
return "static const int {} = Dune::QkStuff::QkSize<{}, {}>::value;".format(name, degree, dimension)
def name_blocksize(expr):
name = "blocksize"
define_blocksize(name, expr)
return name
@preamble
def typedef_vectorbackend(name, expr):
include_file("dune/pdelab/backend/istl.hh", filetag="driver")
return "using {} = Dune::PDELab::istl::VectorBackend<Dune::PDELab::istl::Blocking::none, 1>;".format(name)
if get_option("fastdg"):
blocksize = name_blocksize(expr)
return "using {} = Dune::PDELab::istl::VectorBackend<Dune::PDELab::istl::Blocking::fixed, {}>;".format(name, blocksize)
else:
return "using {} = Dune::PDELab::istl::VectorBackend<Dune::PDELab::istl::Blocking::none, 1>;".format(name)
def type_vectorbackend():
typedef_vectorbackend("VectorBackend")
return "VectorBackend"
def type_vectorbackend(expr):
name = "VectorBackend"
typedef_vectorbackend(name, expr)
return name
def type_orderingtag():
......@@ -497,7 +517,7 @@ def name_assembled_constraints(expr):
@preamble
def typedef_gfs(element, dirichlet, name):
vb = type_vectorbackend()
vb = type_vectorbackend(element)
from ufl import FiniteElement, MixedElement, VectorElement, EnrichedElement, RestrictedElement, TensorElement
if isinstance(element, FiniteElement):
gv = type_leafview()
......@@ -670,8 +690,12 @@ def typedef_gridoperator(name, formdata):
mb = type_matrixbackend()
df = type_domainfield()
r = type_range()
include_file("dune/pdelab/gridoperator/gridoperator.hh", filetag="driver")
return "using {} = Dune::PDELab::GridOperator<{}, {}, {}, {}, {}, {}, {}, {}, {}>;".format(name, ugfs, vgfs, lop, mb, df, r, r, ucc, vcc)
if get_option("fastdg"):
include_file("dune/pdelab/gridoperator/fastdg.hh", filetag="driver")
return "using {} = Dune::PDELab::FastDGGridOperator<{}, {}, {}, {}, {}, {}, {}, {}, {}>;".format(name, ugfs, vgfs, lop, mb, df, r, r, ucc, vcc)
else:
include_file("dune/pdelab/gridoperator/gridoperator.hh", filetag="driver")
return "using {} = Dune::PDELab::GridOperator<{}, {}, {}, {}, {}, {}, {}, {}, {}>;".format(name, ugfs, vgfs, lop, mb, df, r, r, ucc, vcc)
def type_gridoperator(formdata):
......
......@@ -54,7 +54,7 @@ dune_add_formcompiler_system_test(UFLFILE opcount_poisson_dg.ufl
INIFILE opcount_poisson_dg_symdiff.mini
)
# 3. Poisson Test Case: DG, f + pure dirichlet
# 9. Poisson Test Case: DG quadrilaterals
dune_add_formcompiler_system_test(UFLFILE poisson_dg_quadrilateral.ufl
BASENAME poisson_dg_quadrilateral
INIFILE poisson_dg_quadrilateral.mini
......
__name = poisson_dg_quadrilateral_{__exec_suffix}
__exec_suffix = numdiff, symdiff | expand num
__exec_suffix = {__exec_symdiff}_{__exec_fastdg}
__exec_symdiff = numdiff, symdiff |expand num
__exec_fastdg = fastdg, standarddg | expand fastdg
extension = 1.0 1.0
cells = 32 32
......@@ -12,3 +14,4 @@ extension = vtu
numerical_jacobian = 1, 0 | expand num
exact_solution_expression = g
compare_l2errorsquared = 2e-5
fastdg = 1, 0 | expand fastdg
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