35 #include "../sm/Elements/Beams/libeam2d.h" 36 #include "../sm/Materials/structuralms.h" 81 double l, ksi, n1x, n4x, n3xx, n6xx, n2xxx, n3xxx, n5xxx, n6xxx;
90 n3xxx = 0.5 * ( 1 - ksi );
92 n6xxx = 0.5 * ( 1. + ksi );
97 answer.
at(1, 1) = n1x;
98 answer.
at(1, 4) = n4x;
99 answer.
at(2, 3) = n3xx;
100 answer.
at(2, 6) = n6xx;
101 answer.
at(3, 2) = n2xxx;
102 answer.
at(3, 3) = n3xxx;
103 answer.
at(3, 5) = n5xxx;
104 answer.
at(3, 6) = n6xxx;
140 n1 = ( 1. - ksi ) * 0.5;
141 n2 = ( 1. + ksi ) * 0.5;
161 answer.
at(1, 1) = halfMass;
162 answer.
at(2, 2) = halfMass;
163 answer.
at(4, 4) = halfMass;
164 answer.
at(5, 5) = halfMass;
175 ksi = iLocCoord.
at(1);
176 n1 = ( 1. - ksi ) * 0.5;
177 n2 = ( 1. + ksi ) * 0.5;
182 answer.
at(1, 1) = n1;
183 answer.
at(1, 4) = n2;
184 answer.
at(2, 2) = n1;
185 answer.
at(2, 5) = n2;
186 answer.
at(3, 3) = n1;
187 answer.
at(3, 6) = n2;
211 answer.
at(1, 1) = cosine;
212 answer.
at(1, 2) = sine;
213 answer.
at(2, 1) = -sine;
214 answer.
at(2, 2) = cosine;
215 answer.
at(3, 3) = 1.;
216 answer.
at(4, 4) = cosine;
217 answer.
at(4, 5) = sine;
218 answer.
at(5, 4) = -sine;
219 answer.
at(5, 5) = cosine;
220 answer.
at(6, 6) = 1.;
243 double layerZeta, layerZCoord, top, bottom;
248 layerZCoord = 0.5 * ( ( 1. - layerZeta ) * bottom + ( 1. + layerZeta ) * top );
252 answer.
at(1) = masterGpStrain.
at(1) + masterGpStrain.
at(2) * layerZCoord;
253 answer.
at(2) = masterGpStrain.
at(3);
260 if ( type == IST_BeamForceMomentTensor ) {
263 }
else if ( type == IST_BeamStrainCurvatureTensor ) {
275 answer = {D_u, D_w, R_v};
291 length = sqrt(dx * dx + dy * dy);
302 double xA, xB, yA, yB;
305 if (
pitch == 10. ) {
312 pitch = atan2(yB - yA, xB - xA);
389 answer.
at(1, 1) = cosine;
390 answer.
at(1, 2) = -sine;
391 answer.
at(2, 1) = sine;
392 answer.
at(2, 2) = cosine;
393 answer.
at(3, 3) = 1.0;
CrossSection * giveCrossSection()
InternalStateType
Type representing the physical meaning of element or constitutive model internal variable.
virtual void computeStrainVectorInLayer(FloatArray &answer, const FloatArray &masterGpStrain, GaussPoint *masterGp, GaussPoint *slaveGp, TimeStep *tStep)
Computes full 3D strain vector in element layer.
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.
virtual int computeLoadLEToLRotationMatrix(FloatMatrix &, int, GaussPoint *)
Returns transformation matrix from local edge c.s to element local coordinate system of load vector c...
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.
LIBeam2d(int n, Domain *aDomain)
virtual void computeBmatrixAt(GaussPoint *, FloatMatrix &, int=1, int=ALL_STRAINS)
Computes the geometrical matrix of receiver in given integration point.
virtual double computeLength()
Computes the length (zero for all but 1D geometries)
double & at(int i)
Coefficient access function.
virtual double computeVolumeAround(GaussPoint *gp)
Returns volume related to given integration point.
ValueModeType
Type representing the mode of UnknownType or CharType, or similar types.
virtual void computeStiffnessMatrix(FloatMatrix &answer, MatResponseMode rMode, TimeStep *tStep)
Computes numerically stiffness matrix of receiver.
This class implements a structural material status information.
virtual FEInterpolation * giveInterpolation() const
virtual void computeConstitutiveMatrixAt(FloatMatrix &answer, MatResponseMode rMode, GaussPoint *gp, TimeStep *tStep)
Computes constitutive matrix of receiver.
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 double computeEdgeVolumeAround(GaussPoint *, int)
Computes volume related to integration point on local edge.
virtual void computeNmatrixAt(const FloatArray &iLocCoord, FloatMatrix &)
Computes interpolation matrix for element unknowns.
Class representing a general abstraction for finite element interpolation class.
virtual int computeLoadGToLRotationMtrx(FloatMatrix &answer)
Returns transformation matrix from global coordinate system to local element coordinate system for el...
Abstract base class for all "structural" finite elements.
double giveNaturalCoordinate(int i) const
Returns i-th natural element coordinate of receiver.
virtual bool computeGtoLRotationMatrix(FloatMatrix &answer)
Returns transformation matrix from global c.s.
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 giveEdgeDofMapping(IntArray &answer, int) const
Assembles edge dof mapping mask, which provides mapping between edge local DOFs and "global" element ...
virtual double giveWeight()
Returns integration weight of receiver.
virtual int giveIPValue(FloatArray &answer, GaussPoint *gp, InternalStateType type, TimeStep *tStep)
Returns the integration point corresponding value in full form.
StructuralCrossSection * giveStructuralCrossSection()
Helper function which returns the structural cross-section for the element.
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 computeGaussPoints()
Initializes the array of integration rules member variable.
virtual int setupIntegrationPoints(IntegrationRule &irule, int npoints, Element *element)
Sets up integration rule for the given element.
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.
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 computeStressVector(FloatArray &answer, const FloatArray &strain, GaussPoint *gp, TimeStep *tStep)
Computes the stress vector of receiver at given integration point, at time step tStep.
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...
static FEI2dLineLin interpolation
Interpolation.
void zero()
Zeroes all coefficient of receiver.
InterfaceType
Enumerative type, used to identify interface type.
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. ...
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.
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...
virtual IRResultType initializeFrom(InputRecord *ir)
Initializes receiver according to object description stored in input record.
Class implementing node in finite element mesh.
Node * giveNode(int i) const
Returns reference to the i-th node of element.
virtual int computeGlobalCoordinates(FloatArray &answer, const FloatArray &lcoords)
Computes the global coordinates from given element's local coordinates.
virtual IRResultType initializeFrom(InputRecord *ir)
Initializes receiver according to object description stored in input record.
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.
virtual void computeLumpedMassMatrix(FloatMatrix &answer, TimeStep *tStep)
Computes lumped mass matrix of receiver.
Class representing Gaussian-quadrature integration rule.
void resize(int s)
Resizes receiver towards requested size.