52 OOFEM_ERROR(
"FEI3dTrLin :: evaldNdx - Not supported");
87 this->
evalN(n, lcoords, cellgeo);
89 for (
int i = 1; i <= 3; ++i ) {
94 #define POINT_TOL 1.e-3 98 OOFEM_ERROR(
"FEI3dTrLin :: global2local - Not supported");
107 OOFEM_ERROR(
"FEI3dTrLin :: giveJacobianMatrixAt - Not supported");
114 double xi = lcoords.
at(1);
116 answer.
at(1) = ( 1. - xi ) * 0.5;
117 answer.
at(2) = ( 1. + xi ) * 0.5;
126 OOFEM_ERROR(
"FEI3dTrLin :: edgeEvaldNdx - Not supported");
144 this->
edgeEvalN(N, iedge, lcoords, cellgeo);
147 for (
int i = 0; i < N.
giveSize(); ++i ) {
159 OOFEM_ERROR(
"FEI3dTrLin :: edgeGiveTransformationJacobian - Not supported");
169 edgeNodes = { 1, 2 };
171 }
else if ( iedge == 2 ) {
172 edgeNodes = { 2, 3 };
174 }
else if ( iedge == 3 ) {
175 edgeNodes = { 3, 1 };
187 OOFEM_ERROR(
"FEI3dTrLin :: edgeComputeLength - Not supported");
195 answer.
at(1) = lcoords.
at(1);
196 answer.
at(2) = lcoords.
at(2);
197 answer.
at(3) = 1. - lcoords.
at(1) - lcoords.
at(2);
209 for (
int i = 1; i <= 3; ++i ) {
210 answer.
at(i, 1) = dndxi.at(i);
211 answer.
at(i, 2) = dndeta.
at(i);
226 for (
int i = 0; i < N.
giveSize(); ++i ) {
235 OOFEM_ERROR(
"FEI3dTrLin :: surfaceEvaldNdx - Not supported");
247 for (
int i = 0; i < 3; ++i ) {
273 jacobianMatrix.
resize(3, 3);
274 jacobianMatrix.
at(1, 1) = G1.
at(1);
275 jacobianMatrix.
at(1, 2) = G2.
at(1);
276 jacobianMatrix.
at(1, 3) = G3.
at(1);
277 jacobianMatrix.
at(2, 1) = G1.
at(2);
278 jacobianMatrix.
at(2, 2) = G2.
at(2);
279 jacobianMatrix.
at(2, 3) = G3.
at(2);
280 jacobianMatrix.
at(3, 1) = G1.
at(3);
281 jacobianMatrix.
at(3, 2) = G2.
at(3);
282 jacobianMatrix.
at(3, 3) = G3.
at(3);
288 OOFEM_ERROR(
"FEI3dTrLin :: surfaceGiveTransformationJacobian - Not supported yet");
313 OOFEM_ERROR(
"FEI3dTrLin :: giveBoundaryIntegrationRule - Not supported");
virtual void evaldNdxi(FloatMatrix &answer, const FloatArray &lcoords, const FEICellGeometry &cellgeo)
Evaluates the matrix of derivatives of interpolation functions (shape functions) at given point...
virtual void surfaceEvaldNdx(FloatMatrix &answer, int isurf, const FloatArray &lcoords, const FEICellGeometry &cellgeo)
Evaluates the matrix of derivatives of edge interpolation functions (shape functions) at given point...
void beVectorProductOf(const FloatArray &v1, const FloatArray &v2)
Computes vector product (or cross product) of vectors given as parameters, , and stores the result in...
double edgeComputeLength(IntArray &edgeNodes, const FEICellGeometry &cellgeo)
double & at(int i)
Coefficient access function.
virtual const FloatArray * giveVertexCoordinates(int i) const =0
virtual IntegrationRule * giveIntegrationRule(int order)
Sets up a suitable integration rule for numerical integrating over volume.
Class representing a general abstraction for cell geometry.
virtual void edgeEvalN(FloatArray &answer, int iedge, const FloatArray &lcoords, const FEICellGeometry &cellgeo)
Evaluates the array of edge interpolation functions (shape functions) at given point.
Class implementing an array of integers.
virtual void local2global(FloatArray &answer, const FloatArray &lcoords, const FEICellGeometry &cellgeo)
Evaluates global coordinates from given local ones.
Abstract base class representing integration rule.
virtual void edgeEvaldNdx(FloatMatrix &answer, int iedge, const FloatArray &lcoords, const FEICellGeometry &cellgeo)
Evaluates the matrix of derivatives of edge interpolation functions (shape functions) at given point...
virtual double edgeGiveTransformationJacobian(int iedge, const FloatArray &lcoords, const FEICellGeometry &cellgeo)
Evaluates the edge jacobian of transformation between local and global coordinates.
void surfaceEvaldNdxi(FloatMatrix &answer, const FloatArray &lcoords)
virtual void evalN(FloatArray &answer, const FloatArray &lcoords, const FEICellGeometry &cellgeo)
Evaluates the array of interpolation functions (shape functions) at given point.
virtual double evaldNdx(FloatMatrix &answer, const FloatArray &lcoords, const FEICellGeometry &cellgeo)
Evaluates the matrix of derivatives of interpolation functions (shape functions) at given point...
virtual void computeLocalEdgeMapping(IntArray &edgeNodes, int iedge)
void giveDerivativeXi(FloatArray &n, const FloatArray &lcoords)
virtual void computeLocalSurfaceMapping(IntArray &edgeNodes, int iedge)
virtual double surfaceEvalNormal(FloatArray &answer, int isurf, const FloatArray &lcoords, const FEICellGeometry &cellgeo)
Evaluates the normal out of the surface at given point.
virtual int global2local(FloatArray &answer, const FloatArray &lcoords, const FEICellGeometry &cellgeo)
Evaluates local coordinates from given global ones.
double giveArea(const FEICellGeometry &cellgeo) const
double at(int i, int j) const
Coefficient access function.
void surfaceEvalBaseVectorsAt(FloatArray &G1, FloatArray &G2, const FloatArray &lcoords, const FEICellGeometry &cellgeo)
virtual void edgeEvaldNdxi(FloatArray &answer, int iedge, const FloatArray &lcoords, const FEICellGeometry &cellgeo)
Evaluates the matrix of derivatives of edge interpolation functions (shape functions) at given point...
virtual double surfaceGiveTransformationJacobian(int isurf, const FloatArray &lcoords, const FEICellGeometry &cellgeo)
Evaluates the edge jacobian of transformation between local and global coordinates.
virtual void surfaceLocal2global(FloatArray &answer, int isurf, const FloatArray &lcoords, const FEICellGeometry &cellgeo)
Evaluates edge global coordinates from given local ones.
Class representing vector of real numbers.
Implementation of matrix containing floating point numbers.
double computeNorm() const
Computes the norm (or length) of the vector.
void resize(int rows, int cols)
Checks size of receiver towards requested bounds.
virtual int getRequiredNumberOfIntegrationPoints(integrationDomain dType, int approxOrder)
Abstract service.
void times(double s)
Multiplies receiver with scalar.
virtual int SetUpPointsOnTriangle(int, MaterialMode mode)
Sets up receiver's integration points on triangular (area coords) integration domain.
virtual void edgeLocal2global(FloatArray &answer, int iedge, const FloatArray &lcoords, const FEICellGeometry &cellgeo)
Evaluates edge global coordinates from given local ones.
int giveSize() const
Returns the size of receiver.
virtual void surfaceEvalN(FloatArray &answer, int isurf, const FloatArray &lcoords, const FEICellGeometry &cellgeo)
Evaluates the array of edge interpolation functions (shape functions) at given point.
the oofem namespace is to define a context or scope in which all oofem names are defined.
virtual IntegrationRule * giveBoundaryIntegrationRule(int order, int boundary)
Sets up a suitable integration rule for integrating over the requested boundary.
virtual void surfaceGiveJacobianMatrixAt(FloatMatrix &jacobianMatrix, const FloatArray &lcoords, const FEICellGeometry &cellgeo)
virtual void giveJacobianMatrixAt(FloatMatrix &jacobianMatrix, const FloatArray &lcoords, const FEICellGeometry &cellgeo)
Gives the jacobian matrix at the local coordinates.
void add(const FloatArray &src)
Adds array src to receiver.
Class representing Gaussian-quadrature integration rule.
void resize(int s)
Resizes receiver towards requested size.
void giveDerivativeEta(FloatArray &n, const FloatArray &lcoords)