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

Generate using from python code

parent 70535460
No related branches found
No related tags found
No related merge requests found
......@@ -192,7 +192,7 @@ def typedef_grid(name):
include_file("dune/alugrid/grid.hh", filetag="driver")
else:
raise ValueError("Cant match your geometry with a DUNE grid. Please report bug.")
return "typedef {} {};".format(gridt, name)
return "using {} = {};".format(name, gridt)
@symbol
......@@ -219,7 +219,7 @@ def name_grid():
@preamble
def typedef_leafview(name):
grid = type_grid()
return "typedef {}::LeafGridView {};".format(grid, name)
return "using {} = {}::LeafGridView;".format(name, grid)
@symbol
......@@ -245,7 +245,7 @@ def name_leafview():
def typedef_vtkwriter(name):
include_file("dune/grid/io/file/vtk/subsamplingvtkwriter.hh", filetag="driver")
gv = type_leafview()
return "typedef Dune::SubsamplingVTKWriter<{}> {};".format(gv, name)
return "using {} = Dune::SubsamplingVTKWriter<{}>;".format(name, gv)
@symbol
......@@ -283,7 +283,7 @@ def name_vtkwriter():
@preamble
def typedef_domainfield(name):
gridt = type_grid()
return "typedef {}::ctype {};".format(gridt, name)
return "using {} = {}::ctype;".format(name, gridt)
@symbol
......@@ -294,7 +294,7 @@ def type_domainfield():
@preamble
def typedef_range(name):
return "typedef double {};".format(name)
return "using {} = double;".format(name)
@symbol
......@@ -311,18 +311,18 @@ def typedef_fem(expr, name):
dim = name_dimension()
if isPk(expr):
include_file("dune/pdelab/finiteelementmap/pkfem.hh", filetag="driver")
return "typedef Dune::PDELab::PkLocalFiniteElementMap<{}, {}, {}, {}> {};".format(gv, df, r, expr._degree, name)
return "using {} = Dune::PDELab::PkLocalFiniteElementMap<{}, {}, {}, {}>;".format(name, gv, df, r, expr._degree)
if isQk(expr):
include_file("dune/pdelab/finiteelementmap/qkfem.hh", filetag="driver")
return "typedef Dune::PDELab::QkLocalFiniteElementMap<{}, {}, {}, {}> {};".format(gv, df, r, expr._degree, name)
return "using {} = Dune::PDELab::QkLocalFiniteElementMap<{}, {}, {}, {}>;".format(name, gv, df, r, expr._degree)
if isDG(expr):
if isQuadrilateral(expr):
include_file("dune/pdelab/finiteelementmap/qkdg.hh", filetag="driver")
# TODO allow switching the basis here!
return "typedef Dune::PDELab::QkDGLocalFiniteElementMap<{}, {}, {}, {}> {};".format(df, r, expr._degree, dim, name)
return "using {} = Dune::PDELab::QkDGLocalFiniteElementMap<{}, {}, {}, {}>;".format(name, df, r, expr._degree, dim)
if isSimplical(expr):
include_file("dune/pdelab/finiteelementmap/opbfem.hh", filetag="driver")
return "typedef Dune::PDELab::OPBLocalFiniteElementMap<{}, {}, {}, {}, Dune::GeometryType::simplex> {};".format(df, r, expr._degree, dim, name)
return "using {} = Dune::PDELab::OPBLocalFiniteElementMap<{}, {}, {}, {}, Dune::GeometryType::simplex>;".format(name, df, r, expr._degree, dim)
raise NotImplementedError("Geometry type not known in code generation")
raise NotImplementedError("FEM not implemented in dune-perftool")
......@@ -355,7 +355,7 @@ def name_fem(expr):
@preamble
def typedef_vectorbackend(name):
include_file("dune/pdelab/backend/istl.hh", filetag="driver")
return "typedef Dune::PDELab::istl::VectorBackend<Dune::PDELab::istl::Blocking::none, 1> {};".format(name)
return "using {} = Dune::PDELab::istl::VectorBackend<Dune::PDELab::istl::Blocking::none, 1>;".format(name)
@symbol
......@@ -372,12 +372,12 @@ def type_orderingtag():
@preamble
def typedef_dirichlet_constraintsassembler(name):
include_file("dune/pdelab/constraints/conforming.hh", filetag="driver")
return "typedef Dune::PDELab::ConformingDirichletConstraints {};".format(name)
return "using {} = Dune::PDELab::ConformingDirichletConstraints;".format(name)
@preamble
def typedef_no_constraintsassembler(name):
return "typedef Dune::PDELab::NoConstraints {};".format(name)
return "using {} = Dune::PDELab::NoConstraints;".format(name)
@symbol
......@@ -394,7 +394,7 @@ def type_constraintsassembler(dirichlet):
def typedef_constraintscontainer(element, name):
gfs = type_gfs(element)
r = type_range()
return "typedef {}::ConstraintsContainer<{}>::Type {};".format(gfs, r, name)
return "using {} = {}::ConstraintsContainer<{}>::Type;".format(name, gfs, r)
@symbol
......@@ -516,7 +516,7 @@ def typedef_gfs(element, dirichlet, name):
gv = type_leafview()
fem = type_fem(element)
cass = type_constraintsassembler(dirichlet)
return "typedef Dune::PDELab::GridFunctionSpace<{}, {}, {}, {}> {};".format(gv, fem, cass, vb, name)
return "using {} = Dune::PDELab::GridFunctionSpace<{}, {}, {}, {}>;".format(name, gv, fem, cass, vb)
if isinstance(element, (VectorElement, TensorElement)):
include_file("dune/pdelab/gridfunctionspace/vectorgridfunctionspace.hh", filetag="driver")
gv = type_leafview()
......@@ -524,11 +524,11 @@ def typedef_gfs(element, dirichlet, name):
# TODO implement symmetry here
dim = element.num_sub_elements()
cass = type_constraintsassembler(dirichlet)
return "typedef Dune::PDELab::VectorGridFunctionSpace<{}, {}, {}, {}, {}, {}> {};".format(gv, fem, dim, vb, vb, cass, name)
return "using {} = Dune::PDELab::VectorGridFunctionSpace<{}, {}, {}, {}, {}, {}>;".format(name, gv, fem, dim, vb, vb, cass)
if isinstance(element, MixedElement):
ot = type_orderingtag()
args = ", ".join(type_gfs(e) for e in element.sub_elements())
return "typedef Dune::PDELab::CompositeGridFunctionSpace<{}, {}, {}> {};".format(vb, ot, args, name)
return "using {} = Dune::PDELab::CompositeGridFunctionSpace<{}, {}, {}>;".format(name, vb, ot, args)
if isinstance(element, EnrichedElement):
raise NotImplementedError("Dune does not support enriched elements!")
if isinstance(element, RestrictedElement):
......@@ -591,7 +591,7 @@ def name_dofestimate():
@preamble
def typedef_matrixbackend(name):
include_file("dune/pdelab/backend/istl.hh", filetag="driver")
return "typedef Dune::PDELab::istl::BCRSMatrixBackend<> {};".format(name)
return "using {} = Dune::PDELab::istl::BCRSMatrixBackend<>;".format(name)
@symbol
......@@ -639,7 +639,7 @@ def name_parameters(formdata):
def typedef_localoperator(name, formdata):
# No Parameter class here, yet
# params = type_parameters()
# return "typedef LocalOperator<{}> {};".format(params, name)
# return "using {} = LocalOperator<{}>;".format(name, params)
ugfs = type_gfs(_driver_data['form'].coefficients()[0].ufl_element())
vgfs = type_gfs(_driver_data['form'].arguments()[0].ufl_element())
from dune.perftool.generation import get_global_context_value
......@@ -684,7 +684,7 @@ def typedef_gridoperator(name, formdata):
df = type_domainfield()
r = type_range()
include_file("dune/pdelab/gridoperator/gridoperator.hh", filetag="driver")
return "typedef Dune::PDELab::GridOperator<{}, {}, {}, {}, {}, {}, {}, {}, {}> {};".format(ugfs, vgfs, lop, mb, df, r, r, ucc, vcc, name)
return "using {} = Dune::PDELab::GridOperator<{}, {}, {}, {}, {}, {}, {}, {}, {}>;".format(name, ugfs, vgfs, lop, mb, df, r, r, ucc, vcc)
@symbol
......@@ -719,7 +719,7 @@ def name_gridoperator(formdata):
@preamble
def typedef_vector(name, formdata):
go_type = type_gridoperator(formdata)
return "typedef {}::Traits::Domain {};".format(go_type, name)
return "using {} = {}::Traits::Domain;".format(name, go_type)
@symbol
......@@ -885,7 +885,7 @@ def name_vector_from_solution_expression():
@preamble
def typedef_linearsolver(name):
include_file("dune/pdelab/backend/istl.hh", filetag="driver")
return "typedef Dune::PDELab::ISTLBackend_SEQ_UMFPack {};".format(name)
return "using {} = Dune::PDELab::ISTLBackend_SEQ_UMFPack;".format(name)
@symbol
......@@ -924,7 +924,7 @@ def typedef_stationarylinearproblemsolver(name):
gotype = type_gridoperator(_driver_data['formdata'])
lstype = type_linearsolver()
xtype = type_vector(_driver_data['formdata'])
return "typedef Dune::PDELab::StationaryLinearProblemSolver<{}, {}, {}> {};".format(gotype, lstype, xtype, name)
return "using {} = Dune::PDELab::StationaryLinearProblemSolver<{}, {}, {}>;".format(name, gotype, lstype, xtype)
@symbol
......@@ -955,7 +955,7 @@ def typedef_stationarynonlinearproblemsolver(name, go_type):
include_file("dune/pdelab/newton/newton.hh", filetag="driver")
ls_type = type_linearsolver()
x_type = type_vector(_driver_data['formdata'])
return "typedef Dune::PDELab::Newton<{}, {}, {}> {};".format(go_type, ls_type, x_type, name)
return "using {} = Dune::PDELab::Newton<{}, {}, {}>;".format(name, go_type, ls_type, x_type)
@symbol
......@@ -983,9 +983,9 @@ def typedef_timesteppingmethod(name):
r_type = type_range()
explicit = get_option('explicit_time_stepping')
if explicit:
return "typedef Dune::PDELab::ExplicitEulerParameter<{}> {};".format(r_type, name)
return "using {} = Dune::PDELab::ExplicitEulerParameter<{}>;".format(name, r_type)
else:
return "typedef Dune::PDELab::OneStepThetaParameter<{}> {};".format(r_type, name)
return "using {} = Dune::PDELab::OneStepThetaParameter<{}>;".format(name, r_type)
@symbol
......@@ -1017,9 +1017,9 @@ def typedef_instationarygridoperator(name):
mass_go_type = type_gridoperator(_driver_data['mass_formdata'])
explicit = get_option('explicit_time_stepping')
if explicit:
return "typedef Dune::PDELab::OneStepGridOperator<{},{},false> {};".format(go_type, mass_go_type, name)
return "using {} = Dune::PDELab::OneStepGridOperator<{},{},false>;".format(name, go_type, mass_go_type)
else:
return "typedef Dune::PDELab::OneStepGridOperator<{},{}> {};".format(go_type, mass_go_type, name)
return "using {} = Dune::PDELab::OneStepGridOperator<{},{}>;".format(name, go_type, mass_go_type)
@symbol
......@@ -1048,7 +1048,7 @@ def typedef_onestepmethod(name):
igo_type = type_instationarygridoperator()
snp_type = type_stationarynonlinearproblemssolver(igo_type)
vector_type = type_vector(_driver_data['formdata'])
return "typedef Dune::PDELab::OneStepMethod<{}, {}, {}, {}, {}> {};".format(r_type, igo_type, snp_type, vector_type, vector_type, name)
return "using {} = Dune::PDELab::OneStepMethod<{}, {}, {}, {}, {}>;".format(name, r_type, igo_type, snp_type, vector_type, vector_type)
@symbol
......@@ -1079,7 +1079,7 @@ def typedef_explicitonestepmethod(name):
igo_type = type_instationarygridoperator()
ls_type = type_linearsolver()
vector_type = type_vector(_driver_data['formdata'])
return "typedef Dune::PDELab::ExplicitOneStepMethod<{}, {}, {}, {}> {};".format(r_type, igo_type, ls_type, vector_type, name)
return "using {} = Dune::PDELab::ExplicitOneStepMethod<{}, {}, {}, {}>;".format(name, r_type, igo_type, ls_type, vector_type)
@symbol
......@@ -1213,7 +1213,7 @@ def type_discrete_grid_function(gfs):
@preamble
def define_discrete_grid_function(gfs, vector_name, dgf_name):
dgf_type = type_discrete_grid_function(gfs)
return ["typedef Dune::PDELab::DiscreteGridFunction<decltype({}),decltype({})> {};".format(gfs, vector_name, dgf_type),
return ["using {} = Dune::PDELab::DiscreteGridFunction<decltype({}),decltype({})>;".format(dgf_type, gfs, vector_name),
"{} {}({},{});".format(dgf_type, dgf_name, gfs, vector_name)]
......@@ -1260,7 +1260,7 @@ def typedef_difference_squared_adapter(name, tree_path):
vector = name_vector(formdata)
dgf = name_discrete_grid_function(gfs, vector)
return 'typedef DifferenceSquaredAdapter<decltype({}), decltype({})> {};'.format(solution_function, dgf, name)
return 'using {} = DifferenceSquaredAdapter<decltype({}), decltype({})>;'.format(name, solution_function, dgf)
@symbol
......@@ -1386,7 +1386,7 @@ def print_matrix():
t_v = type_vector(formdata)
return ["if ({}.get<bool>(\"printmatrix\", false)) {{".format(ini),
" typedef typename {}::Traits::Jacobian M;".format(t_go),
" using M = typename {}::Traits::Jacobian;".format(t_go),
" M m({});".format(n_go),
" {}.jacobian({},m);".format(n_go, v),
" using Dune::PDELab::Backend::native;",
......@@ -1466,7 +1466,7 @@ def name_time():
def typedef_vtk_sequence_writer(name):
include_file("dune/grid/io/file/vtk/vtksequencewriter.hh", filetag="driver")
gv_type = type_leafview()
return "typedef Dune::VTKSequenceWriter<{}> {};".format(gv_type, name)
return "using {} = Dune::VTKSequenceWriter<{}>;".format(name, gv_type)
@symbol
......
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