69BondLink3dBoundary :: ~BondLink3dBoundary()
73BondLink3dBoundary :: computeStiffnessMatrix(
FloatMatrix &answer, MatResponseMode rMode,
120 unitCellSize.
at(1) = this->
giveNode(3)->giveCoordinate(1);
121 unitCellSize.
at(2) = this->
giveNode(3)->giveCoordinate(2);
122 unitCellSize.
at(3) = this->
giveNode(3)->giveCoordinate(3);
132 for (
int i = 1; i <= 3; i++ ) {
133 k1.
at(i, 3 * i - 2) = unitCellSize.
at(1) * switches1.
at(1);
134 k1.
at(i, 3 * i - 1) = unitCellSize.
at(2) * switches1.
at(2);
135 k1.
at(i, 3 * i) = unitCellSize.
at(3) * switches1.
at(3);
138 for (
int i = 1; i <= 3; i++ ) {
139 k2.
at(i, 3 * i - 2) = unitCellSize.
at(1) * switches2.
at(1);
140 k2.
at(i, 3 * i - 1) = unitCellSize.
at(2) * switches2.
at(2);
141 k2.
at(i, 3 * i) = unitCellSize.
at(3) * switches2.
at(3);
148 answer.
assemble(k1, { 1, 2, 3, 4, 5, 6 }, { 13, 14, 15, 16, 17, 18, 19, 20, 21 });
149 answer.
assemble(k2, { 7, 8, 9, 10, 11, 12 }, { 13, 14, 15, 16, 17, 18, 19, 20, 21 });
154BondLink3dBoundary :: computeGtoLRotationMatrix(
FloatMatrix &answer)
163 for ( i = 1; i <= 3; i++ ) {
164 for ( j = 1; j <= 3; j++ ) {
165 answer.
at(i, j) = lcs.
at(i, j);
166 answer.
at(i + 3, j + 3) = lcs.
at(i, j);
167 answer.
at(i + 6, j + 6) = lcs.
at(i, j);
176BondLink3dBoundary :: giveLocalCoordinateSystem(
FloatMatrix &answer)
190BondLink3dBoundary :: giveDofManDofIDMask(
int inode,
IntArray &answer)
const
193 answer = { D_u, D_v, D_w, R_u, R_v, R_w };
194 }
else if ( inode == 2 ) {
195 answer = { D_u, D_v, D_w };
196 }
else if ( inode == 3 ) {
197 answer = { E_xx, E_xy, E_xz, E_yx, E_yy, E_yz, E_zx, E_zy, E_zz };
202BondLink3dBoundary :: initializeFrom(
InputRecord &ir,
int priority)
205 StructuralElement :: initializeFrom(ir, priority);
213BondLink3dBoundary :: computeGeometryProperties()
227 for (
int i = 0; i < 3; i++ ) {
235 for (
int i = 0; i < 3; i++ ) {
236 rigidGlobal.
at(i + 1) = coordsA.at(i + 1) - coordsB.
at(i + 1);
248 if ( normal.at(1) == 0 ) {
250 s.at(2) = normal.at(3);
251 s.at(3) = -normal.at(2);
252 }
else if ( normal.at(2) == 0 ) {
253 s.at(1) = normal.at(3);
255 s.at(3) = -normal.at(1);
257 s.at(1) = normal.at(2);
258 s.at(2) = -normal.at(1);
273 for (
int i = 1; i <= 3; i++ ) {
285 for (
int i = 1; i <= 3; i++ ) {
298 StructuralElement :: saveContext(stream, mode);
305 StructuralElement :: restoreContext(stream, mode);
310BondLink3dBoundary :: giveInternalForcesVector(
FloatArray &answer,
311 TimeStep *tStep,
int useUpdatedGpRecord)
331 if ( useUpdatedGpRecord == 1 ) {
361 for (
int x = -1; x < 2; x++ ) {
362 for (
int y = -1; y < 2; y++ ) {
363 for (
int z = -1; z < 2; z++ ) {
364 if ( !( z == 0 && y == 0 && x == 0 ) ) {
422 if ( !
gc.testElementGraphicActivity(
this) ) {
427 EASValsSetColor(
gc.getElementColor() );
430 p [ 0 ].x = ( FPNum ) this->
giveNode(1)->giveCoordinate(1);
431 p [ 0 ].y = ( FPNum ) this->
giveNode(1)->giveCoordinate(2);
432 p [ 0 ].z = ( FPNum ) this->
giveNode(1)->giveCoordinate(3);
433 p [ 1 ].x = ( FPNum ) this->
giveNode(2)->giveCoordinate(1);
434 p [ 1 ].y = ( FPNum ) this->
giveNode(2)->giveCoordinate(2);
435 p [ 1 ].z = ( FPNum ) this->
giveNode(2)->giveCoordinate(3);
437 go = CreateLine3D(p);
438 EGWithMaskChangeAttributes(WIDTH_MASK | COLOR_MASK | LAYER_MASK, go);
439 EGAttachObject(go, ( EObjectP )
this);
440 EMAddGraphicsToModel(ESIModel(), go);
447 if ( !
gc.testElementGraphicActivity(
this) ) {
451 double defScale =
gc.getDefScale();
456 EASValsSetColor(
gc.getDeformedElementColor() );
459 p [ 0 ].x = ( FPNum ) this->
giveNode(1)->giveUpdatedCoordinate(1, tStep, defScale);
460 p [ 0 ].y = ( FPNum ) this->
giveNode(1)->giveUpdatedCoordinate(2, tStep, defScale);
461 p [ 0 ].z = ( FPNum ) this->
giveNode(1)->giveUpdatedCoordinate(3, tStep, defScale);
463 p [ 1 ].x = ( FPNum ) this->
giveNode(2)->giveUpdatedCoordinate(1, tStep, defScale);
464 p [ 1 ].y = ( FPNum ) this->
giveNode(2)->giveUpdatedCoordinate(2, tStep, defScale);
465 p [ 1 ].z = ( FPNum ) this->
giveNode(2)->giveUpdatedCoordinate(3, tStep, defScale);
467 go = CreateLine3D(p);
468 EGWithMaskChangeAttributes(WIDTH_MASK | COLOR_MASK | LAYER_MASK, go);
469 EMAddGraphicsToModel(ESIModel(), go);
#define REGISTER_Element(class)
void giveSwitches(IntArray &answer, int location)
static ParamKey IPK_BondLink3dBoundary_location
void computeStressVector(FloatArray &answer, const FloatArray &strain, GaussPoint *gp, TimeStep *tStep) override
void drawRawGeometry(oofegGraphicContext &, TimeStep *tStep) override
void computeGeometryProperties() override
int giveLocalCoordinateSystem(FloatMatrix &answer) override
void drawDeformedGeometry(oofegGraphicContext &, TimeStep *tStep, UnknownType) override
void computeConstitutiveMatrixAt(FloatMatrix &answer, MatResponseMode rMode, GaussPoint *gp, TimeStep *tStep) override
FloatArray directionVector
double computeVolumeAround(GaussPoint *aGaussPoint) override
BondLink3d(int n, Domain *)
FloatArray globalCentroid
FloatMatrix localCoordinateSystem
void computeBmatrixAt(GaussPoint *, FloatMatrix &, int=1, int=ALL_STRAINS) 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
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 resizeWithData(Index, Index)
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.
void assemble(const FloatMatrix &src, const IntArray &loc)
double at(std::size_t i, std::size_t j) const
void beUnitMatrix()
Sets receiver to unity matrix.
MaterialMode giveMaterialMode()
Returns corresponding material mode of receiver.
StructuralCrossSection * giveStructuralCrossSection()
Helper function which returns the structural cross-section for the element.
std::unique_ptr< FloatArray > initialDisplacements
Initial displacement vector, describes the initial nodal displacements when element has been casted.
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_UPDATE_PARAMETER(_val, _pm, _ir, _componentnum, _paramkey, _prio)