75LatticeLink3dBoundary :: computeStiffnessMatrix(
FloatMatrix &answer, MatResponseMode rMode,
81 FloatMatrix answerTemp(12, 12), answerHelp, ttk(18, 12);
82 bool matStiffSymmFlag = this->
giveCrossSection()->isCharacteristicMtrxSymmetric(rMode);
97 answerTemp.beProductOf(bjt, dbj);
105 for (
int m = 1; m <= 12; m++ ) {
106 for (
int k = 1; k <= 12; k++ ) {
107 answer.
at(m, k) = answerTemp.at(m, k);
111 if ( matStiffSymmFlag ) {
122 for (
int m = 1; m <= 12; m++ ) {
123 for (
int k = 1; k <= 12; k++ ) {
124 answerTemp.at(m, k) = answer.
at(m, k);
128 IntArray projectionComponentNodeOne(3);
129 projectionComponentNodeOne.
zero();
134 IntArray projectionComponentNodeTwo(3);
135 projectionComponentNodeTwo.
zero();
140 for (
int k = 1; k <= 12; k++ ) {
143 t.at(1, 13) = projectionComponentNodeOne.
at(1);
144 t.at(2, 14) = projectionComponentNodeOne.
at(2);
145 t.at(3, 15) = projectionComponentNodeOne.
at(3);
148 t.at(2, 16) = projectionComponentNodeOne.
at(3);
149 t.at(1, 17) = projectionComponentNodeOne.
at(3);
150 t.at(1, 18) = projectionComponentNodeOne.
at(2);
153 t.at(7, 13) = projectionComponentNodeTwo.
at(1);
154 t.at(8, 14) = projectionComponentNodeTwo.
at(2);
155 t.at(9, 15) = projectionComponentNodeTwo.
at(3);
157 t.at(8, 16) = projectionComponentNodeTwo.
at(3);
158 t.at(7, 17) = projectionComponentNodeTwo.
at(3);
159 t.at(7, 18) = projectionComponentNodeTwo.
at(2);
231 IntArray projectionComponentNodeOne(3);
232 projectionComponentNodeOne.
zero();
237 IntArray projectionComponentNodeTwo(3);
238 projectionComponentNodeTwo.
zero();
250 u.
at(1) = u.
at(1) + projectionComponentNodeOne.
at(1) * u.
at(13) + projectionComponentNodeOne.
at(2) * u.
at(18) + projectionComponentNodeOne.
at(3) * u.
at(17);
251 u.
at(2) = u.
at(2) + projectionComponentNodeOne.
at(2) * u.
at(14) + projectionComponentNodeOne.
at(3) * u.
at(16);
252 u.
at(3) = u.
at(3) + projectionComponentNodeOne.
at(3) * u.
at(15);
254 u.
at(7) = u.
at(7) + projectionComponentNodeTwo.
at(1) * u.
at(13) + projectionComponentNodeTwo.
at(2) * u.
at(18) + projectionComponentNodeTwo.
at(3) * u.
at(17);
255 u.
at(8) = u.
at(8) + projectionComponentNodeTwo.
at(2) * u.
at(14) + projectionComponentNodeTwo.
at(3) * u.
at(16);
256 u.
at(9) = u.
at(9) + projectionComponentNodeTwo.
at(3) * u.
at(15);
265 for (
int i = 1; i <= 12; i++ ) {
266 uTemp.
at(i) = u.
at(i);
343LatticeLink3dBoundary :: giveInternalForcesVector(
FloatArray &answer,
TimeStep *tStep,
int useUpdatedGpRecord)
363 if ( useUpdatedGpRecord == 1 ) {
365 ->giveStressVector();
377 for (
int m = 1; m <= 12; m++ ) {
378 answer.
at(m) = bs.
at(m);
385 IntArray projectionComponentNodeOne(3);
386 projectionComponentNodeOne.
zero();
391 IntArray projectionComponentNodeTwo(3);
392 projectionComponentNodeTwo.
zero();
399 answer.
at(13) = projectionComponentNodeOne.
at(1) * answer.
at(1) + projectionComponentNodeTwo.
at(1) * answer.
at(7);
400 answer.
at(14) = projectionComponentNodeOne.
at(2) * answer.
at(2) + projectionComponentNodeTwo.
at(2) * answer.
at(8);
401 answer.
at(15) = projectionComponentNodeOne.
at(3) * answer.
at(3) + projectionComponentNodeTwo.
at(3) * answer.
at(9);
404 answer.
at(16) = projectionComponentNodeOne.
at(3) * answer.
at(2) + projectionComponentNodeTwo.
at(3) * answer.
at(8);
405 answer.
at(17) = projectionComponentNodeOne.
at(3) * answer.
at(1) + projectionComponentNodeTwo.
at(3) * answer.
at(7);
406 answer.
at(18) = projectionComponentNodeOne.
at(2) * answer.
at(1) + projectionComponentNodeTwo.
at(2) * answer.
at(7);
437LatticeLink3dBoundary :: computeGeometryProperties()
448 specimenDimension.
at(1) = this->
giveNode(3)->giveCoordinate(1);
449 specimenDimension.
at(2) = this->
giveNode(3)->giveCoordinate(2);
450 specimenDimension.
at(3) = this->
giveNode(3)->giveCoordinate(3);
452 IntArray projectionComponentNodeOne(3);
453 projectionComponentNodeOne.
zero();
458 IntArray projectionComponentNodeTwo(3);
459 projectionComponentNodeTwo.
zero();
464 for (
int i = 0; i < 3; i++ ) {
465 coordsA.
at(i + 1) = nodeA->
giveCoordinate(i + 1) + projectionComponentNodeOne.
at(i + 1) * specimenDimension.
at(i + 1);
466 coordsB.
at(i + 1) = nodeB->
giveCoordinate(i + 1) + projectionComponentNodeTwo.
at(i + 1) * specimenDimension.
at(i + 1);
474 for (
int i = 0; i < 3; i++ ) {
475 rigidGlobal.
at(i + 1) = coordsB.
at(i + 1) - coordsA.
at(i + 1);
487 if ( normal.at(1) == 0 ) {
489 s.at(2) = normal.at(3);
490 s.at(3) = -normal.at(2);
491 }
else if ( normal.at(2) == 0 ) {
492 s.at(1) = normal.at(3);
494 s.at(3) = -normal.at(1);
496 s.at(1) = normal.at(2);
497 s.at(2) = -normal.at(1);
512 for (
int i = 1; i <= 3; i++ ) {
523 for (
int i = 1; i <= 3; i++ ) {
591 if ( !
gc.testElementGraphicActivity(
this) ) {
596 EASValsSetColor(
gc.getActiveCrackColor() );
601 specimenDimension.
at(1) = this->
giveNode(3)->giveCoordinate(1);
602 specimenDimension.
at(2) = this->
giveNode(3)->giveCoordinate(2);
603 specimenDimension.
at(3) = this->
giveNode(3)->giveCoordinate(3);
606 IntArray projectionComponentNodeOne(3);
607 projectionComponentNodeOne.
zero();
612 IntArray projectionComponentNodeTwo(3);
613 projectionComponentNodeTwo.
zero();
619 p [ 0 ].x = ( FPNum ) this->
giveNode(1)->giveCoordinate(1) + projectionComponentNodeOne.
at(1) * specimenDimension.
at(1);
620 p [ 0 ].y = ( FPNum ) this->
giveNode(1)->giveCoordinate(2) + projectionComponentNodeOne.
at(2) * specimenDimension.
at(2);
621 p [ 0 ].z = ( FPNum ) this->
giveNode(1)->giveCoordinate(3) + projectionComponentNodeOne.
at(3) * specimenDimension.
at(3);
622 p [ 1 ].x = ( FPNum ) this->
giveNode(2)->giveCoordinate(1) + projectionComponentNodeTwo.
at(1) * specimenDimension.
at(1);
623 p [ 1 ].y = ( FPNum ) this->
giveNode(2)->giveCoordinate(2) + projectionComponentNodeTwo.
at(2) * specimenDimension.
at(2);
624 p [ 1 ].z = ( FPNum ) this->
giveNode(2)->giveCoordinate(3) + projectionComponentNodeTwo.
at(3) * specimenDimension.
at(3);
626 go = CreateLine3D(p);
627 EGWithMaskChangeAttributes(WIDTH_MASK | COLOR_MASK | LAYER_MASK, go);
628 EGAttachObject(go, ( EObjectP )
this);
629 EMAddGraphicsToModel(ESIModel(), go);
636 if ( !
gc.testElementGraphicActivity(
this) ) {
640 double defScale =
gc.getDefScale();
645 EASValsSetColor(
gc.getDeformedElementColor() );
649 specimenDimension.
at(1) = this->
giveNode(3)->giveCoordinate(1);
650 specimenDimension.
at(2) = this->
giveNode(3)->giveCoordinate(2);
651 specimenDimension.
at(3) = this->
giveNode(3)->giveCoordinate(3);
654 dispOne.
at(1) = this->
giveNode(1)->giveDofWithID(D_u)->giveUnknown(VM_Total, tStep);
655 dispOne.
at(2) = this->
giveNode(1)->giveDofWithID(D_v)->giveUnknown(VM_Total, tStep);
656 dispOne.
at(3) = this->
giveNode(1)->giveDofWithID(D_w)->giveUnknown(VM_Total, tStep);
657 dispOne.
at(4) = this->
giveNode(1)->giveDofWithID(R_u)->giveUnknown(VM_Total, tStep);
658 dispOne.
at(5) = this->
giveNode(1)->giveDofWithID(R_v)->giveUnknown(VM_Total, tStep);
659 dispOne.
at(6) = this->
giveNode(1)->giveDofWithID(R_w)->giveUnknown(VM_Total, tStep);
662 dispTwo.
at(1) = this->
giveNode(2)->giveDofWithID(D_u)->giveUnknown(VM_Total, tStep);
663 dispTwo.
at(2) = this->
giveNode(2)->giveDofWithID(D_v)->giveUnknown(VM_Total, tStep);
664 dispTwo.
at(3) = this->
giveNode(2)->giveDofWithID(D_w)->giveUnknown(VM_Total, tStep);
665 dispTwo.
at(4) = this->
giveNode(2)->giveDofWithID(R_u)->giveUnknown(VM_Total, tStep);
666 dispTwo.
at(5) = this->
giveNode(2)->giveDofWithID(R_v)->giveUnknown(VM_Total, tStep);
667 dispTwo.
at(6) = this->
giveNode(2)->giveDofWithID(R_w)->giveUnknown(VM_Total, tStep);
670 dispThree.
at(1) = this->
giveNode(3)->giveDofWithID(D_u)->giveUnknown(VM_Total, tStep);
671 dispThree.
at(2) = this->
giveNode(3)->giveDofWithID(D_v)->giveUnknown(VM_Total, tStep);
672 dispThree.
at(3) = this->
giveNode(3)->giveDofWithID(D_w)->giveUnknown(VM_Total, tStep);
673 dispThree.
at(4) = this->
giveNode(3)->giveDofWithID(R_u)->giveUnknown(VM_Total, tStep);
674 dispThree.
at(5) = this->
giveNode(3)->giveDofWithID(R_v)->giveUnknown(VM_Total, tStep);
675 dispThree.
at(6) = this->
giveNode(3)->giveDofWithID(R_w)->giveUnknown(VM_Total, tStep);
677 IntArray projectionComponentNodeOne(3);
678 projectionComponentNodeOne.
zero();
683 IntArray projectionComponentNodeTwo(3);
684 projectionComponentNodeTwo.
zero();
691 dispOne.
at(1) = dispOne.
at(1) + projectionComponentNodeOne.
at(1) * dispThree.
at(1) + projectionComponentNodeOne.
at(2) * dispThree.
at(4) + projectionComponentNodeOne.
at(3) * dispThree.
at(5);
692 dispOne.
at(2) = dispOne.
at(2) + projectionComponentNodeOne.
at(2) * dispThree.
at(2) + projectionComponentNodeOne.
at(3) * dispThree.
at(6);
693 dispOne.
at(3) = dispOne.
at(3) + projectionComponentNodeOne.
at(3) * dispThree.
at(3);
696 dispTwo.
at(1) = dispTwo.
at(1) + projectionComponentNodeTwo.
at(1) * dispThree.
at(1) + projectionComponentNodeTwo.
at(2) * dispThree.
at(4) + projectionComponentNodeTwo.
at(3) * dispThree.
at(5);
697 dispTwo.
at(2) = dispTwo.
at(2) + projectionComponentNodeTwo.
at(2) * dispThree.
at(2) + projectionComponentNodeTwo.
at(3) * dispThree.
at(6);
698 dispTwo.
at(3) = dispTwo.
at(3) + projectionComponentNodeTwo.
at(3) * dispThree.
at(3);
700 double x1, y1, z1, x2, y2, z2;
701 x1 = this->
giveNode(1)->giveCoordinate(1) + projectionComponentNodeOne.
at(1) * specimenDimension.
at(1);
702 y1 = this->
giveNode(1)->giveCoordinate(2) + projectionComponentNodeOne.
at(2) * specimenDimension.
at(2);
703 z1 = this->
giveNode(1)->giveCoordinate(3) + projectionComponentNodeOne.
at(3) * specimenDimension.
at(3);
705 x2 = this->
giveNode(2)->giveCoordinate(1) + projectionComponentNodeTwo.
at(1) * specimenDimension.
at(1);
706 y2 = this->
giveNode(2)->giveCoordinate(2) + projectionComponentNodeTwo.
at(2) * specimenDimension.
at(2);
707 z2 = this->
giveNode(2)->giveCoordinate(3) + projectionComponentNodeTwo.
at(3) * specimenDimension.
at(3);
709 p [ 0 ].x = ( FPNum ) x1 + defScale * dispOne.
at(1);
710 p [ 0 ].y = ( FPNum ) y1 + defScale * dispOne.
at(2);
711 p [ 0 ].z = ( FPNum ) z1 + defScale * dispOne.
at(3);
713 p [ 1 ].x = ( FPNum ) x2 + defScale * dispTwo.
at(1);
714 p [ 1 ].y = ( FPNum ) y2 + defScale * dispTwo.
at(2);
715 p [ 1 ].z = ( FPNum ) z2 + defScale * dispTwo.
at(3);
717 go = CreateLine3D(p);
718 EGWithMaskChangeAttributes(WIDTH_MASK | COLOR_MASK | LAYER_MASK, go);
719 EMAddGraphicsToModel(ESIModel(), go);
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