51 double ksi = lcoords.
at(1);
54 answer.
at(1) = ( 1. - ksi ) * 0.5;
55 answer.
at(2) = ( 1. + ksi ) * 0.5;
66 double l2_inv = 0.5 / detJ;
69 answer.
at(1, 1) = -vec.
at(1) * l2_inv;
70 answer.
at(2, 1) = vec.
at(1) * l2_inv;
71 answer.
at(1, 2) = -vec.
at(2) * l2_inv;
72 answer.
at(2, 2) = vec.
at(2) * l2_inv;
73 answer.
at(1, 3) = -vec.
at(3) * l2_inv;
74 answer.
at(2, 3) = vec.
at(3) * l2_inv;
89 double ksi = lcoords.
at(1);
105 answer =
Vec1(2.0 * xvec / l2 - 1.0);
106 answer.
at(1) =
clamp(answer.
at(1), -1.0, 1.0);
121 this->
evalN(answer, lcoords, cellgeo);
128 double l_inv = 1.0 / this->
giveLength(cellgeo);
131 answer.
at(1, 1) = -l_inv;
132 answer.
at(2, 1) = l_inv;
136FEI3dLineLin :: edgeLocal2global(
FloatArray &answer,
int iedge,
151FEI3dLineLin :: computeLocalEdgeMapping(
int iedge)
const
173FEI3dLineLin :: surfaceLocal2global(
FloatArray &answer,
int iedge,
180FEI3dLineLin :: surfaceGiveTransformationJacobian(
int isurf,
const FloatArray &lcoords,
188FEI3dLineLin :: computeLocalSurfaceMapping(
int isurf)
const
200 jacobianMatrix.resize(1, 1);
201 jacobianMatrix.at(1, 1) = 1.0;
204std::unique_ptr<IntegrationRule>
207 auto iRule = std::make_unique<GaussIntegrationRule>(1,
nullptr);
208 int points = iRule->getRequiredNumberOfIntegrationPoints(
_Line,
order + 0);
209 iRule->SetUpPointsOnLine(points, _Unknown);
210 return std::move(iRule);
213std::unique_ptr<IntegrationRule>
void local2global(FloatArray &answer, const FloatArray &lcoords, const FEICellGeometry &cellgeo) const override
double giveTransformationJacobian(const FloatArray &lcoords, const FEICellGeometry &cellgeo) const override
void evalN(FloatArray &answer, const FloatArray &lcoords, const FEICellGeometry &cellgeo) const override
double giveLength(const FEICellGeometry &cellgeo) const
virtual const FloatArray giveVertexCoordinates(int i) const =0
double computeSquaredNorm() const
double dotProduct(const FloatArray &x) const
void beDifferenceOf(const FloatArray &a, const FloatArray &b)
void beScaled(double s, const FloatArray &b)
void add(const FloatArray &src)
void resize(Index rows, Index cols)
void zero()
Zeroes all coefficient of receiver.
double at(std::size_t i, std::size_t j) const
double distance(const FloatArray &x, const FloatArray &y)
static FloatArray Vec1(const double &a)
double clamp(int a, int lower, int upper)
Returns the clamped value of a between upper and lower.