23 for (
int i = 0; i < 3; i++)
42 if ((m = v_to_v(
indices[0],
indices[1])) != -1 && middle[m] != -1) {
return 1; }
43 if ((m = v_to_v(
indices[1],
indices[2])) != -1 && middle[m] != -1) {
return 1; }
44 if ((m = v_to_v(
indices[2],
indices[0])) != -1 && middle[m] != -1) {
return 1; }
50 for (
int i = 0; i < 3; i++)
61 d[0] = ( (pmat(0,1)-pmat(0,0))*(pmat(0,1)-pmat(0,0)) +
62 (pmat(1,1)-pmat(1,0))*(pmat(1,1)-pmat(1,0)) );
63 d[1] = ( (pmat(0,2)-pmat(0,1))*(pmat(0,2)-pmat(0,1)) +
64 (pmat(1,2)-pmat(1,1))*(pmat(1,2)-pmat(1,1)) );
65 d[2] = ( (pmat(0,2)-pmat(0,0))*(pmat(0,2)-pmat(0,0)) +
66 (pmat(1,2)-pmat(1,0))*(pmat(1,2)-pmat(1,0)) );
71 d[0] += (pmat(2,1)-pmat(2,0))*(pmat(2,1)-pmat(2,0));
72 d[1] += (pmat(2,2)-pmat(2,1))*(pmat(2,2)-pmat(2,1));
73 d[2] += (pmat(2,2)-pmat(2,0))*(pmat(2,2)-pmat(2,0));
77 if (d[0] >= d[2]) { shift = 0; }
79 else if (d[1] >= d[2]) { shift = 1; }
103 int l, L, j, ind[3], i;
106 if ( (l = length[ v_to_v(
indices[1],
indices[2]) ]) > L ) { L = l; j = 1; }
107 if ( (l = length[ v_to_v(
indices[2],
indices[0]) ]) > L ) { L = l; j = 2; }
109 for (i = 0; i < 3; i++)
128 for (
int i = 0; i < 3; i++)
virtual int * GetVertices()
int NeedRefinement(DSTable &v_to_v, int *middle) const
Return 1 if the element needs refinement in order to get conforming mesh.
Data type dense matrix using column-major storage.
static const int edges[3][2]
virtual void MarkEdge(DenseMatrix &pmat)
int Height() const
Get the height (size of output) of the Operator. Synonym with NumRows.
virtual void SetVertices(const int *ind)
Set the vertices according to the given input.
Class for linear FE on triangle.
int attribute
Element's attribute (specifying material property, etc).
void SetSize(int nsize)
Change logical size of the array, keep existing entries.
Linear2DFiniteElement TriangleFE
Abstract data type element.