188Lattice3dBoundary :: computeStiffnessMatrix(
FloatMatrix &answer, MatResponseMode rMode,
195 FloatMatrix answerTemp(12, 12), answerHelp, ttk(18, 12);
196 bool matStiffSymmFlag = this->
giveCrossSection()->isCharacteristicMtrxSymmetric(rMode);
211 for (
int i = 1; i <= 6; i++ ) {
212 d.
at(i, i) *= volume;
217 answerTemp.beProductOf(bjt, dbj);
225 for (
int m = 1; m <= 12; m++ ) {
226 for (
int k = 1; k <= 12; k++ ) {
227 answer.
at(m, k) = answerTemp.at(m, k);
231 if ( matStiffSymmFlag ) {
242 for (
int m = 1; m <= 12; m++ ) {
243 for (
int k = 1; k <= 12; k++ ) {
244 answerTemp.at(m, k) = answer.
at(m, k);
248 IntArray projectionComponentNodeOne(3);
249 projectionComponentNodeOne.
zero();
254 IntArray projectionComponentNodeTwo(3);
255 projectionComponentNodeTwo.
zero();
260 for (
int k = 1; k <= 12; k++ ) {
263 t.at(1, 13) = projectionComponentNodeOne.
at(1);
264 t.at(2, 14) = projectionComponentNodeOne.
at(2);
265 t.at(3, 15) = projectionComponentNodeOne.
at(3);
268 t.at(2, 16) = projectionComponentNodeOne.
at(3);
269 t.at(1, 17) = projectionComponentNodeOne.
at(3);
270 t.at(1, 18) = projectionComponentNodeOne.
at(2);
273 t.at(7, 13) = projectionComponentNodeTwo.
at(1);
274 t.at(8, 14) = projectionComponentNodeTwo.
at(2);
275 t.at(9, 15) = projectionComponentNodeTwo.
at(3);
277 t.at(8, 16) = projectionComponentNodeTwo.
at(3);
278 t.at(7, 17) = projectionComponentNodeTwo.
at(3);
279 t.at(7, 18) = projectionComponentNodeTwo.
at(2);
363 IntArray projectionComponentNodeOne(3);
364 projectionComponentNodeOne.
zero();
369 IntArray projectionComponentNodeTwo(3);
370 projectionComponentNodeTwo.
zero();
382 u.
at(1) = u.
at(1) + projectionComponentNodeOne.
at(1) * u.
at(13) + projectionComponentNodeOne.
at(2) * u.
at(18) + projectionComponentNodeOne.
at(3) * u.
at(17);
383 u.
at(2) = u.
at(2) + projectionComponentNodeOne.
at(2) * u.
at(14) + projectionComponentNodeOne.
at(3) * u.
at(16);
384 u.
at(3) = u.
at(3) + projectionComponentNodeOne.
at(3) * u.
at(15);
386 u.
at(7) = u.
at(7) + projectionComponentNodeTwo.
at(1) * u.
at(13) + projectionComponentNodeTwo.
at(2) * u.
at(18) + projectionComponentNodeTwo.
at(3) * u.
at(17);
387 u.
at(8) = u.
at(8) + projectionComponentNodeTwo.
at(2) * u.
at(14) + projectionComponentNodeTwo.
at(3) * u.
at(16);
388 u.
at(9) = u.
at(9) + projectionComponentNodeTwo.
at(3) * u.
at(15);
397 for (
int i = 1; i <= 12; i++ ) {
398 uTemp.
at(i) = u.
at(i);
473Lattice3dBoundary :: giveInternalForcesVector(
FloatArray &answer,
TimeStep *tStep,
int useUpdatedGpRecord)
494 if ( useUpdatedGpRecord == 1 ) {
496 ->giveLatticeStress();
510 for (
int m = 1; m <= 12; m++ ) {
511 answer.
at(m) = bs.
at(m);
518 IntArray projectionComponentNodeOne(3);
519 projectionComponentNodeOne.
zero();
524 IntArray projectionComponentNodeTwo(3);
525 projectionComponentNodeTwo.
zero();
532 answer.
at(13) = projectionComponentNodeOne.
at(1) * answer.
at(1) + projectionComponentNodeTwo.
at(1) * answer.
at(7);
533 answer.
at(14) = projectionComponentNodeOne.
at(2) * answer.
at(2) + projectionComponentNodeTwo.
at(2) * answer.
at(8);
534 answer.
at(15) = projectionComponentNodeOne.
at(3) * answer.
at(3) + projectionComponentNodeTwo.
at(3) * answer.
at(9);
537 answer.
at(16) = projectionComponentNodeOne.
at(3) * answer.
at(2) + projectionComponentNodeTwo.
at(3) * answer.
at(8);
538 answer.
at(17) = projectionComponentNodeOne.
at(3) * answer.
at(1) + projectionComponentNodeTwo.
at(3) * answer.
at(7);
539 answer.
at(18) = projectionComponentNodeOne.
at(2) * answer.
at(1) + projectionComponentNodeTwo.
at(2) * answer.
at(7);
572Lattice3dBoundary :: computeGeometryProperties()
583 specimenDimension.
at(1) = this->
giveNode(3)->giveCoordinate(1);
584 specimenDimension.
at(2) = this->
giveNode(3)->giveCoordinate(2);
585 specimenDimension.
at(3) = this->
giveNode(3)->giveCoordinate(3);
587 IntArray projectionComponentNodeOne(3);
588 projectionComponentNodeOne.
zero();
593 IntArray projectionComponentNodeTwo(3);
594 projectionComponentNodeTwo.
zero();
599 for (
int i = 0; i < 3; i++ ) {
600 coordsA.
at(i + 1) = nodeA->
giveCoordinate(i + 1) + projectionComponentNodeOne.
at(i + 1) * specimenDimension.
at(i + 1);
601 coordsB.
at(i + 1) = nodeB->
giveCoordinate(i + 1) + projectionComponentNodeTwo.
at(i + 1) * specimenDimension.
at(i + 1);
610 for (
int i = 0; i < 3; i++ ) {
611 this->
normal.at(i + 1) = coordsB.
at(i + 1) - coordsA.
at(i + 1);
616 for (
int i = 0; i < 3; i++ ) {
622 for (
int i = 0; i < 3; i++ ) {
623 this->
midPoint.at(i + 1) = 0.5 * ( coordsB.
at(i + 1) + coordsA.
at(i + 1) );
694 if ( !
gc.testElementGraphicActivity(
this) ) {
699 EASValsSetColor(
gc.getActiveCrackColor() );
704 specimenDimension.
at(1) = this->
giveNode(3)->giveCoordinate(1);
705 specimenDimension.
at(2) = this->
giveNode(3)->giveCoordinate(2);
706 specimenDimension.
at(3) = this->
giveNode(3)->giveCoordinate(3);
709 IntArray projectionComponentNodeOne(3);
710 projectionComponentNodeOne.
zero();
715 IntArray projectionComponentNodeTwo(3);
716 projectionComponentNodeTwo.
zero();
722 p [ 0 ].x = ( FPNum ) this->
giveNode(1)->giveCoordinate(1) + projectionComponentNodeOne.
at(1) * specimenDimension.
at(1);
723 p [ 0 ].y = ( FPNum ) this->
giveNode(1)->giveCoordinate(2) + projectionComponentNodeOne.
at(2) * specimenDimension.
at(2);
724 p [ 0 ].z = ( FPNum ) this->
giveNode(1)->giveCoordinate(3) + projectionComponentNodeOne.
at(3) * specimenDimension.
at(3);
725 p [ 1 ].x = ( FPNum ) this->
giveNode(2)->giveCoordinate(1) + projectionComponentNodeTwo.
at(1) * specimenDimension.
at(1);
726 p [ 1 ].y = ( FPNum ) this->
giveNode(2)->giveCoordinate(2) + projectionComponentNodeTwo.
at(2) * specimenDimension.
at(2);
727 p [ 1 ].z = ( FPNum ) this->
giveNode(2)->giveCoordinate(3) + projectionComponentNodeTwo.
at(3) * specimenDimension.
at(3);
729 go = CreateLine3D(p);
730 EGWithMaskChangeAttributes(WIDTH_MASK | COLOR_MASK | LAYER_MASK, go);
731 EGAttachObject(go, ( EObjectP )
this);
732 EMAddGraphicsToModel(ESIModel(), go);
785 if ( !
gc.testElementGraphicActivity(
this) ) {
789 double defScale =
gc.getDefScale();
794 EASValsSetColor(
gc.getDeformedElementColor() );
798 specimenDimension.
at(1) = this->
giveNode(3)->giveCoordinate(1);
799 specimenDimension.
at(2) = this->
giveNode(3)->giveCoordinate(2);
800 specimenDimension.
at(3) = this->
giveNode(3)->giveCoordinate(3);
803 dispOne.
at(1) = this->
giveNode(1)->giveDofWithID(D_u)->giveUnknown(VM_Total, tStep);
804 dispOne.
at(2) = this->
giveNode(1)->giveDofWithID(D_v)->giveUnknown(VM_Total, tStep);
805 dispOne.
at(3) = this->
giveNode(1)->giveDofWithID(D_w)->giveUnknown(VM_Total, tStep);
806 dispOne.
at(4) = this->
giveNode(1)->giveDofWithID(R_u)->giveUnknown(VM_Total, tStep);
807 dispOne.
at(5) = this->
giveNode(1)->giveDofWithID(R_v)->giveUnknown(VM_Total, tStep);
808 dispOne.
at(6) = this->
giveNode(1)->giveDofWithID(R_w)->giveUnknown(VM_Total, tStep);
811 dispTwo.
at(1) = this->
giveNode(2)->giveDofWithID(D_u)->giveUnknown(VM_Total, tStep);
812 dispTwo.
at(2) = this->
giveNode(2)->giveDofWithID(D_v)->giveUnknown(VM_Total, tStep);
813 dispTwo.
at(3) = this->
giveNode(2)->giveDofWithID(D_w)->giveUnknown(VM_Total, tStep);
814 dispTwo.
at(4) = this->
giveNode(2)->giveDofWithID(R_u)->giveUnknown(VM_Total, tStep);
815 dispTwo.
at(5) = this->
giveNode(2)->giveDofWithID(R_v)->giveUnknown(VM_Total, tStep);
816 dispTwo.
at(6) = this->
giveNode(2)->giveDofWithID(R_w)->giveUnknown(VM_Total, tStep);
819 dispThree.
at(1) = this->
giveNode(3)->giveDofWithID(E_xx)->giveUnknown(VM_Total, tStep);
820 dispThree.
at(2) = this->
giveNode(3)->giveDofWithID(E_yy)->giveUnknown(VM_Total, tStep);
821 dispThree.
at(3) = this->
giveNode(3)->giveDofWithID(E_zz)->giveUnknown(VM_Total, tStep);
822 dispThree.
at(4) = this->
giveNode(3)->giveDofWithID(G_yz)->giveUnknown(VM_Total, tStep);
823 dispThree.
at(5) = this->
giveNode(3)->giveDofWithID(G_xz)->giveUnknown(VM_Total, tStep);
824 dispThree.
at(6) = this->
giveNode(3)->giveDofWithID(G_xy)->giveUnknown(VM_Total, tStep);
826 IntArray projectionComponentNodeOne(3);
827 projectionComponentNodeOne.
zero();
832 IntArray projectionComponentNodeTwo(3);
833 projectionComponentNodeTwo.
zero();
840 dispOne.
at(1) = dispOne.
at(1) + projectionComponentNodeOne.
at(1) * dispThree.
at(1) + projectionComponentNodeOne.
at(3) * dispThree.
at(5) + projectionComponentNodeOne.
at(2) * dispThree.
at(6);
841 dispOne.
at(2) = dispOne.
at(2) + projectionComponentNodeOne.
at(2) * dispThree.
at(2) + projectionComponentNodeOne.
at(3) * dispThree.
at(4);
842 dispOne.
at(3) = dispOne.
at(3) + projectionComponentNodeOne.
at(3) * dispThree.
at(3);
845 dispTwo.
at(1) = dispTwo.
at(1) + projectionComponentNodeTwo.
at(1) * dispThree.
at(1) + projectionComponentNodeTwo.
at(3) * dispThree.
at(5) + projectionComponentNodeTwo.
at(2) * dispThree.
at(6);
846 dispTwo.
at(2) = dispTwo.
at(2) + projectionComponentNodeTwo.
at(2) * dispThree.
at(2) + projectionComponentNodeTwo.
at(3) * dispThree.
at(4);
847 dispTwo.
at(3) = dispTwo.
at(3) + projectionComponentNodeTwo.
at(3) * dispThree.
at(3);
849 double x1, y1, z1, x2, y2, z2;
850 x1 = this->
giveNode(1)->giveCoordinate(1) + projectionComponentNodeOne.
at(1) * specimenDimension.
at(1);
851 y1 = this->
giveNode(1)->giveCoordinate(2) + projectionComponentNodeOne.
at(2) * specimenDimension.
at(2);
852 z1 = this->
giveNode(1)->giveCoordinate(3) + projectionComponentNodeOne.
at(3) * specimenDimension.
at(3);
854 x2 = this->
giveNode(2)->giveCoordinate(1) + projectionComponentNodeTwo.
at(1) * specimenDimension.
at(1);
855 y2 = this->
giveNode(2)->giveCoordinate(2) + projectionComponentNodeTwo.
at(2) * specimenDimension.
at(2);
856 z2 = this->
giveNode(2)->giveCoordinate(3) + projectionComponentNodeTwo.
at(3) * specimenDimension.
at(3);
858 p [ 0 ].x = ( FPNum ) x1 + defScale * dispOne.
at(1);
859 p [ 0 ].y = ( FPNum ) y1 + defScale * dispOne.
at(2);
860 p [ 0 ].z = ( FPNum ) z1 + defScale * dispOne.
at(3);
862 p [ 1 ].x = ( FPNum ) x2 + defScale * dispTwo.
at(1);
863 p [ 1 ].y = ( FPNum ) y2 + defScale * dispTwo.
at(2);
864 p [ 1 ].z = ( FPNum ) z2 + defScale * dispTwo.
at(3);
866 go = CreateLine3D(p);
867 EGWithMaskChangeAttributes(WIDTH_MASK | COLOR_MASK | LAYER_MASK, go);
868 EMAddGraphicsToModel(ESIModel(), go);
#define OOFEG_RAW_CROSSSECTION_LAYER
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