int FiberSection2d::getResponse(int responseID, Information §Info) { if (responseID == 5) { int numData = 5*numFibers; Vector data(numData); int count = 0; for (int j = 0; j < numFibers; j++) { double yLoc, zLoc, A, stress, strain; yLoc = matData[3*j]; zLoc = matData[3*j+1]; A = matData[3*j+2]; stress = theMaterials[j]->getStress(); strain = theMaterials[j]->getStrain(); data(count) = yLoc; data(count+1) = zLoc; data(count+2) = A; data(count+3) = stress; data(count+4) = strain; count += 5; } return sectInfo.setVector(data); } else if (responseID == 6) { int count = 0; for (int j = 0; j < numFibers; j++) { if (theMaterials[j]->hasFailed() == true) count++; } return sectInfo.setInt(count); } return SectionForceDeformation::getResponse(responseID, sectInfo); }
int FiberSection3d::getResponse(int responseID, Information §Info) { // Just call the base class method ... don't need to define // this function, but keeping it here just for clarity if (responseID == 5) { int numData = 5*numFibers; Vector data(numData); int count = 0; for (int j = 0; j < numFibers; j++) { double yLoc, zLoc, A, stress, strain; yLoc = matData[3*j]; zLoc = matData[3*j+1]; A = matData[3*j+2]; stress = theMaterials[j]->getStress(); strain = theMaterials[j]->getStrain(); data(count) = yLoc; data(count+1) = zLoc; data(count+2) = A; data(count+3) = stress; data(count+4) = strain; count += 5; } return sectInfo.setVector(data); } else if (responseID == 6) { int count = 0; for (int j = 0; j < numFibers; j++) { if (theMaterials[j]->hasFailed() == true) count++; } return sectInfo.setInt(count); } return SectionForceDeformation::getResponse(responseID, sectInfo); }