# Path: finat/fiat_elements.py
# class ScalarFiatElement(FiatElement):
#     @property
#     def value_shape(self):
#         return ()
# 
# Path: finat/physically_mapped.py
# class NeedsCoordinateMappingElement(metaclass=ABCMeta):
# class PhysicallyMappedElement(NeedsCoordinateMappingElement):
# class DirectlyDefinedElement(NeedsCoordinateMappingElement):
# class PhysicalGeometry(metaclass=ABCMeta):
#     def __init__(self, *args, **kwargs):
#     def basis_transformation(self, coordinate_mapping):
#     def basis_evaluation(self, order, ps, entity=None, coordinate_mapping=None):
#         def matvec(table):
#     def point_evaluation(self, order, refcoords, entity=None):
#     def cell_size(self):
#     def jacobian_at(self, point):
#     def detJ_at(self, point):
#     def reference_normals(self):
#     def physical_normals(self):
#     def physical_tangents(self):
#     def physical_edge_lengths(self):
#     def physical_points(self, point_set, entity=None):
#     def physical_vertices(self):
#         M = self.basis_transformation(coordinate_mapping)


import numpy
import FIAT
from gem import Literal, ListTensor
from finat.fiat_elements import ScalarFiatElement
from finat.physically_mapped import PhysicallyMappedElement, Citations





class Argyris(PhysicallyMappedElement, ScalarFiatElement):
    def __init__(self, cell, degree):
        if degree != 5:
            raise ValueError("Degree must be 5 for Argyris element")
        if Citations is not None:

# Path: finat/fiat_elements.py
# class ScalarFiatElement(FiatElement):
#     @property
#     def value_shape(self):
#         return ()
# 
# Path: finat/physically_mapped.py
# class NeedsCoordinateMappingElement(metaclass=ABCMeta):
# class PhysicallyMappedElement(NeedsCoordinateMappingElement):
# class DirectlyDefinedElement(NeedsCoordinateMappingElement):
# class PhysicalGeometry(metaclass=ABCMeta):
#     def __init__(self, *args, **kwargs):
#     def basis_transformation(self, coordinate_mapping):
#     def basis_evaluation(self, order, ps, entity=None, coordinate_mapping=None):
#         def matvec(table):
#     def point_evaluation(self, order, refcoords, entity=None):
#     def cell_size(self):
#     def jacobian_at(self, point):
#     def detJ_at(self, point):
#     def reference_normals(self):
#     def physical_normals(self):
#     def physical_tangents(self):
#     def physical_edge_lengths(self):
#     def physical_points(self, point_set, entity=None):
#     def physical_vertices(self):
#         M = self.basis_transformation(coordinate_mapping)


# Path: finat/argyris.py
import numpy
import FIAT
from gem import Literal, ListTensor
from finat.fiat_elements import ScalarFiatElement
from finat.physically_mapped import PhysicallyMappedElement, Citations






class Argyris(PhysicallyMappedElement, ScalarFiatElement):
    def __init__(self, cell, degree):
        if degree != 5:
            raise ValueError("Degree must be 5 for Argyris element")
        if Citations is not None:

            Citations().register("Argyris1968")