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

Method computeReactions

SRC/element/forceBeamColumn/ForceBeamColumn3d.cpp:765–834  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

763 }
764
765void
766ForceBeamColumn3d::computeReactions(double *p0)
767{
768 int type;
769 double L = crdTransf->getInitialLength();
770
771 for (int i = 0; i < numEleLoads; i++) {
772
773 double loadFactor = eleLoadFactors[i];
774 const Vector &data = eleLoads[i]->getData(type, loadFactor);
775
776 if (type == LOAD_TAG_Beam3dUniformLoad) {
777 double wy = data(0)*loadFactor; // Transverse
778 double wz = data(1)*loadFactor; // Transverse
779 double wa = data(2)*loadFactor; // Axial
780
781 p0[0] -= wa*L;
782 double V = 0.5*wy*L;
783 p0[1] -= V;
784 p0[2] -= V;
785 V = 0.5*wz*L;
786 p0[3] -= V;
787 p0[4] -= V;
788 }
789 else if (type == LOAD_TAG_Beam3dPartialUniformLoad) {
790 double wy = data(0) * loadFactor; // Transverse Y at start
791 double wz = data(1) * loadFactor; // Transverse Z at start
792 double wa = data(2) * loadFactor; // Axial at start
793 double a = data(3) * L;
794 double b = data(4) * L;
795 double wyb = data(5) * loadFactor; // Transverse Y at end
796 double wzb = data(6) * loadFactor; // Transverse Z at end
797 double wab = data(7) * loadFactor; // Axial at end
798 p0[0] -= wa * (b - a) + 0.5 * (wab - wa) * (b - a);
799 double c = a + 0.5 * (b - a);
800 double Fy = wy * (b - a); // resultant transverse load Y (uniform part)
801 p0[1] -= Fy * (1 - c / L);
802 p0[2] -= Fy * c / L;
803 double Fz = wz * (b - a); // resultant transverse load Z (uniform part)
804 p0[3] -= Fz * (1 - c / L);
805 p0[4] -= Fz * c / L;
806 c = a + 2.0 / 3.0 * (b - a);
807 Fy = 0.5 * (wyb - wy) * (b - a); // resultant transverse load Y (triang. part)
808 p0[1] -= Fy * (1 - c / L);
809 p0[2] -= Fy * c / L;
810 Fz = 0.5 * (wzb - wz) * (b - a); // resultant transverse load Z (triang. part)
811 p0[3] -= Fz * (1 - c / L);
812 p0[4] -= Fz * c / L;
813 }
814 else if (type == LOAD_TAG_Beam3dPointLoad) {
815 double Py = data(0)*loadFactor;
816 double Pz = data(1)*loadFactor;
817 double N = data(2)*loadFactor;
818 double aOverL = data(3);
819
820 if (aOverL < 0.0 || aOverL > 1.0)
821 continue;
822

Callers 3

PrintMethod · 0.95
getResponseMethod · 0.95

Calls 2

getInitialLengthMethod · 0.45
getDataMethod · 0.45

Tested by

no test coverage detected