Skip to content
Snippets Groups Projects
Commit 6f037c1e authored by Dominic Kempf's avatar Dominic Kempf
Browse files

Add the doSomething enums to the LocalOperator class

parent 25315096
No related branches found
No related tags found
No related merge requests found
......@@ -36,9 +36,13 @@ class ClassMember(Generable):
self.member = member
self.access = access
if isinstance(member, str):
from cgen import Line
self.member = Line(member)
# We only consider a Generable or a list thereof as member
from collections import Iterable
assert isinstance(member, Generable) or (isinstance(member, Iterable) and all(isinstance(m, Generable) for m in member))
assert isinstance(self.member, Generable) or (isinstance(self.member, Iterable) and all(isinstance(m, Generable) for m in self.member))
def generate(self):
yield "\n\n"
......
......@@ -40,7 +40,7 @@ def class_member(classtag=None, access=AccessModifier.PRIVATE):
from cgen import Value
from dune.perftool.cgen.clazz import ClassMember
return generator_factory(item_tags=(classtag, "member"), on_store=lambda t, n: ClassMember(Value(t, n), access=access), counted=True)
return generator_factory(item_tags=(classtag, "member"), on_store=lambda m: ClassMember(m, access=access), counted=True)
def constructor_parameter(_type, name, classtag=None, constructortag=None):
......
......@@ -2,7 +2,7 @@ from __future__ import absolute_import
from dune.perftool.options import get_option
from dune.perftool.generation import include_file, base_class, symbol, initializer_list, class_member, constructor_parameter
from dune.perftool.cgen.clazz import BaseClass, ClassMember
from dune.perftool.cgen.clazz import AccessModifier, BaseClass, ClassMember
from pytools import memoize
......@@ -19,7 +19,17 @@ def define_initree(name):
constructor_parameter("const Dune::ParameterTree&", param_name, classtag="operator", constructortag="iniconstructor")
initializer_list(name, [param_name], classtag="operator")
return ("const Dune::ParameterTree&", name)
return "const Dune::ParameterTree& {};".format(name)
@class_member(classtag="operator", access=AccessModifier.PUBLIC)
def enum_pattern(which):
return "enum {{ doPattern{} = true }};".format(which)
@class_member(classtag="operator", access=AccessModifier.PUBLIC)
def enum_alpha(which):
return "enum {{ doAlpha{} = true }};".format(which)
@symbol
......@@ -56,6 +66,8 @@ def measure_specific_details(measure):
if measure == "cell":
base_class('Dune::PDELab::FullVolumePattern', classtag="operator")
numerical_jacobian("Volume")
enum_pattern("Volume")
enum_alpha("Volume")
ret["residual_signature"] = ['template<typename EG, typename LFSU, typename X, typename LFSV, typename R>',
'void alpha_volume(const EG& eg, const LFSU& lfsu, const X& x, const LFSV& lfsv, R& r) const']
......@@ -65,6 +77,8 @@ def measure_specific_details(measure):
if measure == "exterior_facet":
base_class('Dune::PDELab::FullBoundaryPattern', classtag="operator")
numerical_jacobian("Boundary")
enum_pattern("Boundary")
enum_alpha("Boundary")
ret["residual_signature"] = ['template<typename IG, typename LFSV0, typename X, typename LFSV1, typename R>',
'void alpha_boundary(const IG& ig, const LFSV0& lfsv0, const X& x, const LFSV1& lfsv1, R& r) const']
......@@ -74,6 +88,8 @@ def measure_specific_details(measure):
if measure == "interior_facet":
base_class('Dune::PDELab::FullSkeletonPattern', classtag="operator")
numerical_jacobian("Skeleton")
enum_pattern("Skeleton")
enum_alpha("Skeleton")
ret["residual_signature"] = ['template<typename IG, typename LFSV0_S, typename X, typename LFSV1_S, typename LFSV0_N, typename R, typename LFSV1_N>',
'void alpha_skeleton(const IG& ig, const LFSV0_S& lfsv0_s, const X& x_s, const LFSV1_S& lfsv1_s, const LFSV0_N& lfsv0_n, const X& x_n, const LFSV1_N& lfsv1_n, R& r_s, R& r_n) const']
......
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