MCPcopy Create free account
hub / github.com/OpenSees/OpenSees / computeReactions

Method computeReactions

SRC/element/forceBeamColumn/ForceBeamColumnCBDI3d.cpp:596–656  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

594}
595
596void
597ForceBeamColumnCBDI3d::computeReactions(double *p0)
598{
599 int type;
600 double L = crdTransf->getInitialLength();
601
602 for (int i = 0; i < numEleLoads; i++) {
603
604 double loadFactor = eleLoadFactors[i];
605 const Vector &data = eleLoads[i]->getData(type, loadFactor);
606
607 if (type == LOAD_TAG_Beam3dUniformLoad) {
608 double wy = data(0)*loadFactor; // Transverse
609 double wz = data(1)*loadFactor; // Transverse
610 double wa = data(2)*loadFactor; // Axial
611
612 p0[0] -= wa*L;
613 double V = 0.5*wy*L;
614 p0[1] -= V;
615 p0[2] -= V;
616 V = 0.5*wz*L;
617 p0[3] -= V;
618 p0[4] -= V;
619 }
620 else if (type == LOAD_TAG_Beam3dPartialUniformLoad) {
621 double wa = data(2)*loadFactor; // Axial
622 double wy = data(0)*loadFactor; // Transverse
623 double wz = data(1)*loadFactor; // Transverse
624 double a = data(3)*L;
625 double b = data(4)*L;
626
627 p0[0] -= wa*(b-a);
628 double Fy = wy*(b-a);
629 double c = a + 0.5*(b-a);
630 p0[1] -= Fy*(1-c/L);
631 p0[2] -= Fy*c/L;
632 double Fz = wz*(b-a);
633 p0[3] -= Fz*(1-c/L);
634 p0[4] -= Fz*c/L;
635 }
636 else if (type == LOAD_TAG_Beam3dPointLoad) {
637 double Py = data(0)*loadFactor;
638 double Pz = data(1)*loadFactor;
639 double N = data(2)*loadFactor;
640 double aOverL = data(3);
641
642 if (aOverL < 0.0 || aOverL > 1.0)
643 continue;
644
645 double V1 = Py*(1.0-aOverL);
646 double V2 = Py*aOverL;
647 p0[0] -= N;
648 p0[1] -= V1;
649 p0[2] -= V2;
650 V1 = Pz*(1.0-aOverL);
651 V2 = Pz*aOverL;
652 p0[3] -= V1;
653 p0[4] -= V2;

Callers 3

PrintMethod · 0.95
getResponseMethod · 0.95

Calls 2

getInitialLengthMethod · 0.45
getDataMethod · 0.45

Tested by

no test coverage detected