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

Allow to switch off measures through options - useful for debugging!

parent 575e0690
No related branches found
No related tags found
No related merge requests found
......@@ -108,6 +108,10 @@ class CodegenFormOptionsArray(ImmutableRecord):
control_variable = CodegenOption(default=None, helpstr="Name of control variable in UFL file")
block_preconditioner_diagonal = CodegenOption(default=False, helpstr="Whether this operator should implement the diagonal part of a block preconditioner")
block_preconditioner_offdiagonal = CodegenOption(default=False, helpstr="Whether this operator should implement the off-diagonal part of a block preconditioner")
enable_volume = CodegenOption(default=True, helpstr="Whether to assemble volume integrals")
enable_skeleton = CodegenOption(default=True, helpstr="Whether to assemble skeleton integrals")
enable_boundary = CodegenOption(default=True, helpstr="Whether to assemble boundary integrals")
# Until more sophisticated logic is needed, we keep the actual option data in this module
_global_options = CodegenGlobalOptionsArray()
......
......@@ -776,6 +776,15 @@ def local_operator_default_settings(operator, form):
.format(rf), classtag="operator")
def measure_is_enabled(measure):
option_dict = {"cell": "enable_volume",
"interior_facet": "enable_skeleton",
"exterior_facet": "enable_boundary",
}
return get_form_option(option_dict[measure])
def generate_residual_kernels(form, original_form):
if not get_form_option("generate_residuals"):
return {}
......@@ -787,6 +796,10 @@ def generate_residual_kernels(form, original_form):
# Generate the necessary residual methods
for measure in set(i.integral_type() for i in form.integrals()):
logger.info("generate_residual_kernels: measure {}".format(measure))
if not measure_is_enabled(measure):
continue
with global_context(integral_type=measure):
from dune.codegen.pdelab.signatures import assembler_routine_name
with global_context(kernel=assembler_routine_name()):
......@@ -897,6 +910,9 @@ def generate_jacobian_kernels(form, original_form):
if get_form_option("sumfact_regular_jacobians"):
set_form_option("sumfact", False)
for measure in set(i.integral_type() for i in jacform.integrals()):
if not measure_is_enabled(measure):
continue
logger.info("generate_jacobian_kernels: measure {}".format(measure))
with global_context(integral_type=measure):
from dune.codegen.pdelab.signatures import assembler_routine_name
......@@ -930,6 +946,9 @@ def generate_control_kernels(forms):
# Generate the necessary residual methods
for measure in set(i.integral_type() for form in forms for i in form.integrals()):
if not measure_is_enabled(measure):
continue
logger.info("generate_control_kernels: measure {}".format(measure))
with global_context(integral_type=measure):
from dune.codegen.pdelab.signatures import assembler_routine_name
......
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