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

Method computeReactions

SRC/element/forceBeamColumn/ForceBeamColumn2d.cpp:1067–1127  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1065}
1066
1067void
1068ForceBeamColumn2d::computeReactions(double *p0)
1069{
1070 int type;
1071 double L = crdTransf->getInitialLength();
1072
1073 for (int i = 0; i < numEleLoads; i++) {
1074
1075 double loadFactor = eleLoadFactors[i];
1076 const Vector &data = eleLoads[i]->getData(type, loadFactor);
1077
1078 if (type == LOAD_TAG_Beam2dUniformLoad) {
1079 double wa = data(1)*loadFactor; // Axial
1080 double wy = data(0)*loadFactor; // Transverse
1081
1082 p0[0] -= wa*L;
1083 double V = 0.5*wy*L;
1084 p0[1] -= V;
1085 p0[2] -= V;
1086 }
1087 if (type == LOAD_TAG_BeamUniformMoment) {
1088 double mz = data(2)*loadFactor; // About z
1089
1090 p0[1] += mz;
1091 p0[2] -= mz;
1092 }
1093 else if (type == LOAD_TAG_Beam2dPartialUniformLoad) {
1094 double waa = data(2)*loadFactor; // Axial
1095 double wab = data(3)*loadFactor; // Axial
1096 double wya = data(0)*loadFactor; // Transverse
1097 double wyb = data(1)*loadFactor; // Transverse
1098 double a = data(4)*L;
1099 double b = data(5)*L;
1100
1101 p0[0] -= waa*(b-a) + 0.5*(wab-waa)*(b-a);
1102 double Fy = wya*(b-a);
1103 double c = a + 0.5*(b-a);
1104 p0[1] -= Fy*(1-c/L);
1105 p0[2] -= Fy*c/L;
1106 Fy = 0.5*(wyb-wya)*(b-a);
1107 c = a + 2.0/3.0*(b-a);
1108 p0[1] -= Fy*(1-c/L);
1109 p0[2] -= Fy*c/L;
1110 }
1111 else if (type == LOAD_TAG_Beam2dPointLoad) {
1112 double P = data(0)*loadFactor;
1113 double N = data(1)*loadFactor;
1114 double aOverL = data(2);
1115
1116 if (aOverL < 0.0 || aOverL > 1.0)
1117 continue;
1118
1119 double V1 = P*(1.0-aOverL);
1120 double V2 = P*aOverL;
1121
1122 p0[0] -= N;
1123 p0[1] -= V1;
1124 p0[2] -= V2;

Callers 3

PrintMethod · 0.95
getResponseMethod · 0.95

Calls 2

getInitialLengthMethod · 0.45
getDataMethod · 0.45

Tested by

no test coverage detected