16 #define TRI3_STORE_COORDS
25 void Initialise (
const NodeList &nlist);
27 BYTE Type ()
const {
return ELID_TRI3QR; }
30 int nNode()
const {
return 3; }
33 int nSide ()
const {
return 3; };
36 int nSideNode (
int )
const {
return 2; };
39 int SideNode (
int side,
int node)
const;
42 const Matrix &Jacobian()
const {
return jac; }
46 double DetJ()
const {
return djac; }
52 Point NodeLocal (
int node)
const;
55 RVector DirectionCosine (
int side, Matrix& jacin);
62 bool LContains (
const Point& loc)
const;
66 bool GContains (
const Point& glob,
const NodeList& nlist)
const;
74 Matrix LocalShapeD (
const Point &loc)
const;
82 Matrix GlobalShapeD (
const NodeList& nlist,
const Point& glob)
const;
86 double IntFFF (
int i,
int j,
int k)
const;
94 void IntFFF (
double &iii,
double &iij,
double &ijk)
const;
101 SymMatrix IntPFF (
const RVector& P)
const;
107 double IntPFF (
int i,
int j,
const RVector& P)
const;
110 double IntFDD (
int i,
int j,
int k)
const
111 {
return (j >= k ? intdd[j][k] : intdd[k][j]) * 0.3333333333; }
115 SymMatrix IntPDD (
const RVector& P)
const
116 {
return intdd * ((P[
Node[0]]+P[
Node[1]]+P[
Node[2]])/3.0); }
122 double IntPDD (
int i,
int j,
const RVector &P)
const {
123 RANGE_CHECK(i >= 0 && i < 3 && j >= 0 && j < 3);
124 return (i >= j ? intdd[i][j] : intdd[j][i]) *
129 SymMatrix BndIntPFF (
const RVector &P)
const
130 {
return intbff * ((P[
Node[0]]+P[
Node[1]]+P[
Node[2]])/3.0); }
134 double BndIntPFF (
int i,
int j,
const RVector &P)
const {
135 RANGE_CHECK(i >= 0 && i < 3 && j >= 0 && j < 3);
136 return (i >= j ? intbff[i][j] : intbff[j][i])
161 int GlobalIntersection (
const NodeList &nlist,
const Point &p1,
173 double ComputeSize (
const NodeList &nlist)
const;
176 SymMatrix ComputeIntFF (
const NodeList &nlist)
const;
180 SymMatrix ComputeIntDD (
const NodeList &nlist)
const;
184 SymMatrix ComputeBndIntFF (
const NodeList& nlist)
const;
197 double intfff_scale[3];
200 #ifdef TRI3_STORE_COORDS
201 double n0x, n0y, n1x, n1y, n2x, n2y;
205 #endif // !__TRI3_QR_H