72LatticeLink3d :: ~LatticeLink3d()
76LatticeLink3d :: computeVolumeAround(
GaussPoint *aGaussPoint)
98 answer.
at(1, 1) = -1.;
99 answer.
at(1, 5) = -this->
rigid.at(3);
100 answer.
at(1, 6) = this->
rigid.at(2);
102 answer.
at(1, 7) = 1.;
106 answer.
at(2, 2) = -1.;
107 answer.
at(2, 4) = this->
rigid.at(3);
108 answer.
at(2, 6) = -this->
rigid.at(1);
110 answer.
at(2, 8) = 1.;
114 answer.
at(3, 3) = -1.;
115 answer.
at(3, 4) = -this->
rigid.at(2);
116 answer.
at(3, 5) = this->
rigid.at(1);
118 answer.
at(3, 9) = 1.;
122 answer.
at(4, 4) = -1.;
124 answer.
at(4, 10) = 1.;
128 answer.
at(5, 5) = -1.;
130 answer.
at(5, 11) = 1.;
134 answer.
at(6, 6) = -1.;
136 answer.
at(6, 12) = 1.;
154LatticeLink3d :: computeStiffnessMatrix(
FloatMatrix &answer, MatResponseMode rMode,
199void LatticeLink3d :: computeGaussPoints()
220 for ( i = 1; i <= 3; i++ ) {
221 for ( j = 1; j <= 3; j++ ) {
222 answer.
at(i, j) = lcs.
at(i, j);
223 answer.
at(i + 3, j + 3) = lcs.
at(i, j);
224 answer.
at(i + 6, j + 6) = lcs.
at(i, j);
225 answer.
at(i + 9, j + 9) = lcs.
at(i, j);
246LatticeLink3d :: giveBondLength()
252LatticeLink3d :: giveBondEndLength()
259LatticeLink3d :: giveBondDiameter()
268LatticeLink3d :: giveDofManDofIDMask(
int inode,
IntArray &answer)
const
271 D_u, D_v, D_w, R_u, R_v, R_w
280 LatticeStructuralElement :: initializeFrom(ir, priority);
290LatticeLink3d :: postInitialize()
293 LatticeStructuralElement :: postInitialize();
315LatticeLink3d :: computeGeometryProperties()
329 for (
int i = 0; i < 3; i++ ) {
337 for (
int i = 0; i < 3; i++ ) {
338 rigidGlobal.
at(i + 1) = coordsB.
at(i + 1) - coordsA.at(i + 1);
350 if ( normal.at(1) == 0 ) {
352 s.at(2) = normal.at(3);
353 s.at(3) = -normal.at(2);
354 }
else if ( normal.at(2) == 0 ) {
355 s.at(1) = normal.at(3);
357 s.at(3) = -normal.at(1);
359 s.at(1) = normal.at(2);
360 s.at(2) = -normal.at(1);
375 for (
int i = 1; i <= 3; i++ ) {
385 for (
int i = 1; i <= 3; i++ ) {
397 LatticeStructuralElement :: saveContext(stream, mode);
404 LatticeStructuralElement :: restoreContext(stream, mode);
410 TimeStep *tStep,
int useUpdatedGpRecord)
430 if ( useUpdatedGpRecord == 1 ) {
434 strain.
resize(StructuralMaterial :: giveSizeOfVoigtSymVector(gp->giveMaterialMode() ) );
443 if ( stress.giveSize() == 0 ) {
451 if ( stress.giveSize() == 6 ) {
458 StructuralMaterial :: giveReducedSymVectorForm(stressTemp, stress, gp->giveMaterialMode() );
480LatticeLink3d :: giveLength()
529 if ( !
gc.testElementGraphicActivity(
this) ) {
534 EASValsSetColor(
gc.getElementColor() );
537 p [ 0 ].x = ( FPNum ) this->
giveNode(1)->giveCoordinate(1);
538 p [ 0 ].y = ( FPNum ) this->
giveNode(1)->giveCoordinate(2);
539 p [ 0 ].z = ( FPNum ) this->
giveNode(1)->giveCoordinate(3);
540 p [ 1 ].x = ( FPNum ) this->
giveNode(2)->giveCoordinate(1);
541 p [ 1 ].y = ( FPNum ) this->
giveNode(2)->giveCoordinate(2);
542 p [ 1 ].z = ( FPNum ) this->
giveNode(2)->giveCoordinate(3);
544 go = CreateLine3D(p);
545 EGWithMaskChangeAttributes(WIDTH_MASK | COLOR_MASK | LAYER_MASK, go);
546 EGAttachObject(go, ( EObjectP )
this);
547 EMAddGraphicsToModel(ESIModel(), go);
554 if ( !
gc.testElementGraphicActivity(
this) ) {
558 double defScale =
gc.getDefScale();
563 EASValsSetColor(
gc.getDeformedElementColor() );
566 p [ 0 ].x = ( FPNum ) this->
giveNode(1)->giveUpdatedCoordinate(1, tStep, defScale);
567 p [ 0 ].y = ( FPNum ) this->
giveNode(1)->giveUpdatedCoordinate(2, tStep, defScale);
568 p [ 0 ].z = ( FPNum ) this->
giveNode(1)->giveUpdatedCoordinate(3, tStep, defScale);
570 p [ 1 ].x = ( FPNum ) this->
giveNode(2)->giveUpdatedCoordinate(1, tStep, defScale);
571 p [ 1 ].y = ( FPNum ) this->
giveNode(2)->giveUpdatedCoordinate(2, tStep, defScale);
572 p [ 1 ].z = ( FPNum ) this->
giveNode(2)->giveUpdatedCoordinate(3, tStep, defScale);
574 go = CreateLine3D(p);
575 EGWithMaskChangeAttributes(WIDTH_MASK | COLOR_MASK | LAYER_MASK, go);
576 EMAddGraphicsToModel(ESIModel(), go);
#define REGISTER_Element(class)
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
int number
Component number.
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.
int giveLocalCoordinateSystem(FloatMatrix &answer) override
static ParamKey IPK_LatticeLink3d_l_end
double giveLength() override
static ParamKey IPK_LatticeLink3d_length
void drawDeformedGeometry(oofegGraphicContext &, TimeStep *tStep, UnknownType) override
FloatArray directionVector
void computeStressVector(FloatArray &answer, const FloatArray &strain, GaussPoint *gp, TimeStep *tStep) override
void drawRawGeometry(oofegGraphicContext &, TimeStep *tStep) override
FloatArray globalCentroid
void computeConstitutiveMatrixAt(FloatMatrix &answer, MatResponseMode rMode, GaussPoint *gp, TimeStep *tStep) override
double computeVolumeAround(GaussPoint *aGaussPoint) override
static ParamKey IPK_LatticeLink3d_dirvector
static ParamKey IPK_LatticeLink3d_diameter
void computeBmatrixAt(GaussPoint *, FloatMatrix &, int=1, int=ALL_STRAINS) override
FloatMatrix localCoordinateSystem
virtual void computeGeometryProperties()
const FloatArrayF< 6 > & giveLatticeStress() const
Returns lattice stress.
LatticeStructuralElement(int n, Domain *d)
std::unique_ptr< FloatArray > initialDisplacements
Initial displacement vector, describes the initial nodal displacements when element has been casted.
@ 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)