Before running this example, you must install
Basix.UFL:
pip3 install git+https://github.com/FEniCS/basix fenics-ufl
This element can then be created with the following lines of Python:
import basix
import basix.ufl
import numpy as np
# Create nonconforming Arnold-Winther degree 1 on a triangle
e = basix.ufl.custom_element(
basix.CellType.triangle,
(2, 2),
np.array([[0.7071067811865469, 3.0531133177191805e-16, 5.551115123125783e-16, 1.2490009027033011e-15, 4.718447854656915e-16, 1.5421691701433815e-15, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.7071067811865469, 3.0531133177191805e-16, 5.551115123125783e-16, 1.2490009027033011e-15, 4.718447854656915e-16, 1.5421691701433815e-15, 0.7071067811865469, 3.0531133177191805e-16, 5.551115123125783e-16, 1.2490009027033011e-15, 4.718447854656915e-16, 1.5421691701433815e-15, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.7071067811865469, 3.0531133177191805e-16, 5.551115123125783e-16, 1.2490009027033011e-15, 4.718447854656915e-16, 1.5421691701433815e-15], [0.23570226039551567, -0.08333333333333331, 0.1443375672974068, 3.0531133177191805e-16, 1.3877787807814457e-17, 1.1518563880486e-15, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.23570226039551567, -0.08333333333333331, 0.1443375672974068, 3.0531133177191805e-16, 1.3877787807814457e-17, 1.1518563880486e-15, 0.23570226039551567, -0.08333333333333331, 0.1443375672974068, 3.0531133177191805e-16, 1.3877787807814457e-17, 1.1518563880486e-15, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.23570226039551567, -0.08333333333333331, 0.1443375672974068, 3.0531133177191805e-16, 1.3877787807814457e-17, 1.1518563880486e-15], [0.2357022603955157, 0.16666666666666693, 1.8735013540549517e-16, 9.43689570931383e-16, 5.689893001203927e-16, 4.475586568020162e-16, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2357022603955157, 0.16666666666666693, 1.8735013540549517e-16, 9.43689570931383e-16, 5.689893001203927e-16, 4.475586568020162e-16, 0.2357022603955157, 0.16666666666666693, 1.8735013540549517e-16, 9.43689570931383e-16, 5.689893001203927e-16, 4.475586568020162e-16, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.2357022603955157, 0.16666666666666693, 1.8735013540549517e-16, 9.43689570931383e-16, 5.689893001203927e-16, 4.475586568020162e-16], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.11785113019775793, 0.13333333333333364, 1.2836953722228372e-16, 0.04082482904638697, 4.787836793695988e-16, 1.3964523981613297e-16, 0.11785113019775793, 0.13333333333333364, 1.2836953722228372e-16, 0.04082482904638697, 4.787836793695988e-16, 1.3964523981613297e-16, -0.23570226039551587, -0.2666666666666673, -2.5673907444456745e-16, -0.08164965809277394, -9.575673587391975e-16, -2.7929047963226594e-16], [-0.2357022603955159, 0.13333333333333341, -0.23094010767585096, -0.02721655269759095, 0.04714045207910335, -0.06085806194502011, 0.11785113019775795, -0.06666666666666671, 0.11547005383792548, 0.013608276348795474, -0.023570226039551674, 0.030429030972510054, 0.11785113019775795, -0.06666666666666671, 0.11547005383792548, 0.013608276348795474, -0.023570226039551674, 0.030429030972510054, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [-0.11785113019775782, -0.03333333333333342, -0.05773502691896272, 0.04082482904638594, -0.047140452079103265, -4.128641872824801e-16, 0.05892556509887891, 0.01666666666666671, 0.02886751345948136, -0.02041241452319297, 0.023570226039551632, 2.0643209364124004e-16, 0.05892556509887891, 0.01666666666666671, 0.02886751345948136, -0.02041241452319297, 0.023570226039551632, 2.0643209364124004e-16, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.17677669529663687, -0.05000000000000001, 0.14433756729740685, -0.006804138174397498, -4.163336342344337e-17, 0.03042903097251027, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.11785113019775795, -0.06666666666666671, 0.11547005383792548, 0.013608276348795474, -0.023570226039551674, 0.030429030972510054, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.05892556509887891, 0.01666666666666671, 0.02886751345948136, -0.02041241452319297, 0.023570226039551632, 2.0643209364124004e-16], [0.11785113019775795, -0.06666666666666671, 0.11547005383792548, 0.013608276348795474, -0.023570226039551674, 0.030429030972510054, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.11785113019775793, -0.13333333333333364, -1.2836953722228372e-16, -0.04082482904638697, -4.787836793695988e-16, -1.3964523981613297e-16]], dtype=np.float64),
[[np.empty((0, 2), dtype=np.float64), np.empty((0, 2), dtype=np.float64), np.empty((0, 2), dtype=np.float64)], [np.array([[0.7886751345948129, 0.21132486540518713], [0.21132486540518713, 0.7886751345948129]], dtype=np.float64), np.array([[0.0, 0.21132486540518713], [0.0, 0.7886751345948129]], dtype=np.float64), np.array([[0.21132486540518713, 0.0], [0.7886751345948129, 0.0]], dtype=np.float64)], [np.array([[0.16666666666666666, 0.16666666666666666], [0.16666666666666666, 0.6666666666666666], [0.6666666666666666, 0.16666666666666666]], dtype=np.float64)], []],
[[np.empty((0, 4, 0, 1), dtype=np.float64), np.empty((0, 4, 0, 1), dtype=np.float64), np.empty((0, 4, 0, 1), dtype=np.float64)], [np.array([[[[0.19716878364870322], [0.052831216351296784]], [[0.19716878364870322], [0.052831216351296784]], [[0.19716878364870322], [0.052831216351296784]], [[0.19716878364870322], [0.052831216351296784]]], [[[0.19716878364870322], [0.052831216351296784]], [[0.19716878364870322], [0.052831216351296784]], [[-0.19716878364870322], [-0.052831216351296784]], [[-0.19716878364870322], [-0.052831216351296784]]], [[[0.052831216351296784], [0.19716878364870322]], [[0.052831216351296784], [0.19716878364870322]], [[0.052831216351296784], [0.19716878364870322]], [[0.052831216351296784], [0.19716878364870322]]], [[[0.052831216351296784], [0.19716878364870322]], [[0.052831216351296784], [0.19716878364870322]], [[-0.052831216351296784], [-0.19716878364870322]], [[-0.052831216351296784], [-0.19716878364870322]]]], dtype=np.float64), np.array([[[[0.39433756729740643], [0.10566243270259357]], [[0.0], [0.0]], [[0.0], [0.0]], [[0.0], [0.0]]], [[[0.0], [0.0]], [[0.0], [0.0]], [[-0.39433756729740643], [-0.10566243270259357]], [[0.0], [0.0]]], [[[0.10566243270259357], [0.39433756729740643]], [[0.0], [0.0]], [[0.0], [0.0]], [[0.0], [0.0]]], [[[0.0], [0.0]], [[0.0], [0.0]], [[-0.10566243270259357], [-0.39433756729740643]], [[0.0], [0.0]]]], dtype=np.float64), np.array([[[[0.0], [0.0]], [[0.0], [0.0]], [[0.0], [0.0]], [[0.39433756729740643], [0.10566243270259357]]], [[[0.0], [0.0]], [[0.39433756729740643], [0.10566243270259357]], [[0.0], [0.0]], [[0.0], [0.0]]], [[[0.0], [0.0]], [[0.0], [0.0]], [[0.0], [0.0]], [[0.10566243270259357], [0.39433756729740643]]], [[[0.0], [0.0]], [[0.10566243270259357], [0.39433756729740643]], [[0.0], [0.0]], [[0.0], [0.0]]]], dtype=np.float64)], [np.array([[[[0.16666666666666666], [0.16666666666666666], [0.16666666666666666]], [[0.0], [0.0], [0.0]], [[0.0], [0.0], [0.0]], [[0.0], [0.0], [0.0]]], [[[0.0], [0.0], [0.0]], [[0.16666666666666666], [0.16666666666666666], [0.16666666666666666]], [[0.0], [0.0], [0.0]], [[0.0], [0.0], [0.0]]], [[[0.0], [0.0], [0.0]], [[0.0], [0.0], [0.0]], [[0.0], [0.0], [0.0]], [[0.16666666666666666], [0.16666666666666666], [0.16666666666666666]]]], dtype=np.float64)], []],
0,
basix.MapType.doubleContravariantPiola,
basix.SobolevSpace.HDivDiv,
False,
-1,
2,
basix.PolysetType.standard, dtype=np.float64
)