def _evaluate(expression: Operator, at: ( ReducedMesh, ReducedVertices, ), **kwargs): assert len(kwargs) == 0 return evaluate_base(function_from_ufl_operators(expression), at)
def _export(solution: Operator, directory: (Folders.Folder, str), filename: str, suffix: (int, None) = None, component: (int, str, None) = None): export_base(function_from_ufl_operators(solution), directory, filename, suffix, component)
def test_normalization(mesh, FunctionSpace, bilinear_form, isclose): V = FunctionSpace(mesh) A = assemble(bilinear_form(V)) z1 = Function(V) z1.vector()[:] = 2. z1_normalized = function_from_ufl_operators(z1/sqrt(transpose(z1)*A*z1)) assert isclose(z1_normalized.vector().get_local(), 1).all()
def _abs(expression: (Function.Type(), Operator)): function = function_from_ufl_operators(expression) space = function.function_space() abs_output = abs(function.vector()) value_max = abs_output.max_abs_return_value global_dof_max = abs_output.max_abs_return_location assert len(global_dof_max) == 1 global_dof_max = global_dof_max[0] coordinates_max = get_global_dof_coordinates(global_dof_max, space) component_max = get_global_dof_component(global_dof_max, space) # Prettify print coordinates_max_component_max_dof_max = PrettyTuple(coordinates_max, component_max, global_dof_max) return AbsOutput(value_max, coordinates_max_component_max_dof_max)
def _extend_or_restrict_if_needed(self, function, component): function = function_from_ufl_operators(function) return GramSchmidt_Base._extend_or_restrict_if_needed( self, function, component)
def __setitem__(self, key, item): item = function_from_ufl_operators(item) FunctionsList_Base.__setitem__(self, key, item)
def _enrich(self, function, component, weight, copy): function = function_from_ufl_operators(function) FunctionsList_Base._enrich(self, function, component, weight, copy)
def ConvertAdditionalFunctionTypes(arg): assert isinstance(arg, Operator) return function_from_ufl_operators(arg)
def _assign(object_to: Function.Type(), object_from: Operator): dolfin_assign(object_to, function_from_ufl_operators(object_from))
def test_conversion(mesh, FunctionSpace, isclose): V = FunctionSpace(mesh) z1 = Function(V) z1.vector()[:] = 1. assert function_from_ufl_operators(z1) is z1 _2_z1 = function_from_ufl_operators(2*z1) assert isclose(_2_z1.vector().get_local(), 2.).all() z1_2 = function_from_ufl_operators(z1*2) assert isclose(z1_2.vector().get_local(), 2.).all() z1_over_2 = function_from_ufl_operators(z1/2.) assert isclose(z1_over_2.vector().get_local(), 0.5).all() z2 = Function(V) z2.vector()[:] = 2. z1_plus_z2 = function_from_ufl_operators(z1 + z2) assert isclose(z1_plus_z2.vector().get_local(), 3.).all() z1_minus_z2 = function_from_ufl_operators(z1 - z2) assert isclose(z1_minus_z2.vector().get_local(), -1.).all() z1_minus_2_z2 = function_from_ufl_operators(z1 - 2*z2) assert isclose(z1_minus_2_z2.vector().get_local(), -3.).all() z1_minus_z2_2 = function_from_ufl_operators(z1 - z2*2) assert isclose(z1_minus_z2_2.vector().get_local(), -3.).all() z1_minus_3_z2_2 = function_from_ufl_operators(z1 - 3*z2*2) assert isclose(z1_minus_3_z2_2.vector().get_local(), -11.).all() z1_minus_z2_over_4 = function_from_ufl_operators(z1 - z2/4.) assert isclose(z1_minus_z2_over_4.vector().get_local(), 0.5).all() z1_minus_z2_over_2 = function_from_ufl_operators((z1 - z2)/2.) assert isclose(z1_minus_z2_over_2.vector().get_local(), -0.5).all() z3 = Function(V) z3.vector()[:] = 3. z1_minus_z2_plus_z3 = function_from_ufl_operators(z1 - z2 + z3) assert isclose(z1_minus_z2_plus_z3.vector().get_local(), 2.).all()
def _evaluate(expression: Operator, at: (ReducedMesh, ReducedVertices, None) = None, **kwargs): return evaluate_base(function_from_ufl_operators(expression), at, **kwargs)