50
52
/// Return a string identifying the finite element
51
53
virtual const char* signature() const
53
return "FiniteElement('Discontinuous Lagrange', Cell('triangle', 1, Space(2)), 0)";
55
return "FiniteElement('Discontinuous Lagrange', Cell('triangle', Space(2)), 0, None)";
56
58
/// Return the cell shape
482
484
/// Return a string identifying the finite element
483
485
virtual const char* signature() const
485
return "FiniteElement('Lagrange', Cell('triangle', 1, Space(2)), 1)";
487
return "FiniteElement('Lagrange', Cell('triangle', Space(2)), 1, None)";
488
490
/// Return the cell shape
1443
1445
/// Return a string identifying the dofmap
1444
1446
virtual const char* signature() const
1446
return "FFC dofmap for FiniteElement('Discontinuous Lagrange', Cell('triangle', 1, Space(2)), 0)";
1448
return "FFC dofmap for FiniteElement('Discontinuous Lagrange', Cell('triangle', Space(2)), 0, None)";
1449
1451
/// Return true iff mesh entities of topological dimension d are needed
1675
1677
/// Return a string identifying the dofmap
1676
1678
virtual const char* signature() const
1678
return "FFC dofmap for FiniteElement('Lagrange', Cell('triangle', 1, Space(2)), 1)";
1680
return "FFC dofmap for FiniteElement('Lagrange', Cell('triangle', Space(2)), 1, None)";
1681
1683
/// Return true iff mesh entities of topological dimension d are needed
1963
1965
// Array of quadrature weights.
1964
static const double W4[4] = {0.15902069, 0.09097931, 0.15902069, 0.09097931};
1965
// Quadrature points on the UFC reference element: (0.17855873, 0.15505103), (0.07503111, 0.64494897), (0.66639025, 0.15505103), (0.28001992, 0.64494897)
1966
static const double W3[3] = {0.16666667, 0.16666667, 0.16666667};
1967
// Quadrature points on the UFC reference element: (0.16666667, 0.16666667), (0.16666667, 0.66666667), (0.66666667, 0.16666667)
1967
1969
// Value of basis functions at quadrature points.
1968
static const double FE0[4][3] = \
1969
{{0.66639025, 0.17855873, 0.15505103},
1970
{0.28001992, 0.07503111, 0.64494897},
1971
{0.17855873, 0.66639025, 0.15505103},
1972
{0.07503111, 0.28001992, 0.64494897}};
1970
static const double FE0[3][3] = \
1971
{{0.66666667, 0.16666667, 0.16666667},
1972
{0.16666667, 0.16666667, 0.66666667},
1973
{0.16666667, 0.66666667, 0.16666667}};
1974
static const double FE0_D01[4][3] = \
1975
static const double FE0_D01[3][3] = \
1975
1976
{{-1.00000000, 0.00000000, 1.00000000},
1976
1977
{-1.00000000, 0.00000000, 1.00000000},
1977
{-1.00000000, 0.00000000, 1.00000000},
1978
1978
{-1.00000000, 0.00000000, 1.00000000}};
1980
static const double FE0_D10[4][3] = \
1980
static const double FE0_D10[3][3] = \
1981
1981
{{-1.00000000, 1.00000000, 0.00000000},
1982
1982
{-1.00000000, 1.00000000, 0.00000000},
1983
{-1.00000000, 1.00000000, 0.00000000},
1984
1983
{-1.00000000, 1.00000000, 0.00000000}};
1986
1985
// Reset values in the element tensor.
1993
1992
// Optimisations: ('eliminate zeros', False), ('ignore ones', False), ('ignore zero tables', False), ('optimisation', False), ('remove zero terms', False)
1995
1994
// Loop quadrature points for integral.
1996
// Number of operations to compute element tensor for following IP loop = 816
1997
for (unsigned int ip = 0; ip < 4; ip++)
1995
// Number of operations to compute element tensor for following IP loop = 612
1996
for (unsigned int ip = 0; ip < 3; ip++)
2000
1999
// Coefficient declarations.
2141
2140
/// Return a string identifying the form
2142
2141
virtual const char* signature() const
2144
return "Form([Integral(Sum(Product(Argument(FiniteElement('Lagrange', Cell('triangle', 1, Space(2)), 1), 0), Argument(FiniteElement('Lagrange', Cell('triangle', 1, Space(2)), 1), 1)), Product(IndexSum(Product(Indexed(ComponentTensor(SpatialDerivative(Argument(FiniteElement('Lagrange', Cell('triangle', 1, Space(2)), 1), 0), MultiIndex((Index(0),), {Index(0): 2})), MultiIndex((Index(0),), {Index(0): 2})), MultiIndex((Index(1),), {Index(1): 2})), Indexed(ComponentTensor(SpatialDerivative(Argument(FiniteElement('Lagrange', Cell('triangle', 1, Space(2)), 1), 1), MultiIndex((Index(2),), {Index(2): 2})), MultiIndex((Index(2),), {Index(2): 2})), MultiIndex((Index(1),), {Index(1): 2}))), MultiIndex((Index(1),), {Index(1): 2})), Product(Coefficient(FiniteElement('Lagrange', Cell('triangle', 1, Space(2)), 1), 0), Constant(Cell('triangle', 1, Space(2)), 1)))), Measure('cell', 0, None))])";
2143
return "Form([Integral(Sum(Product(Argument(FiniteElement('Lagrange', Cell('triangle', Space(2)), 1, None), 0), Argument(FiniteElement('Lagrange', Cell('triangle', Space(2)), 1, None), 1)), Product(IndexSum(Product(Indexed(ComponentTensor(SpatialDerivative(Argument(FiniteElement('Lagrange', Cell('triangle', Space(2)), 1, None), 0), MultiIndex((Index(0),), {Index(0): 2})), MultiIndex((Index(0),), {Index(0): 2})), MultiIndex((Index(1),), {Index(1): 2})), Indexed(ComponentTensor(SpatialDerivative(Argument(FiniteElement('Lagrange', Cell('triangle', Space(2)), 1, None), 1), MultiIndex((Index(2),), {Index(2): 2})), MultiIndex((Index(2),), {Index(2): 2})), MultiIndex((Index(1),), {Index(1): 2}))), MultiIndex((Index(1),), {Index(1): 2})), Product(Coefficient(FiniteElement('Lagrange', Cell('triangle', Space(2)), 1, None), 0), Constant(Cell('triangle', Space(2)), 1)))), Measure('cell', 0, None))])";
2147
2146
/// Return the rank of the global tensor (r)
2297
2296
/// Return a string identifying the form
2298
2297
virtual const char* signature() const
2300
return "Form([Integral(Sum(Product(Argument(FiniteElement('Lagrange', Cell('triangle', 1, Space(2)), 1), 0), Coefficient(FiniteElement('Lagrange', Cell('triangle', 1, Space(2)), 1), 0)), Product(Coefficient(FiniteElement('Lagrange', Cell('triangle', 1, Space(2)), 1), 1), Product(Argument(FiniteElement('Lagrange', Cell('triangle', 1, Space(2)), 1), 0), Constant(Cell('triangle', 1, Space(2)), 2)))), Measure('cell', 0, None))])";
2299
return "Form([Integral(Sum(Product(Argument(FiniteElement('Lagrange', Cell('triangle', Space(2)), 1, None), 0), Coefficient(FiniteElement('Lagrange', Cell('triangle', Space(2)), 1, None), 0)), Product(Argument(FiniteElement('Lagrange', Cell('triangle', Space(2)), 1, None), 0), Product(Coefficient(FiniteElement('Lagrange', Cell('triangle', Space(2)), 1, None), 1), Constant(Cell('triangle', Space(2)), 2)))), Measure('cell', 0, None))])";
2303
2302
/// Return the rank of the global tensor (r)