35 #include "../sm/Elements/Beams/libeam3d.h" 36 #include "../sm/Materials/structuralms.h" 69 double l, ksi, n1, n2, n1x, n2x;
77 n1 = 0.5 * ( 1 - ksi );
78 n2 = 0.5 * ( 1. + ksi );
82 answer.
at(1, 1) = -1. / l;
83 answer.
at(1, 7) = 1. / l;
85 answer.
at(2, 3) = n1x;
87 answer.
at(2, 9) = n2x;
88 answer.
at(2, 11) = n2;
90 answer.
at(3, 2) = n1x;
91 answer.
at(3, 6) = -n1;
92 answer.
at(3, 8) = n2x;
93 answer.
at(3, 12) = -n2;
95 answer.
at(4, 4) = -1. / l;
96 answer.
at(4, 10) = 1. / l;
98 answer.
at(5, 5) = n1x;
99 answer.
at(5, 11) = n2x;
101 answer.
at(6, 6) = n1x;
102 answer.
at(6, 12) = n2x;
142 answer.
at(1, 1) = answer.
at(2, 2) = answer.
at(3, 3) = halfMass;
143 answer.
at(7, 7) = answer.
at(8, 8) = answer.
at(9, 9) = halfMass;
154 ksi = iLocCoord.
at(1);
155 n1 = ( 1. - ksi ) * 0.5;
156 n2 = ( 1. + ksi ) * 0.5;
161 answer.
at(1, 1) = n1;
162 answer.
at(1, 7) = n2;
163 answer.
at(2, 2) = n1;
164 answer.
at(2, 8) = n2;
165 answer.
at(3, 3) = n1;
166 answer.
at(3, 9) = n2;
168 answer.
at(4, 4) = n1;
169 answer.
at(4, 10) = n2;
170 answer.
at(5, 5) = n1;
171 answer.
at(5, 11) = n2;
172 answer.
at(6, 6) = n1;
173 answer.
at(6, 12) = n2;
194 for (
int i = 1; i <= 3; i++ ) {
195 for (
int j = 1; j <= 3; j++ ) {
196 answer.
at(i, j) = lcs.
at(i, j);
197 answer.
at(i + 3, j + 3) = lcs.
at(i, j);
198 answer.
at(i + 6, j + 6) = lcs.
at(i, j);
199 answer.
at(i + 9, j + 9) = lcs.
at(i, j);
221 if ( type == IST_BeamForceMomentTensor ) {
224 }
else if ( type == IST_BeamStrainCurvatureTensor ) {
236 answer = {D_u, D_v, D_w, R_u, R_v, R_w};
246 n1 = ( 1. - ksi ) * 0.5;
247 n2 = ( 1. + ksi ) * 0.5;
278 length = sqrt(dx * dx + dy * dy + dz * dz);
320 for (
int i = 1; i <= 12; i++ ) {
353 for (
int i = 1; i <= 3; i++ ) {
354 for (
int j = 1; j <= 3; j++ ) {
355 answer.
at(i, j) = lcs.
at(i, j);
356 answer.
at(3 + i, 3 + j) = lcs.
at(i, j);
394 Node *nodeA, *nodeB, *refNode;
402 for (
int i = 1; i <= 3; i++ ) {
407 lz.beVectorProductOf(lx, help);
409 ly.beVectorProductOf(lz, lx);
412 for (
int i = 1; i <= 3; i++ ) {
413 answer.
at(1, i) = lx.at(i);
414 answer.
at(2, i) = ly.at(i);
415 answer.
at(3, i) = lz.at(i);
425 double layerYCoord, layerZCoord;
432 answer.
at(1) = masterGpStrain.
at(1) + masterGpStrain.
at(5) * layerZCoord - masterGpStrain.
at(6) * layerYCoord;
433 answer.
at(2) = masterGpStrain.
at(2);
434 answer.
at(3) = masterGpStrain.
at(3);
469 go = CreateLine3D(p);
470 EGWithMaskChangeAttributes(WIDTH_MASK | COLOR_MASK | LAYER_MASK, go);
471 EGAttachObject(go, ( EObjectP )
this);
472 EMAddGraphicsToModel(ESIModel(), go);
498 go = CreateLine3D(p);
499 EGWithMaskChangeAttributes(WIDTH_MASK | COLOR_MASK | LAYER_MASK, go);
500 EMAddGraphicsToModel(ESIModel(), go);
CrossSection * giveCrossSection()
int testElementGraphicActivity(Element *)
Test if particular element passed fulfills various filtering criteria for its graphics output...
InternalStateType
Type representing the physical meaning of element or constitutive model internal variable.
virtual int giveIPValue(FloatArray &answer, GaussPoint *gp, InternalStateType type, TimeStep *tStep)
Returns the integration point corresponding value in full form.
virtual void computeLumpedMassMatrix(FloatMatrix &answer, TimeStep *tStep)
Computes lumped mass matrix of receiver.
virtual int computeLoadLEToLRotationMatrix(FloatMatrix &answer, int, GaussPoint *gp)
Returns transformation matrix from local edge c.s to element local coordinate system of load vector c...
virtual void computeGaussPoints()
Initializes the array of integration rules member variable.
double & at(int i)
Coefficient access function.
ValueModeType
Type representing the mode of UnknownType or CharType, or similar types.
virtual Interface * giveInterface(InterfaceType it)
Interface requesting service.
virtual int giveIPValue(FloatArray &answer, GaussPoint *gp, InternalStateType type, TimeStep *tStep)
Returns the integration point corresponding value in full form.
#define OOFEG_RAW_GEOMETRY_LAYER
This class implements a structural material status information.
oofem::oofegGraphicContext gc[OOFEG_LAST_LAYER]
virtual void giveGeneralizedStress_Beam3d(FloatArray &answer, GaussPoint *gp, const FloatArray &generalizedStrain, TimeStep *tStep)=0
virtual void computeConstitutiveMatrixAt(FloatMatrix &answer, MatResponseMode rMode, GaussPoint *gp, TimeStep *tStep)
Computes constitutive matrix of receiver.
virtual void drawRawGeometry(oofegGraphicContext &gc, TimeStep *tStep)
virtual double giveCoordinate(int i)
LIBeam3d(int n, Domain *d)
Class implementing an array of integers.
int & at(int i)
Coefficient access function.
MatResponseMode
Describes the character of characteristic material matrix.
virtual void computeNmatrixAt(const FloatArray &iLocCoord, FloatMatrix &answer)
Computes interpolation matrix for element unknowns.
#define OOFEG_DEFORMED_GEOMETRY_LAYER
#define _IFT_LIBeam3d_refnode
virtual void drawDeformedGeometry(oofegGraphicContext &gc, TimeStep *tStep, UnknownType)
EPixel getDeformedElementColor()
Abstract base class for all "structural" finite elements.
double giveNaturalCoordinate(int i) const
Returns i-th natural element coordinate of receiver.
virtual void computeBodyLoadVectorAt(FloatArray &answer, Load *load, TimeStep *tStep, ValueModeType mode)
Computes the load vector due to body load acting on receiver, at given time step. ...
virtual double computeLength()
Computes the length (zero for all but 1D geometries)
virtual IRResultType initializeFrom(InputRecord *ir)
Initializes receiver according to object description stored in input record.
virtual double computeVolumeAround(GaussPoint *gp)
Returns volume related to given integration point.
virtual void computeStiffnessMatrix(FloatMatrix &answer, MatResponseMode rMode, TimeStep *tStep)
Computes numerically stiffness matrix of receiver.
ElementExtension
Type representing element extension.
#define OOFEG_RAW_GEOMETRY_WIDTH
virtual double giveWeight()
Returns integration weight of receiver.
UnknownType
Type representing particular unknown (its physical meaning).
StructuralCrossSection * giveStructuralCrossSection()
Helper function which returns the structural cross-section for the element.
virtual void giveEdgeDofMapping(IntArray &answer, int iEdge) const
Assembles edge dof mapping mask, which provides mapping between edge local DOFs and "global" element ...
virtual int computeGlobalCoordinates(FloatArray &answer, const FloatArray &lcoords)
Computes the global coordinates from given element's local coordinates.
virtual double giveUpdatedCoordinate(int ic, TimeStep *tStep, double scale=1.)
Returns updated ic-th coordinate of receiver.
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.
double at(int i, int j) const
Coefficient access function.
virtual void computeStiffnessMatrix(FloatMatrix &answer, MatResponseMode rMode, TimeStep *tStep)
Computes numerically stiffness matrix of receiver.
void resize(int n)
Checks size of receiver towards requested bounds.
virtual void give3dBeamStiffMtrx(FloatMatrix &answer, MatResponseMode mode, GaussPoint *gp, TimeStep *tStep)=0
Computes the stiffness matrix for 2d beams.
virtual int computeLoadGToLRotationMtrx(FloatMatrix &answer)
Returns transformation matrix from global coordinate system to local element coordinate system for el...
virtual int setupIntegrationPoints(IntegrationRule &irule, int npoints, Element *element)
Sets up integration rule for the given element.
virtual void computeBodyLoadVectorAt(FloatArray &answer, Load *load, TimeStep *tStep, ValueModeType mode)
Computes the load vector due to body load acting on receiver, at given time step. ...
virtual void computeBmatrixAt(GaussPoint *gp, FloatMatrix &answer, int=1, int=ALL_STRAINS)
Computes the geometrical matrix of receiver in given integration point.
Class representing vector of real numbers.
Implementation of matrix containing floating point numbers.
IRResultType
Type defining the return values of InputRecord reading operations.
virtual double give(CrossSectionProperty a, GaussPoint *gp)
Returns the value of cross section property at given point.
virtual int giveLocalCoordinateSystem(FloatMatrix &answer)
Returns local coordinate system of receiver Required by material models with ortho- and anisotrophy...
IntegrationPointStatus * giveMaterialStatus()
Returns reference to associated material status (NULL if not defined).
void resize(int rows, int cols)
Checks size of receiver towards requested bounds.
virtual void FiberedCrossSectionInterface_computeStrainVectorInFiber(FloatArray &answer, const FloatArray &masterGpStrain, GaussPoint *slaveGp, TimeStep *tStep)
Computes full 3d strain vector in element fiber.
#define OOFEG_DEFORMED_GEOMETRY_WIDTH
void times(double s)
Multiplies receiver with scalar.
std::vector< std::unique_ptr< IntegrationRule > > integrationRulesArray
List of integration rules of receiver (each integration rule contains associated integration points a...
The element interface required by FiberedCrossSection.
void zero()
Zeroes all coefficient of receiver.
Domain * giveDomain() const
InterfaceType
Enumerative type, used to identify interface type.
Load is base abstract class for all loads.
virtual double computeEdgeVolumeAround(GaussPoint *gp, int iEdge)
Computes volume related to integration point on local edge.
Node * giveNode(int n)
Service for accessing particular domain node.
the oofem namespace is to define a context or scope in which all oofem names are defined.
virtual int testElementExtension(ElementExtension ext)
Tests if the element implements required extension.
void clear()
Sets size of receiver to be an empty matrix. It will have zero rows and zero columns size...
Class implementing node in finite element mesh.
Node * giveNode(int i) const
Returns reference to the i-th node of element.
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.
int numberOfDofMans
Number of dofmanagers.
virtual bool computeGtoLRotationMatrix(FloatMatrix &answer)
Returns transformation matrix from global c.s.
Element extension for edge loads.
Class representing Gaussian-quadrature integration rule.
void resize(int s)
Resizes receiver towards requested size.
virtual void giveDofManDofIDMask(int inode, IntArray &answer) const
Returns dofmanager dof mask for node.