def restrict_tfe(element, domain, take_closure): restricted = restrict(element._base_element, domain, take_closure) if restricted is null_element: return null_element else: return finat.TensorFiniteElement(restricted, element._shape, element._transpose)
def convert_tensorelement(element, **kwargs): scalar_elem, deps = _create_element(element.sub_elements()[0], **kwargs) shape = element.reference_value_shape() shape_innermost = kwargs["shape_innermost"] return (finat.TensorFiniteElement(scalar_elem, shape, not shape_innermost), deps | {"shape_innermost"})
def convert_vectorelement(element, **kwargs): scalar_elem, deps = _create_element(element.sub_elements()[0], **kwargs) shape = (element.num_sub_elements(), ) shape_innermost = kwargs["shape_innermost"] return (finat.TensorFiniteElement(scalar_elem, shape, not shape_innermost), deps | {"shape_innermost"})
def convert_tensorelement(element): scalar_element = create_element(element.sub_elements()[0]) return finat.TensorFiniteElement(scalar_element, element.reference_value_shape())
def convert_vectorelement(element): scalar_element = create_element(element.sub_elements()[0]) return finat.TensorFiniteElement(scalar_element, (element.num_sub_elements(), ))
def rebuild_te(element, expr, rt_var_name): return finat.TensorFiniteElement(rebuild(element.base_element, expr, rt_var_name), element._shape, transpose=element._transpose)