Skip to content

Commit

Permalink
Update UFL elements to use new finite element API
Browse files Browse the repository at this point in the history
  • Loading branch information
francesco-ballarin committed Oct 17, 2023
1 parent b65c6c7 commit c5569be
Show file tree
Hide file tree
Showing 4 changed files with 262 additions and 97 deletions.
72 changes: 53 additions & 19 deletions tests/unit/utils/test_expand_sum.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,14 +10,19 @@
import pytest
import ufl
import ufl.algorithms.renumbering
import ufl.finiteelement
import ufl.pullback
import ufl.sobolevspace

import ufl4rom.utils


def test_expand_sum_real_no_sum() -> None:
"""Test ufl4rom.utils.expand_sum when the form actually contains no sum at all."""
cell = ufl.triangle
element = ufl.FiniteElement("Lagrange", cell, 1)
dim = cell.geometric_dimension()
element = ufl.finiteelement.FiniteElement(
"Lagrange", cell, 1, (), ufl.pullback.identity_pullback, ufl.sobolevspace.H1)

u = ufl.TrialFunction(element)
v = ufl.TestFunction(element)
Expand All @@ -32,7 +37,9 @@ def test_expand_sum_real_no_sum() -> None:
def test_expand_sum_real_sum() -> None:
"""Test ufl4rom.utils.expand_sum when the form contains the sum of two real coefficients."""
cell = ufl.triangle
element = ufl.FiniteElement("Lagrange", cell, 1)
dim = cell.geometric_dimension()
element = ufl.finiteelement.FiniteElement(
"Lagrange", cell, 1, (), ufl.pullback.identity_pullback, ufl.sobolevspace.H1)

u = ufl.TrialFunction(element)
v = ufl.TestFunction(element)
Expand All @@ -51,8 +58,11 @@ def test_expand_sum_real_sum_differential_operators( # type: ignore[no-any-unim
) -> None:
"""Test ufl4rom.utils.expand_sum when the form contains a differential operator of the arguments."""
cell = ufl.triangle
scalar_element = ufl.FiniteElement("Lagrange", cell, 1)
vector_element = ufl.VectorElement("Lagrange", cell, 1)
dim = cell.geometric_dimension()
scalar_element = ufl.finiteelement.FiniteElement(
"Lagrange", cell, 1, (), ufl.pullback.identity_pullback, ufl.sobolevspace.H1)
vector_element = ufl.finiteelement.FiniteElement(
"Lagrange", cell, 1, (dim, ), ufl.pullback.identity_pullback, ufl.sobolevspace.H1)

u = ufl.TrialFunction(vector_element)
v = ufl.TestFunction(vector_element)
Expand All @@ -71,7 +81,9 @@ def test_expand_sum_real_sum_differential_operators( # type: ignore[no-any-unim
def test_expand_sum_real_sum_measures() -> None:
"""Test ufl4rom.utils.expand_sum when the form contains the sum of measures."""
cell = ufl.triangle
element = ufl.FiniteElement("Lagrange", cell, 1)
dim = cell.geometric_dimension()
element = ufl.finiteelement.FiniteElement(
"Lagrange", cell, 1, (), ufl.pullback.identity_pullback, ufl.sobolevspace.H1)

u = ufl.TrialFunction(element)
v = ufl.TestFunction(element)
Expand All @@ -89,8 +101,11 @@ def test_expand_sum_vector_real_scalar_coefficients( # type: ignore[no-any-unim
) -> None:
"""Test ufl4rom.utils.expand_sum when the form contains the sum of two vector real-valued coefficients."""
cell = ufl.triangle
scalar_element = ufl.FiniteElement("Lagrange", cell, 1)
vector_element = ufl.VectorElement("Lagrange", cell, 1)
dim = cell.geometric_dimension()
scalar_element = ufl.finiteelement.FiniteElement(
"Lagrange", cell, 1, (), ufl.pullback.identity_pullback, ufl.sobolevspace.H1)
vector_element = ufl.finiteelement.FiniteElement(
"Lagrange", cell, 1, (dim, ), ufl.pullback.identity_pullback, ufl.sobolevspace.H1)

u = ufl.TrialFunction(vector_element)
v = ufl.TestFunction(vector_element)
Expand All @@ -109,8 +124,11 @@ def test_expand_sum_vector_real_scalar_coefficients( # type: ignore[no-any-unim
def test_expand_sum_vector_real_tensor_coefficients() -> None:
"""Test ufl4rom.utils.expand_sum when the form contains the sum of two tensor real-valued coefficients."""
cell = ufl.triangle
vector_element = ufl.VectorElement("Lagrange", cell, 1)
tensor_element = ufl.TensorElement("Lagrange", cell, 1)
dim = cell.geometric_dimension()
vector_element = ufl.finiteelement.FiniteElement(
"Lagrange", cell, 1, (dim, ), ufl.pullback.identity_pullback, ufl.sobolevspace.H1)
tensor_element = ufl.finiteelement.FiniteElement(
"Lagrange", cell, 1, (dim, dim), ufl.pullback.identity_pullback, ufl.sobolevspace.H1)

u = ufl.TrialFunction(vector_element)
v = ufl.TestFunction(vector_element)
Expand All @@ -130,8 +148,11 @@ def test_expand_sum_vector_real_tensor_coefficients_grad() -> None:
"""Test ufl4rom.utils.expand_sum when the form contains the sum of two tensor real-valued coefficients\
and arguments defined on a vector finite element space."""
cell = ufl.triangle
scalar_element = ufl.FiniteElement("Lagrange", cell, 1)
tensor_element = ufl.TensorElement("Lagrange", cell, 1)
dim = cell.geometric_dimension()
scalar_element = ufl.finiteelement.FiniteElement(
"Lagrange", cell, 1, (), ufl.pullback.identity_pullback, ufl.sobolevspace.H1)
tensor_element = ufl.finiteelement.FiniteElement(
"Lagrange", cell, 1, (dim, dim), ufl.pullback.identity_pullback, ufl.sobolevspace.H1)

u = ufl.TrialFunction(scalar_element)
v = ufl.TestFunction(scalar_element)
Expand All @@ -151,8 +172,10 @@ def test_expand_sum_vector_real_tensor_coefficients_sum_grad() -> None:
"""Test ufl4rom.utils.expand_sum when the form contains the sum of two tensor real-valued coefficients\
and the gradient of the sum of arguments components."""
cell = ufl.triangle
dim = cell.geometric_dimension()
scalar_element = ufl.VectorElement("Lagrange", cell, 1)
tensor_element = ufl.TensorElement("Lagrange", cell, 1)
tensor_element = ufl.finiteelement.FiniteElement(
"Lagrange", cell, 1, (dim, dim), ufl.pullback.identity_pullback, ufl.sobolevspace.H1)

u = ufl.TrialFunction(scalar_element)
v = ufl.TestFunction(scalar_element)
Expand All @@ -178,8 +201,11 @@ def test_expand_sum_vector_real_tensor_coefficients_sum_grad() -> None:
def test_expand_sum_mixed_real_scalar_coefficients() -> None:
"""Test ufl4rom.utils.expand_sum with arguments defined on a mixed element."""
cell = ufl.triangle
scalar_element = ufl.FiniteElement("Lagrange", cell, 1)
vector_element = ufl.VectorElement("Lagrange", cell, 1)
dim = cell.geometric_dimension()
scalar_element = ufl.finiteelement.FiniteElement(
"Lagrange", cell, 1, (), ufl.pullback.identity_pullback, ufl.sobolevspace.H1)
vector_element = ufl.finiteelement.FiniteElement(
"Lagrange", cell, 1, (dim, ), ufl.pullback.identity_pullback, ufl.sobolevspace.H1)
mixed_element = ufl.MixedElement(scalar_element, vector_element)

u = ufl.TrialFunction(mixed_element)
Expand All @@ -199,8 +225,11 @@ def test_expand_sum_mixed_real_scalar_coefficients() -> None:
def test_expand_sum_mixed_component_real_scalar_coefficients() -> None:
"""Test ufl4rom.utils.expand_sum with components of arguments defined on a mixed element."""
cell = ufl.triangle
scalar_element = ufl.FiniteElement("Lagrange", cell, 1)
vector_element = ufl.VectorElement("Lagrange", cell, 1)
dim = cell.geometric_dimension()
scalar_element = ufl.finiteelement.FiniteElement(
"Lagrange", cell, 1, (), ufl.pullback.identity_pullback, ufl.sobolevspace.H1)
vector_element = ufl.finiteelement.FiniteElement(
"Lagrange", cell, 1, (dim, ), ufl.pullback.identity_pullback, ufl.sobolevspace.H1)
mixed_element = ufl.MixedElement(scalar_element, vector_element)

u = ufl.TrialFunction(mixed_element)
Expand All @@ -220,7 +249,9 @@ def test_expand_sum_mixed_component_real_scalar_coefficients() -> None:
def test_expand_sum_complex_no_sum() -> None:
"""Test ufl4rom.utils.expand_sum with when the form actually contains no sum at all and complex-valued arguments."""
cell = ufl.triangle
element = ufl.FiniteElement("Lagrange", cell, 1)
dim = cell.geometric_dimension()
element = ufl.finiteelement.FiniteElement(
"Lagrange", cell, 1, (), ufl.pullback.identity_pullback, ufl.sobolevspace.H1)

u = ufl.TrialFunction(element)
v = ufl.TestFunction(element)
Expand All @@ -236,8 +267,11 @@ def test_expand_sum_complex_sum() -> None:
"""Test ufl4rom.utils.expand_sum when the form contains the gradient of the sum of two complex-valude\
arguments components."""
cell = ufl.triangle
scalar_element = ufl.FiniteElement("Lagrange", cell, 1)
vector_element = ufl.VectorElement("Lagrange", cell, 1)
dim = cell.geometric_dimension()
scalar_element = ufl.finiteelement.FiniteElement(
"Lagrange", cell, 1, (), ufl.pullback.identity_pullback, ufl.sobolevspace.H1)
vector_element = ufl.finiteelement.FiniteElement(
"Lagrange", cell, 1, (dim, ), ufl.pullback.identity_pullback, ufl.sobolevspace.H1)

u = ufl.TrialFunction(vector_element)
v = ufl.TestFunction(vector_element)
Expand Down
Loading

0 comments on commit c5569be

Please sign in to comment.