1
// This code conforms with the UFC specification version 2.0.5
2
// and was automatically generated by FFC version 1.0.0+.
1
// This code conforms with the UFC specification version 2.1.0+
2
// and was automatically generated by FFC version 1.1.0+.
4
4
// This code was generated with the following parameters:
52
52
/// Return a string identifying the finite element
53
53
virtual const char* signature() const
55
return "FiniteElement('Real', Cell('triangle', Space(2)), 0, None)";
55
return "FiniteElement('Real', Domain(Cell('triangle', 2), 'triangle_multiverse', 2, 2), 0, None)";
58
58
/// Return the cell shape
64
64
/// Return the topological dimension of the cell shape
65
virtual unsigned int topological_dimension() const
65
virtual std::size_t topological_dimension() const
70
70
/// Return the geometric dimension of the cell shape
71
virtual unsigned int geometric_dimension() const
71
virtual std::size_t geometric_dimension() const
76
76
/// Return the dimension of the finite element function space
77
virtual unsigned int space_dimension() const
77
virtual std::size_t space_dimension() const
82
82
/// Return the rank of the value space
83
virtual unsigned int value_rank() const
83
virtual std::size_t value_rank() const
88
88
/// Return the dimension of the value space for axis i
89
virtual unsigned int value_dimension(unsigned int i) const
89
virtual std::size_t value_dimension(std::size_t i) const
94
94
/// Evaluate basis function i at given point in cell
95
virtual void evaluate_basis(unsigned int i,
95
virtual void evaluate_basis(std::size_t i,
97
97
const double* coordinates,
98
98
const ufc::cell& c) const
143
143
/// Evaluate order n derivatives of basis function i at given point in cell
144
virtual void evaluate_basis_derivatives(unsigned int i,
144
virtual void evaluate_basis_derivatives(std::size_t i,
147
147
const double* coordinates,
148
148
const ufc::cell& c) const
157
157
const double J_11 = x[2][1] - x[0][1];
159
159
// Compute determinant of Jacobian
160
double detJ = J_00*J_11 - J_01*J_10;
160
const double detJ = J_00*J_11 - J_01*J_10;
162
162
// Compute inverse of Jacobian
163
163
const double K_00 = J_11 / detJ;
366
366
/// Evaluate order n derivatives of all basis functions at given point in cell
367
virtual void evaluate_basis_derivatives_all(unsigned int n,
367
virtual void evaluate_basis_derivatives_all(std::size_t n,
369
369
const double* coordinates,
370
370
const ufc::cell& c) const
376
376
/// Evaluate linear functional for dof i on the function f
377
virtual double evaluate_dof(unsigned int i,
377
virtual double evaluate_dof(std::size_t i,
378
378
const ufc::function& f,
379
379
const ufc::cell& c) const
446
446
/// Return the number of sub elements (for a mixed element)
447
virtual unsigned int num_sub_elements() const
447
virtual std::size_t num_sub_elements() const
452
452
/// Create a new finite element for sub element i (for a mixed element)
453
virtual ufc::finite_element* create_sub_element(unsigned int i) const
453
virtual ufc::finite_element* create_sub_element(std::size_t i) const
484
484
/// Return a string identifying the finite element
485
485
virtual const char* signature() const
487
return "FiniteElement('Lagrange', Cell('triangle', Space(2)), 1, None)";
487
return "FiniteElement('Lagrange', Domain(Cell('triangle', 2), 'triangle_multiverse', 2, 2), 1, None)";
490
490
/// Return the cell shape
496
496
/// Return the topological dimension of the cell shape
497
virtual unsigned int topological_dimension() const
497
virtual std::size_t topological_dimension() const
502
502
/// Return the geometric dimension of the cell shape
503
virtual unsigned int geometric_dimension() const
503
virtual std::size_t geometric_dimension() const
508
508
/// Return the dimension of the finite element function space
509
virtual unsigned int space_dimension() const
509
virtual std::size_t space_dimension() const
514
514
/// Return the rank of the value space
515
virtual unsigned int value_rank() const
515
virtual std::size_t value_rank() const
520
520
/// Return the dimension of the value space for axis i
521
virtual unsigned int value_dimension(unsigned int i) const
521
virtual std::size_t value_dimension(std::size_t i) const
526
526
/// Evaluate basis function i at given point in cell
527
virtual void evaluate_basis(unsigned int i,
527
virtual void evaluate_basis(std::size_t i,
529
529
const double* coordinates,
530
530
const ufc::cell& c) const
539
539
const double J_11 = x[2][1] - x[0][1];
541
541
// Compute determinant of Jacobian
542
double detJ = J_00*J_11 - J_01*J_10;
542
const double detJ = J_00*J_11 - J_01*J_10;
544
544
// Compute inverse of Jacobian
662
662
/// Evaluate order n derivatives of basis function i at given point in cell
663
virtual void evaluate_basis_derivatives(unsigned int i,
663
virtual void evaluate_basis_derivatives(std::size_t i,
666
666
const double* coordinates,
667
667
const ufc::cell& c) const
676
676
const double J_11 = x[2][1] - x[0][1];
678
678
// Compute determinant of Jacobian
679
double detJ = J_00*J_11 - J_01*J_10;
679
const double detJ = J_00*J_11 - J_01*J_10;
681
681
// Compute inverse of Jacobian
682
682
const double K_00 = J_11 / detJ;
1203
1203
/// Evaluate order n derivatives of all basis functions at given point in cell
1204
virtual void evaluate_basis_derivatives_all(unsigned int n,
1204
virtual void evaluate_basis_derivatives_all(std::size_t n,
1205
1205
double* values,
1206
1206
const double* coordinates,
1207
1207
const ufc::cell& c) const
1237
1237
/// Evaluate linear functional for dof i on the function f
1238
virtual double evaluate_dof(unsigned int i,
1238
virtual double evaluate_dof(std::size_t i,
1239
1239
const ufc::function& f,
1240
1240
const ufc::cell& c) const
1331
1331
/// Return the number of sub elements (for a mixed element)
1332
virtual unsigned int num_sub_elements() const
1332
virtual std::size_t num_sub_elements() const
1337
1337
/// Create a new finite element for sub element i (for a mixed element)
1338
virtual ufc::finite_element* create_sub_element(unsigned int i) const
1338
virtual ufc::finite_element* create_sub_element(std::size_t i) const
1373
1370
/// Return a string identifying the dofmap
1374
1371
virtual const char* signature() const
1376
return "FFC dofmap for FiniteElement('Real', Cell('triangle', Space(2)), 0, None)";
1373
return "FFC dofmap for FiniteElement('Real', Domain(Cell('triangle', 2), 'triangle_multiverse', 2, 2), 0, None)";
1379
1376
/// Return true iff mesh entities of topological dimension d are needed
1380
virtual bool needs_mesh_entities(unsigned int d) const
1377
virtual bool needs_mesh_entities(std::size_t d) const
1404
/// Initialize dofmap for mesh (return true iff init_cell() is needed)
1405
virtual bool init_mesh(const ufc::mesh& m)
1407
_global_dimension = 1;
1411
/// Initialize dofmap for given cell
1412
virtual void init_cell(const ufc::mesh& m,
1418
/// Finish initialization of dofmap for cells
1419
virtual void init_cell_finalize()
1424
1401
/// Return the topological dimension of the associated cell shape
1425
virtual unsigned int topological_dimension() const
1402
virtual std::size_t topological_dimension() const
1430
1407
/// Return the geometric dimension of the associated cell shape
1431
virtual unsigned int geometric_dimension() const
1408
virtual std::size_t geometric_dimension() const
1436
1413
/// Return the dimension of the global finite element function space
1437
virtual unsigned int global_dimension() const
1414
virtual std::size_t global_dimension(const std::vector<std::size_t>&
1415
num_global_entities) const
1439
return _global_dimension;
1442
1420
/// Return the dimension of the local finite element function space for a cell
1443
virtual unsigned int local_dimension(const ufc::cell& c) const
1421
virtual std::size_t local_dimension(const ufc::cell& c) const
1448
1426
/// Return the maximum dimension of the local finite element function space
1449
virtual unsigned int max_local_dimension() const
1427
virtual std::size_t max_local_dimension() const
1454
1432
/// Return the number of dofs on each cell facet
1455
virtual unsigned int num_facet_dofs() const
1433
virtual std::size_t num_facet_dofs() const
1460
1438
/// Return the number of dofs associated with each cell entity of dimension d
1461
virtual unsigned int num_entity_dofs(unsigned int d) const
1439
virtual std::size_t num_entity_dofs(std::size_t d) const
1485
1463
/// Tabulate the local-to-global mapping of dofs on a cell
1486
virtual void tabulate_dofs(unsigned int* dofs,
1464
virtual void tabulate_dofs(std::size_t* dofs,
1465
const std::vector<std::size_t>& num_global_entities,
1488
1466
const ufc::cell& c) const
1493
1471
/// Tabulate the local-to-local mapping from facet dofs to cell dofs
1494
virtual void tabulate_facet_dofs(unsigned int* dofs,
1495
unsigned int facet) const
1472
virtual void tabulate_facet_dofs(std::size_t* dofs,
1473
std::size_t facet) const
1518
1496
/// Tabulate the local-to-local mapping of dofs on entity (d, i)
1519
virtual void tabulate_entity_dofs(unsigned int* dofs,
1520
unsigned int d, unsigned int i) const
1497
virtual void tabulate_entity_dofs(std::size_t* dofs,
1498
std::size_t d, std::size_t i) const
1563
1541
/// Return the number of sub dofmaps (for a mixed element)
1564
virtual unsigned int num_sub_dofmaps() const
1542
virtual std::size_t num_sub_dofmaps() const
1569
1547
/// Create a new dofmap for sub dofmap i (for a mixed element)
1570
virtual ufc::dofmap* create_sub_dofmap(unsigned int i) const
1548
virtual ufc::dofmap* create_sub_dofmap(std::size_t i) const
1605
1580
/// Return a string identifying the dofmap
1606
1581
virtual const char* signature() const
1608
return "FFC dofmap for FiniteElement('Lagrange', Cell('triangle', Space(2)), 1, None)";
1583
return "FFC dofmap for FiniteElement('Lagrange', Domain(Cell('triangle', 2), 'triangle_multiverse', 2, 2), 1, None)";
1611
1586
/// Return true iff mesh entities of topological dimension d are needed
1612
virtual bool needs_mesh_entities(unsigned int d) const
1587
virtual bool needs_mesh_entities(std::size_t d) const
1636
/// Initialize dofmap for mesh (return true iff init_cell() is needed)
1637
virtual bool init_mesh(const ufc::mesh& m)
1639
_global_dimension = m.num_entities[0];
1643
/// Initialize dofmap for given cell
1644
virtual void init_cell(const ufc::mesh& m,
1650
/// Finish initialization of dofmap for cells
1651
virtual void init_cell_finalize()
1656
1611
/// Return the topological dimension of the associated cell shape
1657
virtual unsigned int topological_dimension() const
1612
virtual std::size_t topological_dimension() const
1662
1617
/// Return the geometric dimension of the associated cell shape
1663
virtual unsigned int geometric_dimension() const
1618
virtual std::size_t geometric_dimension() const
1668
1623
/// Return the dimension of the global finite element function space
1669
virtual unsigned int global_dimension() const
1624
virtual std::size_t global_dimension(const std::vector<std::size_t>&
1625
num_global_entities) const
1671
return _global_dimension;
1627
return num_global_entities[0];
1674
1630
/// Return the dimension of the local finite element function space for a cell
1675
virtual unsigned int local_dimension(const ufc::cell& c) const
1631
virtual std::size_t local_dimension(const ufc::cell& c) const
1680
1636
/// Return the maximum dimension of the local finite element function space
1681
virtual unsigned int max_local_dimension() const
1637
virtual std::size_t max_local_dimension() const
1686
1642
/// Return the number of dofs on each cell facet
1687
virtual unsigned int num_facet_dofs() const
1643
virtual std::size_t num_facet_dofs() const
1692
1648
/// Return the number of dofs associated with each cell entity of dimension d
1693
virtual unsigned int num_entity_dofs(unsigned int d) const
1649
virtual std::size_t num_entity_dofs(std::size_t d) const
1717
1673
/// Tabulate the local-to-global mapping of dofs on a cell
1718
virtual void tabulate_dofs(unsigned int* dofs,
1674
virtual void tabulate_dofs(std::size_t* dofs,
1675
const std::vector<std::size_t>& num_global_entities,
1720
1676
const ufc::cell& c) const
1722
1678
dofs[0] = c.entity_indices[0][0];
1727
1683
/// Tabulate the local-to-local mapping from facet dofs to cell dofs
1728
virtual void tabulate_facet_dofs(unsigned int* dofs,
1729
unsigned int facet) const
1684
virtual void tabulate_facet_dofs(std::size_t* dofs,
1685
std::size_t facet) const
1755
1711
/// Tabulate the local-to-local mapping of dofs on entity (d, i)
1756
virtual void tabulate_entity_dofs(unsigned int* dofs,
1757
unsigned int d, unsigned int i) const
1712
virtual void tabulate_entity_dofs(std::size_t* dofs,
1713
std::size_t d, std::size_t i) const
1822
1778
/// Return the number of sub dofmaps (for a mixed element)
1823
virtual unsigned int num_sub_dofmaps() const
1779
virtual std::size_t num_sub_dofmaps() const
1828
1784
/// Create a new dofmap for sub dofmap i (for a mixed element)
1829
virtual ufc::dofmap* create_sub_dofmap(unsigned int i) const
1785
virtual ufc::dofmap* create_sub_dofmap(std::size_t i) const
1874
1830
const double J_11 = x[2][1] - x[0][1];
1876
1832
// Compute determinant of Jacobian
1877
double detJ = J_00*J_11 - J_01*J_10;
1833
const double detJ = J_00*J_11 - J_01*J_10;
1879
1835
// Compute inverse of Jacobian
1880
1836
const double K_00 = J_11 / detJ;
1952
1908
virtual void tabulate_tensor(double* A,
1953
1909
const double * const * w,
1954
1910
const ufc::cell& c,
1955
unsigned int num_quadrature_points,
1911
std::size_t num_quadrature_points,
1956
1912
const double * const * quadrature_points,
1957
1913
const double* quadrature_weights) const
1996
1952
const double J_11 = x[2][1] - x[0][1];
1998
1954
// Compute determinant of Jacobian
1999
double detJ = J_00*J_11 - J_01*J_10;
1955
const double detJ = J_00*J_11 - J_01*J_10;
2001
1957
// Compute inverse of Jacobian
2003
1959
// Set scale factor
2004
1960
const double det = std::abs(detJ);
2008
// Compute circumradius, assuming triangle is embedded in 2D.
1964
// Compute circumradius of triangle in 2D.
2059
2015
virtual void tabulate_tensor(double* A,
2060
2016
const double * const * w,
2061
2017
const ufc::cell& c,
2062
unsigned int num_quadrature_points,
2018
std::size_t num_quadrature_points,
2063
2019
const double * const * quadrature_points,
2064
2020
const double* quadrature_weights) const
2102
2058
/// Return a string identifying the form
2103
2059
virtual const char* signature() const
2105
return "d7ce67578010431b29dcf0d6730b98c610d813d9f437eb34a9801aad65b212c1a6250b60b42feb23dc9bc9a5ba83e6317231688dea5e2ed094e2cf8eb1ee8fc7";
2061
return "beabc8cbfdbde2305229a06a22fc65169df459942208b7edbad5638470484817dd7b24adf340e04be94824a800269900212bbcd0e8e41c86261007b33e4bb8d6";
2108
2064
/// Return the rank of the global tensor (r)
2109
virtual unsigned int rank() const
2065
virtual std::size_t rank() const
2114
2070
/// Return the number of coefficients (n)
2115
virtual unsigned int num_coefficients() const
2071
virtual std::size_t num_coefficients() const
2120
2076
/// Return the number of cell domains
2121
virtual unsigned int num_cell_domains() const
2077
virtual std::size_t num_cell_domains() const
2126
2082
/// Return the number of exterior facet domains
2127
virtual unsigned int num_exterior_facet_domains() const
2083
virtual std::size_t num_exterior_facet_domains() const
2132
2088
/// Return the number of interior facet domains
2133
virtual unsigned int num_interior_facet_domains() const
2089
virtual std::size_t num_interior_facet_domains() const
2094
/// Return whether the form has any cell integrals
2095
virtual bool has_cell_integrals() const
2100
/// Return whether the form has any exterior facet integrals
2101
virtual bool has_exterior_facet_integrals() const
2106
/// Return whether the form has any interior facet integrals
2107
virtual bool has_interior_facet_integrals() const
2138
2112
/// Create a new finite element for argument function i
2139
virtual ufc::finite_element* create_finite_element(unsigned int i) const
2113
virtual ufc::finite_element* create_finite_element(std::size_t i) const
2213
2187
/// Create a new exterior facet integral on sub domain i
2214
virtual ufc::exterior_facet_integral* create_exterior_facet_integral(unsigned int i) const
2188
virtual ufc::exterior_facet_integral* create_exterior_facet_integral(std::size_t i) const
2219
2193
/// Create a new interior facet integral on sub domain i
2220
virtual ufc::interior_facet_integral* create_interior_facet_integral(unsigned int i) const
2194
virtual ufc::interior_facet_integral* create_interior_facet_integral(std::size_t i) const
2199
/// Create a new cell integral on everywhere else
2200
virtual ufc::cell_integral* create_default_cell_integral() const
2205
/// Create a new exterior facet integral on everywhere else
2206
virtual ufc::exterior_facet_integral* create_default_exterior_facet_integral() const
2211
/// Create a new interior facet integral on everywhere else
2212
virtual ufc::interior_facet_integral* create_default_interior_facet_integral() const
2258
2250
/// Return a string identifying the form
2259
2251
virtual const char* signature() const
2261
return "78d1a260514bb7770a5d53606c2ed59bb8d1f39ba5a49dbae5bb974f831fe896b7686c1d1c02adf1adf79c243ef7a303e7406059f122faba024d503d76b7cad1";
2253
return "b90e8813365e5fa06e1e0b75dbbe1a4a7729cc03a1dfd43caa3296bc2908db84d3aac4f9e1220007e11927ad07707d2e9266c2d8d4742a78eecc84fc6831ede1";
2264
2256
/// Return the rank of the global tensor (r)
2265
virtual unsigned int rank() const
2257
virtual std::size_t rank() const
2270
2262
/// Return the number of coefficients (n)
2271
virtual unsigned int num_coefficients() const
2263
virtual std::size_t num_coefficients() const
2276
2268
/// Return the number of cell domains
2277
virtual unsigned int num_cell_domains() const
2269
virtual std::size_t num_cell_domains() const
2282
2274
/// Return the number of exterior facet domains
2283
virtual unsigned int num_exterior_facet_domains() const
2275
virtual std::size_t num_exterior_facet_domains() const
2288
2280
/// Return the number of interior facet domains
2289
virtual unsigned int num_interior_facet_domains() const
2281
virtual std::size_t num_interior_facet_domains() const
2286
/// Return whether the form has any cell integrals
2287
virtual bool has_cell_integrals() const
2292
/// Return whether the form has any exterior facet integrals
2293
virtual bool has_exterior_facet_integrals() const
2298
/// Return whether the form has any interior facet integrals
2299
virtual bool has_interior_facet_integrals() const
2294
2304
/// Create a new finite element for argument function i
2295
virtual ufc::finite_element* create_finite_element(unsigned int i) const
2305
virtual ufc::finite_element* create_finite_element(std::size_t i) const
2369
2379
/// Create a new exterior facet integral on sub domain i
2370
virtual ufc::exterior_facet_integral* create_exterior_facet_integral(unsigned int i) const
2380
virtual ufc::exterior_facet_integral* create_exterior_facet_integral(std::size_t i) const
2375
2385
/// Create a new interior facet integral on sub domain i
2376
virtual ufc::interior_facet_integral* create_interior_facet_integral(unsigned int i) const
2386
virtual ufc::interior_facet_integral* create_interior_facet_integral(std::size_t i) const
2391
/// Create a new cell integral on everywhere else
2392
virtual ufc::cell_integral* create_default_cell_integral() const
2397
/// Create a new exterior facet integral on everywhere else
2398
virtual ufc::exterior_facet_integral* create_default_exterior_facet_integral() const
2403
/// Create a new interior facet integral on everywhere else
2404
virtual ufc::interior_facet_integral* create_default_interior_facet_integral() const