76BondLink3d :: computeVolumeAround(
GaussPoint *aGaussPoint)
100 answer.
at(1, 1) = 1.;
101 answer.
at(1, 5) = -this->
rigid.at(3);
102 answer.
at(1, 6) = this->
rigid.at(2);
104 answer.
at(1, 7) = -1.;
108 answer.
at(2, 2) = 1.;
109 answer.
at(2, 4) = this->
rigid.at(3);
110 answer.
at(2, 6) = -this->
rigid.at(1);
113 answer.
at(2, 8) = -1.;
117 answer.
at(3, 3) = 1.;
118 answer.
at(3, 4) = -this->
rigid.at(2);
119 answer.
at(3, 5) = this->
rigid.at(1);
121 answer.
at(3, 9) = -1.;
139BondLink3d :: computeStiffnessMatrix(
FloatMatrix &answer, MatResponseMode rMode,
181void BondLink3d :: computeGaussPoints()
202 for ( i = 1; i <= 3; i++ ) {
203 for ( j = 1; j <= 3; j++ ) {
204 answer.
at(i, j) = lcs.
at(i, j);
205 answer.
at(i + 3, j + 3) = lcs.
at(i, j);
206 answer.
at(i + 6, j + 6) = lcs.
at(i, j);
228BondLink3d :: giveBondLength()
234BondLink3d :: giveBondEndLength()
241BondLink3d :: giveBondDiameter()
250BondLink3d :: giveDofManDofIDMask(
int inode,
IntArray &answer)
const
253 answer = { D_u, D_v, D_w, R_u, R_v, R_w };
255 answer = { D_u, D_v, D_w };
263 StructuralElement :: initializeFrom(ir, priority);
272BondLink3d :: postInitialize()
275 StructuralElement :: postInitialize();
281 if ( this->bondEndLength < this->
bondLength ) {
301BondLink3d :: computeGeometryProperties()
315 for (
int i = 0; i < 3; i++ ) {
323 for (
int i = 0; i < 3; i++ ) {
324 rigidGlobal.
at(i + 1) = coordsA.at(i + 1) - coordsB.
at(i + 1);
336 if ( normal.at(1) == 0 ) {
338 s.at(2) = normal.at(3);
339 s.at(3) = -normal.at(2);
340 }
else if ( normal.at(2) == 0 ) {
341 s.at(1) = normal.at(3);
343 s.at(3) = -normal.at(1);
345 s.at(1) = normal.at(2);
346 s.at(2) = -normal.at(1);
361 for (
int i = 1; i <= 3; i++ ) {
373 for (
int i = 1; i <= 3; i++ ) {
386 StructuralElement :: saveContext(stream, mode);
393 StructuralElement :: restoreContext(stream, mode);
399 TimeStep *tStep,
int useUpdatedGpRecord)
425 if ( useUpdatedGpRecord == 1 ) {
426 auto status = gp->giveMaterialStatus();
436 strain.
resize(StructuralMaterial :: giveSizeOfVoigtSymVector(gp->giveMaterialMode() ) );
460 StructuralMaterial :: giveReducedSymVectorForm(stressTemp, stress, gp->giveMaterialMode() );
476BondLink3d :: giveLength()
525 if ( !
gc.testElementGraphicActivity(
this) ) {
530 EASValsSetColor(
gc.getElementColor() );
533 p [ 0 ].x = ( FPNum ) this->
giveNode(1)->giveCoordinate(1);
534 p [ 0 ].y = ( FPNum ) this->
giveNode(1)->giveCoordinate(2);
535 p [ 0 ].z = ( FPNum ) this->
giveNode(1)->giveCoordinate(3);
536 p [ 1 ].x = ( FPNum ) this->
giveNode(2)->giveCoordinate(1);
537 p [ 1 ].y = ( FPNum ) this->
giveNode(2)->giveCoordinate(2);
538 p [ 1 ].z = ( FPNum ) this->
giveNode(2)->giveCoordinate(3);
540 go = CreateLine3D(p);
541 EGWithMaskChangeAttributes(WIDTH_MASK | COLOR_MASK | LAYER_MASK, go);
542 EGAttachObject(go, ( EObjectP )
this);
543 EMAddGraphicsToModel(ESIModel(), go);
550 if ( !
gc.testElementGraphicActivity(
this) ) {
554 double defScale =
gc.getDefScale();
559 EASValsSetColor(
gc.getDeformedElementColor() );
562 p [ 0 ].x = ( FPNum ) this->
giveNode(1)->giveUpdatedCoordinate(1, tStep, defScale);
563 p [ 0 ].y = ( FPNum ) this->
giveNode(1)->giveUpdatedCoordinate(2, tStep, defScale);
564 p [ 0 ].z = ( FPNum ) this->
giveNode(1)->giveUpdatedCoordinate(3, tStep, defScale);
566 p [ 1 ].x = ( FPNum ) this->
giveNode(2)->giveUpdatedCoordinate(1, tStep, defScale);
567 p [ 1 ].y = ( FPNum ) this->
giveNode(2)->giveUpdatedCoordinate(2, tStep, defScale);
568 p [ 1 ].z = ( FPNum ) this->
giveNode(2)->giveUpdatedCoordinate(3, tStep, defScale);
570 go = CreateLine3D(p);
571 EGWithMaskChangeAttributes(WIDTH_MASK | COLOR_MASK | LAYER_MASK, go);
572 EMAddGraphicsToModel(ESIModel(), go);
#define REGISTER_Element(class)
static ParamKey IPK_BondLink3d_dirvector
void computeConstitutiveMatrixAt(FloatMatrix &answer, MatResponseMode rMode, GaussPoint *gp, TimeStep *tStep) override
FloatArray directionVector
static ParamKey IPK_BondLink3d_length
void drawDeformedGeometry(oofegGraphicContext &, TimeStep *tStep, UnknownType) override
virtual void computeGeometryProperties()
void drawRawGeometry(oofegGraphicContext &, TimeStep *tStep) override
double computeVolumeAround(GaussPoint *aGaussPoint) override
static ParamKey IPK_BondLink3d_length_end
FloatArray globalCentroid
FloatMatrix localCoordinateSystem
static ParamKey IPK_BondLink3d_diameter
void computeBmatrixAt(GaussPoint *, FloatMatrix &, int=1, int=ALL_STRAINS) override
int giveLocalCoordinateSystem(FloatMatrix &answer) override
void computeStressVector(FloatArray &answer, const FloatArray &strain, GaussPoint *gp, TimeStep *tStep) override
double giveCoordinate(int i) const
Node * giveNode(int i) const
virtual bool isActivated(TimeStep *tStep)
virtual void drawScalar(oofegGraphicContext &gc, TimeStep *tStep)
int numberOfDofMans
Number of dofmanagers.
void computeVectorOf(ValueModeType u, TimeStep *tStep, FloatArray &answer)
std::vector< std ::unique_ptr< IntegrationRule > > integrationRulesArray
CrossSection * giveCrossSection()
virtual IntegrationRule * giveDefaultIntegrationRulePtr()
virtual void drawSpecial(oofegGraphicContext &gc, TimeStep *tStep)
Domain * giveDomain() const
Domain * domain
Link to domain object, useful for communicating with other FEM components.
int number
Component number.
void plusProduct(const FloatMatrix &b, const FloatArray &s, double dV)
Index giveSize() const
Returns the size of receiver.
void zero()
Zeroes all coefficients of receiver.
void beProductOf(const FloatMatrix &aMatrix, const FloatArray &anArray)
void beVectorProductOf(const FloatArray &v1, const FloatArray &v2)
void subtract(const FloatArray &src)
void resize(Index rows, Index cols)
*Sets size of receiver to be an empty matrix It will have zero rows and zero columns size void clear()
void beProductOf(const FloatMatrix &a, const FloatMatrix &b)
void beTranspositionOf(const FloatMatrix &src)
void zero()
Zeroes all coefficient of receiver.
double at(std::size_t i, std::size_t j) const
MaterialMode giveMaterialMode()
Returns corresponding material mode of receiver.
StructuralElement(int n, Domain *d)
std::unique_ptr< FloatArray > initialDisplacements
Initial displacement vector, describes the initial nodal displacements when element has been casted.
const FloatArrayF< 3 > & giveTraction() const
Returns the const pointer to receiver's traction vector.
const FloatArray & giveStressVector() const
Returns the const pointer to receiver's stress vector.
@ OGC_eigenVectorGeometry
oofem::oofegGraphicContext gc[OOFEG_LAST_LAYER]
#define OOFEG_DEFORMED_GEOMETRY_LAYER
#define OOFEG_DEFORMED_GEOMETRY_WIDTH
#define OOFEG_RAW_GEOMETRY_WIDTH
#define OOFEG_RAW_GEOMETRY_LAYER
#define PM_ELEMENT_ERROR_IFNOTSET(_pm, _componentnum, _paramkey)
#define PM_UPDATE_PARAMETER(_val, _pm, _ir, _componentnum, _paramkey, _prio)