diff --git a/FIAT/__init__.py b/FIAT/__init__.py index 26c467a9..a68db2bb 100644 --- a/FIAT/__init__.py +++ b/FIAT/__init__.py @@ -11,6 +11,10 @@ from FIAT.mixed import MixedElement # noqa: F401 from FIAT.restricted import RestrictedElement # noqa: F401 from FIAT.quadrature_element import QuadratureElement # noqa: F401 +from FIAT.tensor_product import TensorProductElement # noqa: F401 +from FIAT.enriched import EnrichedElement # noqa: F401 +from FIAT.nodal_enriched import NodalEnrichedElement # noqa: F401 +from FIAT.discontinuous import DiscontinuousElement # noqa: F401 # Import finite element classes from FIAT.argyris import Argyris @@ -24,9 +28,9 @@ from FIAT.christiansen_hu import ChristiansenHu from FIAT.johnson_mercier import JohnsonMercier from FIAT.brezzi_douglas_marini import BrezziDouglasMarini -from FIAT.Sminus import TrimmedSerendipityEdge, TrimmedSerendipityFace # noqa: F401 -from FIAT.SminusDiv import TrimmedSerendipityDiv # noqa: F401 -from FIAT.SminusCurl import TrimmedSerendipityCurl # noqa: F401 +from FIAT.Sminus import TrimmedSerendipityEdge, TrimmedSerendipityFace +from FIAT.SminusDiv import TrimmedSerendipityDiv +from FIAT.SminusCurl import TrimmedSerendipityCurl from FIAT.brezzi_douglas_fortin_marini import BrezziDouglasFortinMarini from FIAT.discontinuous_lagrange import DiscontinuousLagrange from FIAT.discontinuous_taylor import DiscontinuousTaylor @@ -56,10 +60,6 @@ from FIAT.hu_zhang import HuZhang from FIAT.mardal_tai_winther import MardalTaiWinther from FIAT.bubble import Bubble, FacetBubble -from FIAT.tensor_product import TensorProductElement -from FIAT.enriched import EnrichedElement -from FIAT.nodal_enriched import NodalEnrichedElement -from FIAT.discontinuous import DiscontinuousElement from FIAT.hdiv_trace import HDivTrace from FIAT.kong_mulder_veldhuizen import KongMulderVeldhuizen from FIAT.fdm_element import FDMLagrange, FDMDiscontinuousLagrange, FDMQuadrature, FDMBrokenH1, FDMBrokenL2, FDMHermite # noqa: F401 @@ -76,6 +76,10 @@ "Crouzeix-Raviart": CrouzeixRaviart, "Discontinuous Lagrange": DiscontinuousLagrange, "S": Serendipity, + "SminusF": TrimmedSerendipityFace, + "SminusDiv": TrimmedSerendipityDiv, + "SminusE": TrimmedSerendipityEdge, + "SminusCurl": TrimmedSerendipityCurl, "Brezzi-Douglas-Marini Cube Face": BrezziDouglasMariniCubeFace, "Brezzi-Douglas-Marini Cube Edge": BrezziDouglasMariniCubeEdge, "DPC": DPC, @@ -83,6 +87,8 @@ "Discontinuous Raviart-Thomas": DiscontinuousRaviartThomas, "Hermite": CubicHermite, "Hsieh-Clough-Tocher": HsiehCloughTocher, + "QuadraticPowellSabin6": QuadraticPowellSabin6, + "QuadraticPowellSabin12": QuadraticPowellSabin12, "Alfeld-Sorokina": AlfeldSorokina, "Arnold-Qin": ArnoldQin, "Christiansen-Hu": ChristiansenHu, @@ -102,12 +108,6 @@ "Nedelec 2nd kind H(curl)": NedelecSecondKind, "Raviart-Thomas": RaviartThomas, "Regge": Regge, - "EnrichedElement": EnrichedElement, - "NodalEnrichedElement": NodalEnrichedElement, - "QuadraticPowellSabin6": QuadraticPowellSabin6, - "QuadraticPowellSabin12": QuadraticPowellSabin12, - "TensorProductElement": TensorProductElement, - "BrokenElement": DiscontinuousElement, "HDiv Trace": HDivTrace, "Hellan-Herrmann-Johnson": HellanHerrmannJohnson, "Gopalakrishnan-Lederer-Schoberl 1st kind": GopalakrishnanLedererSchoberlFirstKind, diff --git a/finat/__init__.py b/finat/__init__.py index cad01821..d4ba0eb1 100644 --- a/finat/__init__.py +++ b/finat/__init__.py @@ -1,36 +1,36 @@ -from .fiat_elements import Bernstein # noqa: F401 -from .fiat_elements import Bubble, CrouzeixRaviart, DiscontinuousTaylor # noqa: F401 -from .fiat_elements import Lagrange, DiscontinuousLagrange, Real # noqa: F401 -from .fiat_elements import DPC, Serendipity, BrezziDouglasMariniCubeEdge, BrezziDouglasMariniCubeFace # noqa: F401 -from .fiat_elements import TrimmedSerendipityFace, TrimmedSerendipityEdge # noqa: F401 -from .fiat_elements import TrimmedSerendipityDiv # noqa: F401 -from .fiat_elements import TrimmedSerendipityCurl # noqa: F401 -from .fiat_elements import BrezziDouglasMarini, BrezziDouglasFortinMarini # noqa: F401 -from .fiat_elements import Nedelec, NedelecSecondKind, RaviartThomas # noqa: F401 -from .fiat_elements import HellanHerrmannJohnson, Regge # noqa: F401 -from .fiat_elements import GopalakrishnanLedererSchoberlFirstKind # noqa: F401 -from .fiat_elements import GopalakrishnanLedererSchoberlSecondKind # noqa: F401 -from .fiat_elements import FacetBubble # noqa: F401 -from .fiat_elements import KongMulderVeldhuizen # noqa: F401 +from .fiat_elements import Bernstein +from .fiat_elements import Bubble, CrouzeixRaviart, DiscontinuousTaylor +from .fiat_elements import Lagrange, DiscontinuousLagrange, Real +from .fiat_elements import DPC, Serendipity, BrezziDouglasMariniCubeEdge, BrezziDouglasMariniCubeFace +from .fiat_elements import TrimmedSerendipityFace, TrimmedSerendipityEdge +from .fiat_elements import TrimmedSerendipityDiv +from .fiat_elements import TrimmedSerendipityCurl +from .fiat_elements import BrezziDouglasMarini, BrezziDouglasFortinMarini +from .fiat_elements import Nedelec, NedelecSecondKind, RaviartThomas +from .fiat_elements import HellanHerrmannJohnson, Regge +from .fiat_elements import GopalakrishnanLedererSchoberlFirstKind +from .fiat_elements import GopalakrishnanLedererSchoberlSecondKind +from .fiat_elements import FacetBubble +from .fiat_elements import KongMulderVeldhuizen -from .argyris import Argyris # noqa: F401 -from .aw import ArnoldWinther # noqa: F401 -from .aw import ArnoldWintherNC # noqa: F401 -from .hz import HuZhang # noqa: F401 -from .bell import Bell # noqa: F401 -from .bernardi_raugel import BernardiRaugel, BernardiRaugelBubble # noqa: F401 -from .hct import HsiehCloughTocher, ReducedHsiehCloughTocher # noqa: F401 -from .arnold_qin import ArnoldQin, ReducedArnoldQin # noqa: F401 -from .christiansen_hu import ChristiansenHu # noqa: F401 -from .alfeld_sorokina import AlfeldSorokina # noqa: F401 -from .guzman_neilan import GuzmanNeilanFirstKindH1, GuzmanNeilanSecondKindH1, GuzmanNeilanBubble, GuzmanNeilanH1div # noqa: F401 -from .powell_sabin import QuadraticPowellSabin6, QuadraticPowellSabin12 # noqa: F401 -from .hermite import Hermite # noqa: F401 -from .johnson_mercier import JohnsonMercier # noqa: F401 -from .mtw import MardalTaiWinther # noqa: F401 -from .morley import Morley # noqa: F401 -from .trace import HDivTrace # noqa: F401 -from .direct_serendipity import DirectSerendipity # noqa: F401 +from .argyris import Argyris +from .aw import ArnoldWinther +from .aw import ArnoldWintherNC +from .hz import HuZhang +from .bell import Bell +from .bernardi_raugel import BernardiRaugel, BernardiRaugelBubble +from .hct import HsiehCloughTocher, ReducedHsiehCloughTocher +from .arnold_qin import ArnoldQin, ReducedArnoldQin +from .christiansen_hu import ChristiansenHu +from .alfeld_sorokina import AlfeldSorokina +from .guzman_neilan import GuzmanNeilanFirstKindH1, GuzmanNeilanSecondKindH1, GuzmanNeilanBubble, GuzmanNeilanH1div +from .powell_sabin import QuadraticPowellSabin6, QuadraticPowellSabin12 +from .hermite import Hermite +from .johnson_mercier import JohnsonMercier +from .mtw import MardalTaiWinther +from .morley import Morley +from .trace import HDivTrace +from .direct_serendipity import DirectSerendipity from .spectral import GaussLobattoLegendre, GaussLegendre, Legendre, IntegratedLegendre, FDMLagrange, FDMQuadrature, FDMDiscontinuousLagrange, FDMBrokenH1, FDMBrokenL2, FDMHermite # noqa: F401 from .tensorfiniteelement import TensorFiniteElement # noqa: F401 @@ -46,3 +46,64 @@ from .runtime_tabulated import RuntimeTabulated # noqa: F401 from . import quadrature # noqa: F401 from . import cell_tools # noqa: F401 + +# List of supported elements and mapping to element classes +supported_elements = {"Argyris": Argyris, + "Bell": Bell, + "Bernardi-Raugel": BernardiRaugel, + "Bernardi-Raugel Bubble": BernardiRaugelBubble, + "Bernstein": Bernstein, + "Brezzi-Douglas-Fortin-Marini": BrezziDouglasFortinMarini, + "Brezzi-Douglas-Marini Cube Face": BrezziDouglasMariniCubeFace, + "Brezzi-Douglas-Marini": BrezziDouglasMarini, + "Brezzi-Douglas-Marini Cube Edge": BrezziDouglasMariniCubeEdge, + "Bubble": Bubble, + "FacetBubble": FacetBubble, + "Crouzeix-Raviart": CrouzeixRaviart, + "Direct Serendipity": DirectSerendipity, + "Discontinuous Lagrange": DiscontinuousLagrange, + "Discontinuous Lagrange L2": DiscontinuousLagrange, + "Discontinuous Taylor": DiscontinuousTaylor, + "Discontinuous Raviart-Thomas": lambda *args, **kwargs: DiscontinuousElement(RaviartThomas(*args, **kwargs)), + "DPC": DPC, + "DPC L2": DPC, + "Hermite": Hermite, + "Hsieh-Clough-Tocher": HsiehCloughTocher, + "Reduced-Hsieh-Clough-Tocher": ReducedHsiehCloughTocher, + "QuadraticPowellSabin6": QuadraticPowellSabin6, + "QuadraticPowellSabin12": QuadraticPowellSabin12, + "Alfeld-Sorokina": AlfeldSorokina, + "Arnold-Qin": ArnoldQin, + "Reduced-Arnold-Qin": ReducedArnoldQin, + "Christiansen-Hu": ChristiansenHu, + "Guzman-Neilan 1st kind H1": GuzmanNeilanFirstKindH1, + "Guzman-Neilan 2nd kind H1": GuzmanNeilanSecondKindH1, + "Guzman-Neilan H1(div)": GuzmanNeilanH1div, + "Guzman-Neilan Bubble": GuzmanNeilanBubble, + "Johnson-Mercier": JohnsonMercier, + "Lagrange": Lagrange, + "Kong-Mulder-Veldhuizen": KongMulderVeldhuizen, + "Gauss-Lobatto-Legendre": GaussLobattoLegendre, + "Gauss-Legendre": GaussLegendre, + "Gauss-Legendre L2": GaussLegendre, + "Legendre": Legendre, + "Integrated Legendre": IntegratedLegendre, + "Morley": Morley, + "Nedelec 1st kind H(curl)": Nedelec, + "Nedelec 2nd kind H(curl)": NedelecSecondKind, + "Raviart-Thomas": RaviartThomas, + "Real": Real, + "S": Serendipity, + "SminusF": TrimmedSerendipityFace, + "SminusDiv": TrimmedSerendipityDiv, + "SminusE": TrimmedSerendipityEdge, + "SminusCurl": TrimmedSerendipityCurl, + "Regge": Regge, + "HDiv Trace": HDivTrace, + "Hellan-Herrmann-Johnson": HellanHerrmannJohnson, + "Gopalakrishnan-Lederer-Schoberl 1st kind": GopalakrishnanLedererSchoberlFirstKind, + "Gopalakrishnan-Lederer-Schoberl 2nd kind": GopalakrishnanLedererSchoberlSecondKind, + "Conforming Arnold-Winther": ArnoldWinther, + "Nonconforming Arnold-Winther": ArnoldWintherNC, + "Hu-Zhang": HuZhang, + "Mardal-Tai-Winther": MardalTaiWinther} diff --git a/finat/ufl/elementlist.py b/finat/ufl/elementlist.py index 172eb78f..d487f83e 100644 --- a/finat/ufl/elementlist.py +++ b/finat/ufl/elementlist.py @@ -184,8 +184,8 @@ def show_elements(): register_element("S", None, 0, H1, "identity", (1, None), cubes) register_element("DPC", None, 0, L2, "identity", (0, None), cubes) -register_element("BDMCE", None, 1, HCurl, "covariant Piola", (1, None), ("quadrilateral",)) -register_element("BDMCF", None, 1, HDiv, "contravariant Piola", (1, None), ("quadrilateral",)) +register_element("Brezzi-Douglas-Marini Cube Edge", "BDMCE", 1, HCurl, "covariant Piola", (1, None), ("quadrilateral",)) +register_element("Brezzi-Douglas-Marini Cube Face", "BDMCF", 1, HDiv, "contravariant Piola", (1, None), ("quadrilateral",)) register_element("SminusE", "SminusE", 1, HCurl, "covariant Piola", (1, None), cubes[1:3]) register_element("SminusF", "SminusF", 1, HDiv, "contravariant Piola", (1, None), cubes[1:2]) register_element("SminusDiv", "SminusDiv", 1, HDiv, "contravariant Piola", (1, None), cubes[1:3])