diff --git a/python/dune/perftool/options.py b/python/dune/perftool/options.py index 7afd80e1e73778532061bc22696f1fbb7bc3fa40..1b1900fac300b477aa0819919c2a24ed54611d50 100644 --- a/python/dune/perftool/options.py +++ b/python/dune/perftool/options.py @@ -161,3 +161,8 @@ def option_switch(opt): else: return "default" return _switch + + +def set_option_dependencies(): + if get_option("overlapping"): + set_option("parallel", True) diff --git a/python/dune/perftool/pdelab/driver/constraints.py b/python/dune/perftool/pdelab/driver/constraints.py index b67822950ca14f497f7adc147888ca81cd074e90..901133c853819c45f7cae6af21ba212346d4adf2 100644 --- a/python/dune/perftool/pdelab/driver/constraints.py +++ b/python/dune/perftool/pdelab/driver/constraints.py @@ -24,13 +24,19 @@ def name_assembled_constraints(): return name +def has_dirichlet_constraints(is_dirichlet): + if isinstance(is_dirichlet, (list, tuple)): + return any(bool(d) for d in is_dirichlet) + else: + return bool(is_dirichlet) + + @preamble def assemble_constraints(name): element = get_trial_element() gfs = name_trial_gfs() is_dirichlet = preprocess_leaf_data(element, "is_dirichlet") - from dune.perftool.pdelab.driver.interpolate import _do_interpolate - if _do_interpolate(is_dirichlet): + if has_dirichlet_constraints(is_dirichlet): bctype_function = name_bctype_function(element, is_dirichlet) return "Dune::PDELab::constraints({}, {}, {});".format(bctype_function, gfs, diff --git a/python/dune/perftool/pdelab/driver/instationary.py b/python/dune/perftool/pdelab/driver/instationary.py index ae4f3eb24adb48512fb9cfbd0fd07c2034e24fd1..3ed2635b91aeb5e3c1af777eea4cbbd2aa0f76aa 100644 --- a/python/dune/perftool/pdelab/driver/instationary.py +++ b/python/dune/perftool/pdelab/driver/instationary.py @@ -14,7 +14,8 @@ from dune.perftool.pdelab.driver.gridfunctionspace import (name_trial_gfs, from dune.perftool.pdelab.driver.gridoperator import (name_gridoperator, name_parameters, type_gridoperator,) -from dune.perftool.pdelab.driver.constraints import (name_bctype_function, +from dune.perftool.pdelab.driver.constraints import (has_dirichlet_constraints, + name_bctype_function, name_constraintscontainer, ) from dune.perftool.pdelab.driver.interpolate import (interpolate_dirichlet_data, @@ -58,10 +59,8 @@ def time_loop(): interpolate_dirichlet_data(vector) is_dirichlet = preprocess_leaf_data(element, "is_dirichlet") - from dune.perftool.pdelab.driver.interpolate import _do_interpolate assemble_new_constraints = "" - dirichlet_constraints = _do_interpolate(is_dirichlet) - if dirichlet_constraints: + if has_dirichlet_constraints(is_dirichlet): bctype = name_bctype_function(element, is_dirichlet) gfs = name_trial_gfs() cc = name_constraintscontainer() @@ -78,7 +77,7 @@ def time_loop(): apply_call = "{}.apply(time, dt, {}, {}new);".format(osm, vector, vector) else: osm = name_onestepmethod() - if dirichlet_constraints: + if has_dirichlet_constraints(is_dirichlet): dirichlet = preprocess_leaf_data(element, "interpolate_expression") boundary = name_boundary_function(element, dirichlet) apply_call = "{}.apply(time, dt, {}, {}, {}new);".format(osm, vector, boundary, vector) diff --git a/test/navier-stokes/navierstokes_2d_dg_quadrilateral.ufl b/test/navier-stokes/navierstokes_2d_dg_quadrilateral.ufl index 0797acc716499e9357421767e65865214eb4b2ec..fc8a150570cc80f648f985b154dac8efc7a3f68b 100644 --- a/test/navier-stokes/navierstokes_2d_dg_quadrilateral.ufl +++ b/test/navier-stokes/navierstokes_2d_dg_quadrilateral.ufl @@ -5,7 +5,7 @@ degree = 2 dim = 2 x = SpatialCoordinate(cell) -time = variable(Constant(cell, count=2)) +time = get_time(cell) P2 = VectorElement("DG", cell, degree) P1 = FiniteElement("DG", cell, degree-1) @@ -44,5 +44,5 @@ r = mu * inner(grad(u), grad(v))*dx \ - avg(q)*inner(jump(u), n)*dS \ forms = [mass,r] -dirichlet_expression = g_v, g_p +interpolate_expression = g_v, g_p exact_solution = g_v, g_p diff --git a/test/navier-stokes/navierstokes_3d_dg_quadrilateral.ufl b/test/navier-stokes/navierstokes_3d_dg_quadrilateral.ufl index 76efb2fecefda1f0edc9990ff80a137987e08fd9..9eff45186c924f44a89dfda7d89e54dc78997f8e 100644 --- a/test/navier-stokes/navierstokes_3d_dg_quadrilateral.ufl +++ b/test/navier-stokes/navierstokes_3d_dg_quadrilateral.ufl @@ -56,7 +56,7 @@ r = mu * inner(grad(u), grad(v))*dx \ + q*inner(u-g_v, n)*ds forms = [mass,r] -dirichlet_expression = g_v, g_p +interpolate_expression = g_v, g_p t_end = 0.5 v_end = as_vector((-a*exp(-d*d*t_end)*(exp(a*x[0])*sin(d*x[2]+a*x[1])+cos(d*x[1]+a*x[0])*exp(a*x[2])),