Go to the documentation of this file.
60 double l1 = lcoords.
at(1);
61 double l2 = lcoords.
at(2);
62 double l3 = 1.0 - l1 - l2;
73#define POINT_TOL 1.e-3
86 double detJ = ( x2 * y3 + x1 * y2 + y1 * x3 - x2 * y1 - x3 * y2 - x1 * y3 );
89 answer.
at(1) = ( ( x2 * y3 - x3 * y2 ) + ( y2 - y3 ) * coords.
at(
xind) + ( x3 - x2 ) * coords.
at(
yind) ) / detJ;
90 answer.
at(2) = ( ( x3 * y1 - x1 * y3 ) + ( y3 - y1 ) * coords.
at(
xind) + ( x1 - x3 ) * coords.
at(
yind) ) / detJ;
95 for (
int i = 1; i <= 2; i++ ) {
104 answer.
at(3) = 1. - answer.
at(1) - answer.
at(2);
121 return x1 * ( y2 - y3 ) + x2 * ( -y1 + y3 ) + x3 * ( y1 - y2 );
135 OOFEM_ERROR(
"Not applicable to constant interpolation");
143 answer =
Vec2( 0., 0. );
147FEI2dTrConst :: edgeLocal2global(
FloatArray &answer,
int iedge,
150 FloatArray n =
Vec2( ( 1 - lcoords(0) ) * 0.5, ( 1 + lcoords(0) ) * 0.5 );
161FEI2dTrConst :: computeLocalEdgeMapping(
int iedge)
const
165 }
else if ( iedge == 2 ) {
167 }
else if ( iedge == 3 ) {
170 throw std::range_error(
"invalid edge number");
178 auto nodeA = edgeNodes.
at(1);
179 auto nodeB = edgeNodes.
at(2);
183 return sqrt(dx * dx + dy * dy);
186std::unique_ptr<IntegrationRule>
189 auto iRule = std::make_unique<GaussIntegrationRule>(1,
nullptr);
190 int points = iRule->getRequiredNumberOfIntegrationPoints(
_Triangle,
order + 0);
191 iRule->SetUpPointsOnTriangle(points, _Unknown);
192 return std::move(iRule);
IntArray computeLocalEdgeMapping(int iedge) const override
virtual const FloatArray giveVertexCoordinates(int i) const =0
virtual bool inside(const FloatArray &lcoords) const
void resize(Index rows, Index cols)
void zero()
Zeroes all coefficient of receiver.
static FloatArray Vec2(const double &a, const double &b)
static FloatArray Vec1(const double &a)
This page is part of the
OOFEM-3.0 documentation. Copyright Copyright (C) 1994-2025 Borek Patzak
Bořek Patzák
Project e-mail:
oofem@fsv.cvut.cz
Generated at for OOFEM by
doxygen
1.15.0 written by Dimitri van Heesch,
© 1997-2011