35 #include "../sm/Elements/Beams/libeam2dnl.h" 36 #include "../sm/Materials/structuralms.h" 77 double l, ksi, n1, n2, n1x, n2x, n3x;
82 n1 = 0.5 * ( 1.0 - ksi );
83 n2 = 0.5 * ( 1.0 + ksi );
92 answer.
at(1, 1) = n1x;
93 answer.
at(1, 4) = n2x;
95 answer.
at(2, 3) = n1x;
96 answer.
at(2, 6) = n2x;
98 answer.
at(3, 2) = n1x;
99 answer.
at(3, 3) = n1 - n3x * l / 8.0;
100 answer.
at(3, 5) = n2x;
101 answer.
at(3, 6) = n2 + n3x * l / 8.0;
112 double l, l8, ll88, ksi, n1x, n2x, n3x;
121 n3x = -4.0 * ksi / l;
207 answer.
at(2, 2) = n1x * n1x;
208 answer.
at(2, 3) = -n1x * n3x * l8;
209 answer.
at(2, 5) = n1x * n2x;
210 answer.
at(2, 6) = n1x * n3x * l8;
211 answer.
at(3, 2) = -n3x * l8 * n1x;
212 answer.
at(3, 3) = n3x * n3x * ll88;
213 answer.
at(3, 5) = -n3x * l8 * n2x;
214 answer.
at(3, 6) = -n3x * n3x * ll88;
218 answer.
at(5, 2) = n2x * n1x;
219 answer.
at(5, 3) = -n2x * n3x * l8;
220 answer.
at(5, 5) = n2x * n2x;
221 answer.
at(5, 6) = n2x * n3x * l8;
222 answer.
at(6, 2) = n3x * l8 * n1x;
223 answer.
at(6, 3) = -n3x * n3x * ll88;
224 answer.
at(6, 5) = n3x * l8 * n2x;
225 answer.
at(6, 2) = n3x * n3x * ll88;
270 for (
int j = 1; j <= stress.
giveSize(); j++ ) {
304 answer.
at(1, 1) = halfMass;
305 answer.
at(2, 2) = halfMass;
306 answer.
at(4, 4) = halfMass;
307 answer.
at(5, 5) = halfMass;
316 double ksi, n1, n2, n3;
319 ksi = iLocCoord.
at(1);
320 n1 = ( 1. - ksi ) * 0.5;
321 n2 = ( 1. + ksi ) * 0.5;
322 n3 = ( 1. - ksi * ksi );
328 answer.
at(1, 1) = n1;
329 answer.
at(1, 4) = n2;
331 answer.
at(2, 2) = n1;
332 answer.
at(2, 3) = -n3 * l / 8.;
333 answer.
at(2, 5) = n2;
334 answer.
at(2, 6) = n3 * l / 8.;
336 answer.
at(3, 3) = n1;
337 answer.
at(3, 6) = n2;
352 answer.
at(1, 1) = cosine;
353 answer.
at(1, 2) = sine;
354 answer.
at(2, 1) = -sine;
355 answer.
at(2, 2) = cosine;
356 answer.
at(3, 3) = 1.;
357 answer.
at(4, 4) = cosine;
358 answer.
at(4, 5) = sine;
359 answer.
at(5, 4) = -sine;
360 answer.
at(5, 5) = cosine;
361 answer.
at(6, 6) = 1.;
381 if ( type == IST_BeamForceMomentTensor ) {
384 }
else if ( type == IST_BeamStrainCurvatureTensor ) {
414 double layerZeta, layerZCoord, top, bottom;
419 layerZCoord = 0.5 * ( ( 1. - layerZeta ) * bottom + ( 1. + layerZeta ) * top );
423 answer.
at(1) = masterGpStrain.
at(1) + masterGpStrain.
at(2) * layerZCoord;
424 answer.
at(2) = masterGpStrain.
at(3);
431 answer = {D_u, D_w, R_v};
441 n1 = ( 1. - ksi ) * 0.5;
442 n2 = ( 1. + ksi ) * 0.5;
463 length = sqrt(dx * dx + dy * dy);
473 double xA, xB, yA, yB;
476 if (
pitch == 10. ) {
483 pitch = atan2(yB - yA, xB - xA);
549 answer.
at(1, 1) = cosine;
550 answer.
at(1, 2) = -sine;
551 answer.
at(2, 1) = sine;
552 answer.
at(2, 2) = cosine;
553 answer.
at(3, 3) = 1.0;
602 go = CreateLine3D(p);
603 EGWithMaskChangeAttributes(WIDTH_MASK | COLOR_MASK | LAYER_MASK, go);
604 EGAttachObject(go, ( EObjectP )
this);
605 EMAddGraphicsToModel(ESIModel(), go);
629 go = CreateLine3D(p);
630 EGWithMaskChangeAttributes(WIDTH_MASK | COLOR_MASK | LAYER_MASK, go);
631 EMAddGraphicsToModel(ESIModel(), go);
CrossSection * giveCrossSection()
virtual void computeLumpedMassMatrix(FloatMatrix &answer, TimeStep *tStep)
Computes lumped mass matrix of receiver.
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 bool computeGtoLRotationMatrix(FloatMatrix &answer)
Returns transformation matrix from global c.s.
virtual void giveGeneralizedStress_Beam2d(FloatArray &answer, GaussPoint *gp, const FloatArray &generalizedStrain, TimeStep *tStep)=0
Computes the generalized stress vector for given strain and integration point.
virtual IntegrationRule * giveDefaultIntegrationRulePtr()
Access method for default integration rule.
Abstract base class for "structural" finite elements with geometrical nonlinearities.
double & at(int i)
Coefficient access function.
ValueModeType
Type representing the mode of UnknownType or CharType, or similar types.
#define OOFEG_RAW_GEOMETRY_LAYER
This class implements a structural material status information.
oofem::oofegGraphicContext gc[OOFEG_LAST_LAYER]
virtual int computeLoadLEToLRotationMatrix(FloatMatrix &, int, GaussPoint *)
Returns transformation matrix from local edge c.s to element local coordinate system of load vector c...
virtual IRResultType initializeFrom(InputRecord *ir)
Initializes receiver according to object description stored in input record.
virtual double giveCoordinate(int i)
Class implementing an array of integers.
int & at(int i)
Coefficient access function.
MatResponseMode
Describes the character of characteristic material matrix.
virtual void drawRawGeometry(oofegGraphicContext &gc, TimeStep *tStep)
virtual int computeGlobalCoordinates(FloatArray &answer, const FloatArray &lcoords)
Computes the global coordinates from given element's local coordinates.
#define OOFEG_DEFORMED_GEOMETRY_LAYER
virtual void computeConstitutiveMatrixAt(FloatMatrix &answer, MatResponseMode rMode, GaussPoint *gp, TimeStep *tStep)
Computes constitutive matrix of receiver.
virtual void giveEdgeDofMapping(IntArray &answer, int) const
Assembles edge dof mapping mask, which provides mapping between edge local DOFs and "global" element ...
EPixel getDeformedElementColor()
bool isNotEmpty() const
Tests for empty matrix.
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 void computeGaussPoints()
Initializes the array of integration rules member variable.
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 computeNmatrixAt(const FloatArray &iLocCoord, FloatMatrix &answer)
Computes interpolation matrix for element unknowns.
virtual int giveIPValue(FloatArray &answer, GaussPoint *gp, InternalStateType type, TimeStep *tStep)
Returns the integration point corresponding value in full form.
#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.
void times(double f)
Multiplies receiver by factor f.
virtual void computeStrainVectorInLayer(FloatArray &answer, const FloatArray &masterGpStrain, GaussPoint *masterGp, GaussPoint *slaveGp, TimeStep *tStep)
Computes full 3D strain vector in element layer.
virtual double giveUpdatedCoordinate(int ic, TimeStep *tStep, double scale=1.)
Returns updated ic-th coordinate of receiver.
virtual Interface * giveInterface(InterfaceType it)
Interface requesting service.
double at(int i, int j) const
Coefficient access function.
void resize(int n)
Checks size of receiver towards requested bounds.
void computeNLBMatrixAt(FloatMatrix &answer, GaussPoint *gp, int)
virtual int setupIntegrationPoints(IntegrationRule &irule, int npoints, Element *element)
Sets up integration rule for the given element.
LIBeam2dNL(int n, Domain *d)
Class representing vector of real numbers.
Implementation of matrix containing floating point numbers.
virtual void computeBmatrixAt(GaussPoint *gp, FloatMatrix &answer, int=1, int=ALL_STRAINS)
Computes the geometrical matrix of receiver in given integration point.
IRResultType
Type defining the return values of InputRecord reading operations.
virtual double computeLength()
Computes the length (zero for all but 1D geometries)
virtual double give(CrossSectionProperty a, GaussPoint *gp)
Returns the value of cross section property at given point.
IntegrationPointStatus * giveMaterialStatus()
Returns reference to associated material status (NULL if not defined).
virtual void computeInitialStressMatrix(FloatMatrix &answer, TimeStep *tStep)
Computes the initial stiffness matrix of receiver.
void resize(int rows, int cols)
Checks size of receiver towards requested bounds.
void add(const FloatMatrix &a)
Adds matrix to the 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.
#define OOFEG_DEFORMED_GEOMETRY_WIDTH
void times(double s)
Multiplies receiver with scalar.
virtual void drawDeformedGeometry(oofegGraphicContext &gc, TimeStep *tStep, UnknownType)
std::vector< std::unique_ptr< IntegrationRule > > integrationRulesArray
List of integration rules of receiver (each integration rule contains associated integration points a...
virtual double computeVolumeAround(GaussPoint *gp)
Returns volume related to given integration point.
virtual IRResultType initializeFrom(InputRecord *ir)
Initializes receiver according to object description stored in input record.
void zero()
Zeroes all coefficient of receiver.
InterfaceType
Enumerative type, used to identify interface type.
virtual double computeEdgeVolumeAround(GaussPoint *, int)
Computes volume related to integration point on local edge.
Load is base abstract class for all loads.
The element interface required by LayeredCrossSection.
virtual void giveDofManDofIDMask(int inode, IntArray &) const
Returns dofmanager dof mask for node.
int giveSize() const
Returns the size of receiver.
virtual int computeLoadGToLRotationMtrx(FloatMatrix &answer)
Returns transformation matrix from global coordinate system to local element coordinate system for el...
the oofem namespace is to define a context or scope in which all oofem names are defined.
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 void give2dBeamStiffMtrx(FloatMatrix &answer, MatResponseMode mode, GaussPoint *gp, TimeStep *tStep)=0
Computes the stiffness matrix for 2d beams.
Class representing integration point in finite element program.
Class representing solution step.
int numberOfDofMans
Number of dofmanagers.
Class representing Gaussian-quadrature integration rule.
void resize(int s)
Resizes receiver towards requested size.