Source code for ffc.quadrature.parameters

# -*- coding: utf-8 -*-
"Quadrature representation class for UFL"

# Copyright (C) 2009-2014 Kristian B. Oelgaard
#
# This file is part of FFC.
#
# FFC is free software: you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# FFC is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with FFC. If not, see <http://www.gnu.org/licenses/>.
#
# Modified by Anders Logg 2009, 2014
# Modified by Martin Sandve Alnæs 2013-2017

# UFL modules
from ufl import custom_integral_types

# FFC modules
from ffc.log import warning


[docs]def default_optimize_parameters(): return { "eliminate zeros": False, "optimisation": False, "ignore ones": False, "remove zero terms": False, "ignore zero tables": False,
}
[docs]def parse_optimise_parameters(parameters, itg_data): # Initialize parameters optimise_parameters = default_optimize_parameters() # Set optimized parameters if parameters["optimize"] and itg_data.integral_type in custom_integral_types: warning("Optimization not available for custom integrals, skipping optimization.") elif parameters["optimize"]: optimise_parameters["ignore ones"] = True optimise_parameters["remove zero terms"] = True optimise_parameters["ignore zero tables"] = True # Do not include this in below if/else clause since we want to # be able to switch on this optimisation in addition to the # other optimisations. if "eliminate_zeros" in parameters: optimise_parameters["eliminate zeros"] = True if "simplify_expressions" in parameters: optimise_parameters["optimisation"] = "simplify_expressions" elif "precompute_ip_const" in parameters: optimise_parameters["optimisation"] = "precompute_ip_const" elif "precompute_basis_const" in parameters: optimise_parameters["optimisation"] = "precompute_basis_const" # The current default optimisation (for -O) is equal to # '-feliminate_zeros -fsimplify_expressions'. else: # If '-O -feliminate_zeros' was given on the command line, # do not simplify expressions if "eliminate_zeros" not in parameters: optimise_parameters["eliminate zeros"] = True optimise_parameters["optimisation"] = "simplify_expressions"
return optimise_parameters