def MixedSpacesRestrictionAmbiguous(mesh):
    element_0 = VectorElement("Lagrange", mesh.ufl_cell(), 1)
    element_1 = FiniteElement("Lagrange", mesh.ufl_cell(), 1)
    element = MixedElement(element_0, element_1)
    V = FunctionSpace(mesh, element)
    W = FunctionSpace(mesh, element_0)
    return (V, W)
def MixedSpacesExtensionSolveAmbiguityWithComponents(mesh):
    element_0 = VectorElement("Lagrange", mesh.ufl_cell(), 1)
    element_1 = FiniteElement("Lagrange", mesh.ufl_cell(), 1)
    element = MixedElement(element_0, element_1)
    V = FunctionSpace(mesh, element_0)
    W = FunctionSpace(mesh, element, components=[["u", "s"], "p"])
    return (V, W)
def MixedSpacesExtensionAutomatic(mesh):
    element_0 = VectorElement("Lagrange", mesh.ufl_cell(), 2)
    element_1 = FiniteElement("Lagrange", mesh.ufl_cell(), 1)
    element = MixedElement(element_0, element_1)
    V = FunctionSpace(mesh, element_0)
    W = FunctionSpace(mesh, element)
    return (V, W)
def MixedSpacesRestrictionToSubElementSolveAmbiguityWithComponents(mesh):
    element_0 = VectorElement("Lagrange", mesh.ufl_cell(), 1)
    element_00 = FiniteElement("Lagrange", mesh.ufl_cell(), 1)
    element_1 = FiniteElement("Lagrange", mesh.ufl_cell(), 1)
    element = MixedElement(element_0, element_1)
    V = FunctionSpace(mesh, element, components=[("ux", "uy"), "p"])
    W = FunctionSpace(mesh, element_00)
    return (V, W)
def MixedSpacesRestrictionToSubElementAmbiguous(mesh):
    element_0 = VectorElement("Lagrange", mesh.ufl_cell(), 2)   # Note that we need to use 2nd order FE otherwise
    element_00 = FiniteElement("Lagrange", mesh.ufl_cell(), 2)  # the automatic detection would restrict the
    element_1 = FiniteElement("Lagrange", mesh.ufl_cell(), 1)   # pressure component
    element = MixedElement(element_0, element_1)
    V = FunctionSpace(mesh, element)
    W = FunctionSpace(mesh, element_00)
    return (V, W)
def MixedSpacesRestrictionSolveAmbiguityWithComponents(mesh, sub_element):
    element_0 = VectorElement("Lagrange", mesh.ufl_cell(), 1)
    element_1 = FiniteElement("Lagrange", mesh.ufl_cell(), 1)
    element = MixedElement(element_0, element_1)
    V = FunctionSpace(mesh, element, components=["u", "p"])
    assert sub_element in (0, 1)
    if sub_element == 0:
        W = FunctionSpace(mesh, element_0)
    elif sub_element == 1:
        W = FunctionSpace(mesh, element_1)
    return (V, W)
def MixedSpacesRestrictionAutomatic(mesh, sub_element):
    element_0 = VectorElement("Lagrange", mesh.ufl_cell(), 2)
    element_1 = FiniteElement("Lagrange", mesh.ufl_cell(), 1)
    element = MixedElement(element_0, element_1)
    V = FunctionSpace(mesh, element)
    assert sub_element in (0, 1)
    if sub_element == 0:
        W = FunctionSpace(mesh, element_0)
    elif sub_element == 1:
        W = FunctionSpace(mesh, element_1)
    return (V, W)
def MixedSpacesExtensionFromSubElementSolveAmbiguityWithComponents(mesh, components):
    element_0 = VectorElement("Lagrange", mesh.ufl_cell(), 1)
    element_00 = FiniteElement("Lagrange", mesh.ufl_cell(), 1)
    element_1 = FiniteElement("Lagrange", mesh.ufl_cell(), 1)
    element = MixedElement(element_0, element_1)
    V = FunctionSpace(mesh, element_00)
    assert components in (tuple, str)
    if components is tuple:
        W = FunctionSpace(mesh, element)
    else:
        W = FunctionSpace(mesh, element, components=[("ux", "uy"), "p"])
    return (V, W)
def MixedToMixedSpacesCopySubComponentToDifferentLocation(mesh):
    element_0 = VectorElement("Lagrange", mesh.ufl_cell(), 1)
    element_1 = VectorElement("Lagrange", mesh.ufl_cell(), 1)
    element = MixedElement(element_0, element_1)
    V = FunctionSpace(mesh, element, components=[("uxx", "uxy"), ("uyx", "uyy")])
    W = V
    return (V, W)
def MixedToMixedSpacesCopyComponentToDifferentLocation(mesh):
    element_0 = FiniteElement("Lagrange", mesh.ufl_cell(), 1)
    element_1 = FiniteElement("Lagrange", mesh.ufl_cell(), 1)
    element = MixedElement(element_0, element_1)
    V = FunctionSpace(mesh, element, components=["ux", "uy"])
    W = V
    return (V, W)
Exemple #11
0
 def CustomFunctionSpace(mesh, element):
     return FunctionSpace(mesh, element, components=auxiliary_V._component_to_index)
Exemple #12
0
 def CustomFunctionSpace(mesh, element):
     return FunctionSpace(mesh, element, components=V_component._component_to_index)
def ScalarSpaces(mesh):
    V = FunctionSpace(mesh, "Lagrange", 2)
    W = V
    return (V, W)