75 if ( mtrx == ExternalForcesVector ) {
127 answer.
resize(1, numNodes);
152 answer.
at(1, 1) = dN.
at(1, 1);
153 answer.
at(1, 2) = dN.
at(2, 1);
154 answer.
at(1, 3) = dN.
at(3, 1);
155 answer.
at(1, 4) = -tc.
at(2);
157 answer.
at(2, 1) = dN.
at(1, 2);
158 answer.
at(2, 2) = dN.
at(2, 2);
159 answer.
at(2, 3) = dN.
at(3, 2);
160 answer.
at(2, 4) = tc.
at(1);
172 answer.
at(1) = c.
at(1) - CG.
at(CGnumber, 1);
173 answer.
at(2) = c.
at(2) - CG.
at(CGnumber, 2);
197 double determinant, weight, volume;
200 volume = determinant * weight;
216 }
else if ( iEdge == 2 ) {
219 }
else if ( iEdge == 3 ) {
237 for (
int iEdge = 1; iEdge < 4; iEdge++ ) {
245 double dx = coord2->
at(1) - coord1->
at(1);
246 double dy = coord2->
at(2) - coord1->
at(2);
248 double x1 = coord1->
at(1);
249 double y1 = coord1->
at(2);
251 double x2 = coord2->
at(1);
252 double y2 = coord2->
at(2);
268 double f1 = ( dx * x2 + dy * y2 ) / 3.0 + ( dx * x1 + dy * y1 ) / 6.0;
269 double f2 = ( dx * x1 + dy * y1 ) / 3.0 + ( dx * x2 + dy * y2 ) / 6.0;
277 reducedAnswer.
at(1) = f1 * theta;
278 reducedAnswer.
at(2) = f2 * theta;
304 if ( inode > 0 && inode < 4 ) {
367 OOFEM_ERROR(
"ZZNodalRecoveryMI_computeNNMatrix: Element %d not providing interpolation", elem->
giveNumber() );
371 fullAnswer.
resize(size, size);
380 pok += ( n.
at(1) * dV );
387 for (
int i = 1; i <= 3; i++ ) {
389 for (
int j = 1; j <= size; j++ ) {
390 sum += fullAnswer.
at(i, j);
414 if ( !elem->
giveIPValue(stressVector, gp, type, tStep) ) {
426 answer.
at(4, i) = 0.0;
CrossSection * giveCrossSection()
InternalStateType
Type representing the physical meaning of element or constitutive model internal variable.
virtual void postInitialize()
Performs post initialization steps.
int giveNumberOfColumns() const
Returns number of columns of receiver.
virtual void postInitialize()
Performs post initialization steps.
IntArray dofManArray
Array containing dofmanager numbers.
int giveWarpingNodeNumber() const
virtual int giveIPValue(FloatArray &answer, GaussPoint *gp, InternalStateType type, TimeStep *tStep)
Returns the integration point corresponding value in full form.
virtual DofManager * giveInternalDofManager(int i) const
Returns i-th internal element dof manager of the receiver.
virtual void evalN(FloatArray &answer, const FloatArray &lcoords, const FEICellGeometry &cellgeo)=0
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 IntegrationRule * giveDefaultIntegrationRulePtr()
Access method for default integration rule.
virtual void computeFirstMomentOfArea(FloatArray &answer)
virtual bool ZZNodalRecoveryMI_computeNValProduct(FloatMatrix &answer, InternalStateType type, TimeStep *tStep)
Computes the element contribution to , where is quantity to be recovered (for example stress or stra...
virtual Element * ZZNodalRecoveryMI_giveElement()
void getCenterOfGravity(FloatMatrix &answer)
virtual int SpatialLocalizerI_containsPoint(const FloatArray &coords)
Checks if element contains specified coordinate.
The element interface required by ZZNodalRecoveryModel.
virtual IRResultType initializeFrom(InputRecord *ir)
Initializes receiver according to object description stored in input record.
This class implements the free warping engineering problem (evaluation of the warping function and to...
description of warping cross section...
double & at(int i)
Coefficient access function.
virtual void ZZNodalRecoveryMI_computeNNMatrix(FloatArray &answer, InternalStateType type)
Computes the element contribution to term.
ValueModeType
Type representing the mode of UnknownType or CharType, or similar types.
virtual FEInterpolation * giveInterpolation() const
virtual double giveUnknown(ValueModeType mode, TimeStep *tStep)=0
The key method of class Dof.
EngngModel * giveEngngModel()
Returns engineering model to which receiver is associated.
virtual double edgeGiveTransformationJacobian(int iedge, const FloatArray &lcoords, const FEICellGeometry &cellgeo)
Evaluates the edge Jacobian of transformation between local and global coordinates.
Abstract base class for all finite elements.
Base class for dof managers.
Element * giveElement()
Returns corresponding element to receiver.
void plusDyadUnsym(const FloatArray &a, const FloatArray &b, double dV)
Adds to the receiver the product .
virtual void giveEdgeDofMapping(IntArray &answer, int iEdge) const
Assembles edge dof mapping mask, which provides mapping between edge local DOFs and "global" element ...
Class implementing an array of integers.
int & at(int i)
Coefficient access function.
MatResponseMode
Describes the character of characteristic material matrix.
virtual void giveCharacteristicVector(FloatArray &answer, CharType mtrx, ValueModeType mode, TimeStep *tStep)
Computes characteristic vector of receiver of requested type in given time step.
virtual void computeGaussPoints()
Initializes the array of integration rules member variable.
virtual int giveNumberOfDofManagers() const
virtual void giveCharMaterialStiffnessMatrix(FloatMatrix &answer, MatResponseMode mode, GaussPoint *gp, TimeStep *tStep)=0
Computes the stiffness matrix of receiver in given integration point, respecting its history...
virtual FEInterpolation * giveInterpolation() const
Abstract base class representing integration rule.
Class representing a general abstraction for finite element interpolation class.
Abstract base class for all "structural" finite elements.
virtual double computeVolumeAround(GaussPoint *gp)
Returns volume related to given integration point.
virtual void computeConstitutiveMatrixAt(FloatMatrix &answer, MatResponseMode rMode, GaussPoint *gp, TimeStep *tStep)
Computes constitutive matrix of receiver.
virtual void giveDofManDofIDMask(int inode, IntArray &answer) const
Returns dofmanager dof mask for node.
virtual void giveRealStress_Warping(FloatArray &answer, GaussPoint *gp, const FloatArray &reducedStrain, TimeStep *tStep)=0
Tr_Warp(int n, Domain *d)
virtual void computeNmatrixAt(const FloatArray &iLocCoord, FloatMatrix &answer)
Computes interpolation matrix for element unknowns.
virtual double giveWeight()
Returns integration weight of receiver.
void resizeWithData(int, int)
Checks size of receiver towards requested bounds.
StructuralCrossSection * giveStructuralCrossSection()
Helper function which returns the structural cross-section for the element.
void transformCoordinates(FloatArray &answer, FloatArray &c, const int CGnumber)
virtual void computeStressVector(FloatArray &answer, const FloatArray &strain, GaussPoint *gp, TimeStep *tStep)
Computes the stress vector of receiver at given integration point, at time step tStep.
Wrapper around element definition to provide FEICellGeometry interface.
void resizeWithValues(int n, int allocChunk=0)
Checks size of receiver towards requested bounds.
double at(int i, int j) const
Coefficient access function.
void resize(int n)
Checks size of receiver towards requested bounds.
virtual double computeEdgeVolumeAround(GaussPoint *gp, int iEdge)
Computes volume related to integration point on local edge.
virtual void giveInternalDofManDofIDMask(int inode, IntArray &answer) const
Returns internal dofmanager dof mask for node.
virtual int setupIntegrationPoints(IntegrationRule &irule, int npoints, Element *element)
Sets up integration rule for the given element.
int numberOfGaussPoints
Number of integration points as specified by nip.
void beNMatrixOf(const FloatArray &n, int nsd)
Assigns the receiver to be a repeated diagonal matrix.
Class representing vector of real numbers.
void plusDyadSymmUpper(const FloatArray &a, double dV)
Adds to the receiver the dyadic product .
virtual void giveCharacteristicVector(FloatArray &answer, CharType type, ValueModeType mode, TimeStep *tStep)
Computes characteristic vector of receiver of requested type in given time step.
Implementation of matrix containing floating point numbers.
IRResultType
Type defining the return values of InputRecord reading operations.
GaussPoint * getIntegrationPoint(int n)
Access particular integration point of receiver.
virtual void computeEdgeLoadVectorAt(FloatArray &answer, Load *load, TimeStep *tStep, ValueModeType mode)
virtual double giveTransformationJacobian(const FloatArray &lcoords, const FEICellGeometry &cellgeo)
Evaluates the determinant of the transformation.
void assemble(const FloatArray &fe, const IntArray &loc)
Assembles the array fe (typically, the load vector of a finite element) into the receiver, using loc as location array.
void resize(int rows, int cols)
Checks size of receiver towards requested bounds.
virtual void computeBmatrixAt(GaussPoint *gp, FloatMatrix &answer, int li, int ui)
Computes the geometrical matrix of receiver in given integration point.
Dof * giveDofWithID(int dofID) const
Returns DOF with given dofID; issues error if not present.
int giveNumberOfIntegrationPoints() const
Returns number of integration points of receiver.
void zero()
Zeroes all coefficients of receiver.
void times(double s)
Multiplies receiver with scalar.
virtual double computeVolumeAround(GaussPoint *gp)
Returns volume related to given integration point.
The spatial localizer element interface associated to spatial localizer.
virtual bool computeLocalCoordinates(FloatArray &answer, const FloatArray &gcoords)
Computes the element local coordinates from given global coordinates.
std::vector< std::unique_ptr< IntegrationRule > > integrationRulesArray
List of integration rules of receiver (each integration rule contains associated integration points a...
void zero()
Zeroes all coefficient of receiver.
Domain * giveDomain() const
InterfaceType
Enumerative type, used to identify interface type.
virtual double giveThicknessAt(const FloatArray &gcoords)
Load is base abstract class for all loads.
virtual Interface * giveInterface(InterfaceType t)
Interface requesting service.
the oofem namespace is to define a context or scope in which all oofem names are defined.
DofManager * giveDofManager(int i) const
void clear()
Sets size of receiver to be an empty matrix. It will have zero rows and zero columns size...
Node * giveNode(int i) const
Returns reference to the i-th node of element.
void symmetrized()
Initializes the lower half of the receiver according to the upper half.
virtual IRResultType initializeFrom(InputRecord *ir)
Initializes receiver according to object description stored in input record.
Class representing integration point in finite element program.
Class representing solution step.
virtual int computeGlobalCoordinates(FloatArray &answer, const FloatArray &lcoords)
Computes the global coordinates from given element's local coordinates.
int numberOfDofMans
Number of dofmanagers.
void add(const FloatArray &src)
Adds array src to receiver.
const FloatArray & giveNaturalCoordinates()
Returns coordinate array of receiver.
Class representing Gaussian-quadrature integration rule.
void resize(int s)
Resizes receiver towards requested size.