zoomy_core.transformation.to_ufl module

zoomy_core.transformation.to_ufl module#

Module zoomy_core.transformation.to_ufl.

class zoomy_core.transformation.to_ufl.UFLRuntimeModel(model, module=None, printer=None, kernel=None)#

Bases: NumpyRuntimeModel

UFLRuntimeModel. (class).

Parameters:
  • model (Model) –

  • module (Optional[Dict[str, Callable]]) –

  • printer (Optional[str]) –

printer = None#
use_cse = True#
module = {'Abs': <built-in function abs>, 'E': ufl.e, 'Heaviside': <function UFLRuntimeModel.<lambda>>, 'ImmutableDenseMatrix': <function UFLRuntimeModel.<lambda>>, 'Max': <function UFLRuntimeModel.<lambda>>, 'Min': <function UFLRuntimeModel.<lambda>>, 'Piecewise': ufl.conditional, '_ZdGrad': <function _zd_grad_resolver>, '_ZoomyVector': <function UFLRuntimeModel.<lambda>>, 'abs': <built-in function abs>, 'acos': ufl.acos, 'array': ufl.as_vector, 'asin': ufl.asin, 'atan': ufl.atan, 'atan2': ufl.atan2, 'conditional': <function _ufl_conditional>, 'cos': ufl.cos, 'cosh': ufl.cosh, 'cross': ufl.cross, 'curl': ufl.curl, 'det': ufl.det, 'div': ufl.div, 'dot': ufl.dot, 'exp': ufl.exp, 'grad': ufl.grad, 'inner': ufl.inner, 'inv': ufl.inv, 'ln': ufl.ln, 'max': <function UFLRuntimeModel.<lambda>>, 'min': <function UFLRuntimeModel.<lambda>>, 'ones_like': <function UFLRuntimeModel.<lambda>>, 'outer': ufl.outer, 'pi': ufl.pi, 'pow': <function UFLRuntimeModel.<lambda>>, 'sign': ufl.sign, 'signum': ufl.sign, 'sin': ufl.sin, 'sinh': ufl.sinh, 'sqrt': ufl.sqrt, 'squeeze': <function UFLRuntimeModel.<lambda>>, 'sum': <function UFLRuntimeModel.<lambda>>, 'tan': ufl.tan, 'tanh': ufl.tanh, 'tr': ufl.tr, 'transpose': ufl.transpose, 'zeros_like': <function UFLRuntimeModel.<lambda>>}#
class zoomy_core.transformation.to_ufl.UFLRuntimeSymbolic(symbolic_obj, module=None, printer=None)#

Bases: UFLRuntimeModel, NumpyRuntimeSymbolic

UFL runtime for symbolic registrars (e.g. Numerics).

The Firedrake counterpart to NumpyRuntimeSymbolic. It walks symbolic_obj.functions and lambdifies each registered symbolic function (numerical_flux, numerical_fluctuations, local_max_abs_eigenvalue, …) through the UFL module dict, so calling, e.g., runtime.numerical_flux(qL, qR, auxL, auxR, p, n) returns a UFL expression suitable for direct assembly in a Firedrake form.

The MRO is UFLRuntimeSymbolic UFLRuntimeModel NumpyRuntimeSymbolic NumpyRuntimeModel; __init__ is inherited from NumpyRuntimeSymbolic (no other class defines one), and module / printer / _vectorize_expression / _lambdify_function come from UFLRuntimeModel.

Parameters:
  • module (Optional[Dict[str, Callable]]) –

  • printer (Optional[str]) –