void FourNodeQuadWithSensitivity::Print(OPS_Stream &s, int flag) { if (flag == 2) { s << "#FourNodeQuadWithSensitivity\n"; int i; const int numNodes = 4; const int nstress = 3 ; for (i=0; i<numNodes; i++) { const Vector &nodeCrd = theNodes[i]->getCrds(); const Vector &nodeDisp = theNodes[i]->getDisp(); s << "#NODE " << nodeCrd(0) << " " << nodeCrd(1) << " " << endln; } // spit out the section location & invoke print on the scetion const int numMaterials = 4; static Vector avgStress(nstress); static Vector avgStrain(nstress); avgStress.Zero(); avgStrain.Zero(); for (i=0; i<numMaterials; i++) { avgStress += theMaterial[i]->getStress(); avgStrain += theMaterial[i]->getStrain(); } avgStress /= numMaterials; avgStrain /= numMaterials; s << "#AVERAGE_STRESS "; for (i=0; i<nstress; i++) s << avgStress(i) << " " ; s << endln; s << "#AVERAGE_STRAIN "; for (i=0; i<nstress; i++) s << avgStrain(i) << " " ; s << endln; } else { s << "\nFourNodeQuadWithSensitivity, element id: " << this->getTag() << endln; s << "\tConnected external nodes: " << connectedExternalNodes; s << "\tthickness: " << thickness << endln; // s << "\tmass density: " << rho << endln; s << "\tsurface pressure: " << pressure << endln; s << "\tbody forces: " << b[0] << " " << b[1] << endln; theMaterial[0]->Print(s,flag); s << "\tStress (xx yy xy)" << endln; for (int i = 0; i < 4; i++) s << "\t\tGauss point " << i+1 << ": " << theMaterial[i]->getStress(); } }
void Quad4FiberOverlay::Print(OPS_Stream &s, int flag) { if (flag == 2) { s << "#Quad4Overlay\n"; int i; const int numNodes = 4; const int nstress = 1 ; for (i=0; i<numNodes; i++) { const Vector &nodeCrd = theNodes[i]->getCrds(); const Vector &nodeDisp = theNodes[i]->getDisp(); s << "#NODE " << nodeCrd(0) << " " << nodeCrd(1) << " " << endln; } } }
//! @brief Prints element information. void XC::FourNodeQuad::Print(std::ostream &s, int flag) { if(flag == 2) { s << "#FourNodeQuad\n"; //const int numNodes = 4; const int nstress = 3 ; for(int i=0; i<numNodes(); i++) { const XC::Vector &nodeCrd = theNodes[i]->getCrds(); //const XC::Vector &nodeDisp = theNodes[i]->getDisp(); s << "#NODE " << nodeCrd(0) << " " << nodeCrd(1) << " " << std::endl; } // spit out the section location & invoke print on the scetion static const Vector &avgStress= physicalProperties.getCommittedAvgStress(); static const Vector &avgStrain= physicalProperties.getCommittedAvgStrain(); s << "#AVERAGE_STRESS "; for(int i=0; i<nstress; i++) s << avgStress(i) << " " ; s << std::endl; s << "#AVERAGE_STRAIN "; for(int i=0;i<nstress; i++) s << avgStrain(i) << " " ; s << std::endl; } else { s << "\nFourNodeQuad, element id: " << this->getTag() << std::endl; s << "\tConnected external nodes: " << theNodes; s << "\tphysicalProperties.getThickness(): " << physicalProperties.getThickness() << std::endl; s << "\tmass density: " << physicalProperties.getRho() << std::endl; s << "\tsurface pressure: " << pressure << std::endl; s << "\tbody forces: " << bf << std::endl; physicalProperties.Print(s,flag); s << "\tStress (xx yy xy)" << std::endl; for(size_t i = 0; i < physicalProperties.size(); i++) s << "\t\tGauss point " << i+1 << ": " << physicalProperties[i]->getStress(); } }
//print out element data void XC::Twenty_Node_Brick::Print( std::ostream &s, int flag ) { if(flag == 2) { s << "#20NodeBrick\n"; int i; const int numNodes = 20; const int nstress = 6 ; for(i=0; i<numNodes; i++) { const XC::Vector &nodeCrd = theNodes[i]->getCrds(); const XC::Vector &nodeDisp = theNodes[i]->getDisp(); s << "#NODE " << nodeCrd(0) << " " << nodeCrd(1) << " " << nodeCrd(2) << " " << nodeDisp(0) << " " << nodeDisp(1) << " " << nodeDisp(2) << std::endl; } // spit out the section location & invoke print on the scetion static Vector avgStress(7); static Vector avgStrain(nstress); avgStress= physicalProperties.getCommittedAvgStress(); avgStrain= physicalProperties.getCommittedAvgStrain(); s << "#AVERAGE_STRESS "; for(i=0; i<7; i++) s << avgStress(i) << " " ; s << std::endl; s << "#AVERAGE_STRAIN "; for(i=0; i<nstress; i++) s << avgStrain(i) << " " ; s << std::endl; /* phisicalProperties.Print(s,flag); */ } else { s << std::endl ; s << "20NodeBrick XC::Twenty_Node_Brick \n" ; s << "Element Number: " << this->getTag() << std::endl ; s << "Node 1 : " << theNodes.getTagNode(0) << std::endl ; s << "Node 2 : " << theNodes.getTagNode(1) << std::endl ; s << "Node 3 : " << theNodes.getTagNode(2) << std::endl ; s << "Node 4 : " << theNodes.getTagNode(3) << std::endl ; s << "Node 5 : " << theNodes.getTagNode(4) << std::endl ; s << "Node 6 : " << theNodes.getTagNode(5) << std::endl ; s << "Node 7 : " << theNodes.getTagNode(6) << std::endl ; s << "Node 8 : " << theNodes.getTagNode(7) << std::endl ; s << "Node 9 : " << theNodes.getTagNode(8) << std::endl ; s << "Node 10 : " << theNodes.getTagNode(9) << std::endl ; s << "Node 11 : " << theNodes.getTagNode(10) << std::endl ; s << "Node 12 : " << theNodes.getTagNode(11) << std::endl ; s << "Node 13 : " << theNodes.getTagNode(12) << std::endl ; s << "Node 14 : " << theNodes.getTagNode(13) << std::endl ; s << "Node 15 : " << theNodes.getTagNode(14) << std::endl ; s << "Node 16 : " << theNodes.getTagNode(15) << std::endl ; s << "Node 17 : " << theNodes.getTagNode(16) << std::endl ; s << "Node 18 : " << theNodes.getTagNode(17) << std::endl ; s << "Node 19 : " << theNodes.getTagNode(18) << std::endl ; s << "Node 20 : " << theNodes.getTagNode(19) << std::endl ; s << "Material XC::Information : \n " ; physicalProperties.Print( s, flag ) ; s << std::endl ; } }
int NodeRecorder::initialize(void) { if (theDofs == 0 || theDomain == 0) { opserr << "NodeRecorder::initialize() - either nodes, dofs or domain has not been set\n"; return -1; } // // create & set nodal array pointer // if (theNodes != 0) delete [] theNodes; numValidNodes = 0; if (theNodalTags != 0) { int numNode = theNodalTags->Size(); theNodes = new Node *[numNode]; if (theNodes == 0) { opserr << "NodeRecorder::domainChanged - out of memory\n"; return -1; } for (int i=0; i<numNode; i++) { int nodeTag = (*theNodalTags)(i); Node *theNode = theDomain->getNode(nodeTag); if (theNode != 0) { theNodes[numValidNodes] = theNode; numValidNodes++; } } } else { int numNodes = theDomain->getNumNodes(); theNodes = new Node *[numNodes]; if (theNodes == 0) { opserr << "NodeRecorder::domainChanged - out of memory\n"; return -1; } NodeIter &theDomainNodes = theDomain->getNodes(); Node *theNode; numValidNodes = 0; while (((theNode = theDomainNodes()) != 0) && (numValidNodes < numNodes)) { theNodes[numValidNodes] = theNode; numValidNodes++; } } // // resize the response vector // int timeOffset = 0; if (echoTimeFlag == true) timeOffset = 1; int numValidResponse = numValidNodes*theDofs->Size() + timeOffset; if (dataFlag == 10000) numValidResponse = numValidNodes + timeOffset; response.resize(numValidResponse); response.Zero(); ID orderResponse(numValidResponse); // // need to create the data description, i.e. what each column of data is // char outputData[32]; char dataType[10]; if (dataFlag == 0) { strcpy(dataType,"D"); } else if (dataFlag == 1) { strcpy(dataType,"V"); } else if (dataFlag == 2) { strcpy(dataType,"A"); } else if (dataFlag == 3) { strcpy(dataType,"dD"); } else if (dataFlag == 4) { strcpy(dataType,"ddD"); } else if (dataFlag == 5) { strcpy(dataType,"U"); } else if (dataFlag == 6) { strcpy(dataType,"U"); } else if (dataFlag == 7) { strcpy(dataType,"R"); } else if (dataFlag == 8) { strcpy(dataType,"R"); } else if (dataFlag == 10000) { strcpy(dataType,"|D|"); } else if (dataFlag > 10) { sprintf(dataType,"E%d", dataFlag-10); } else strcpy(dataType,"Unknown"); /************************************************************ } else if ((strncmp(dataToStore, "sensitivity",11) == 0)) { int grad = atoi(&(dataToStore[11])); if (grad > 0) dataFlag = 1000 + grad; else dataFlag = 6; } else if ((strncmp(dataToStore, "velSensitivity",14) == 0)) { int grad = atoi(&(dataToStore[14])); if (grad > 0) dataFlag = 2000 + grad; else dataFlag = 6; } else if ((strncmp(dataToStore, "accSensitivity",14) == 0)) { int grad = atoi(&(dataToStore[14])); if (grad > 0) dataFlag = 3000 + grad; else dataFlag = 6; ***********************************************************/ int numDOF = theDofs->Size(); // write out info to handler if parallel execution // ID xmlOrder(numValidNodes); if (echoTimeFlag == true) xmlOrder.resize(numValidNodes+1); if (theNodalTags != 0 && addColumnInfo == 1) { int numNode = theNodalTags->Size(); int count = 0; int nodeCount = 0; if (echoTimeFlag == true) { orderResponse(count++) = 0; xmlOrder(nodeCount++) = 0; } for (int i=0; i<numNode; i++) { int nodeTag = (*theNodalTags)(i); Node *theNode = theDomain->getNode(nodeTag); if (theNode != 0) { xmlOrder(nodeCount++) = i+1; for (int j=0; j<numDOF; j++) orderResponse(count++) = i+1; } } theOutputHandler->setOrder(xmlOrder); } char nodeCrdData[20]; sprintf(nodeCrdData,"coord"); if (echoTimeFlag == true) { if (theNodalTags != 0 && addColumnInfo == 1) { theOutputHandler->tag("TimeOutput"); theOutputHandler->tag("ResponseType", "time"); theOutputHandler->endTag(); } } for (int i=0; i<numValidNodes; i++) { int nodeTag = theNodes[i]->getTag(); const Vector &nodeCrd = theNodes[i]->getCrds(); int numCoord = nodeCrd.Size(); theOutputHandler->tag("NodeOutput"); theOutputHandler->attr("nodeTag", nodeTag); for (int j=0; j<3; j++) { sprintf(nodeCrdData,"coord%d",j+1); if (j < numCoord) theOutputHandler->attr(nodeCrdData, nodeCrd(j)); else theOutputHandler->attr(nodeCrdData, 0.0); } for (int k=0; k<theDofs->Size(); k++) { sprintf(outputData, "%s%d", dataType, k+1); theOutputHandler->tag("ResponseType",outputData); } theOutputHandler->endTag(); } if (theNodalTags != 0 && addColumnInfo == 1) { theOutputHandler->setOrder(orderResponse); } theOutputHandler->tag("Data"); initializationDone = true; return 0; }
void TwentyEightNodeBrickUP::Print( OPS_Stream &s, int flag ) { if (flag == 2) { s << "#20_8_BrickUP\n"; int i; const int numNodes = 20; const int nstress = 6 ; for (i=0; i<numNodes; i++) { const Vector &nodeCrd = nodePointers[i]->getCrds(); const Vector &nodeDisp = nodePointers[i]->getDisp(); s << "#NODE " << nodeCrd(0) << " " << nodeCrd(1) << " " << nodeCrd(2) << " " << nodeDisp(0) << " " << nodeDisp(1) << " " << nodeDisp(2) << endln; } // spit out the section location & invoke print on the scetion const int numMaterials = nintu; static Vector avgStress(7); static Vector avgStrain(nstress); avgStress.Zero(); avgStrain.Zero(); for (i=0; i<numMaterials; i++) { avgStress += materialPointers[i]->getStress(); avgStrain += materialPointers[i]->getStrain(); } avgStress /= numMaterials; avgStrain /= numMaterials; s << "#AVERAGE_STRESS "; for (i=0; i<7; i++) s << avgStress(i) << " " ; s << endln; s << "#AVERAGE_STRAIN "; for (i=0; i<nstress; i++) s << avgStrain(i) << " " ; s << endln; /* for (i=0; i<numMaterials; i++) { s << "#MATERIAL\n"; // materialPointers[i]->Print(s, flag); s << materialPointers[i]->getStress(); } */ } else { s << endln ; s << "20-8 Noded TwentyEightNodeBrickUP \n" ; s << "Element Number: " << this->getTag() << endln ; s << "Node 1 : " << connectedExternalNodes(0) << endln ; s << "Node 2 : " << connectedExternalNodes(1) << endln ; s << "Node 3 : " << connectedExternalNodes(2) << endln ; s << "Node 4 : " << connectedExternalNodes(3) << endln ; s << "Node 5 : " << connectedExternalNodes(4) << endln ; s << "Node 6 : " << connectedExternalNodes(5) << endln ; s << "Node 7 : " << connectedExternalNodes(6) << endln ; s << "Node 8 : " << connectedExternalNodes(7) << endln ; s << "Node 9 : " << connectedExternalNodes(8) << endln ; s << "Node 10 : " << connectedExternalNodes(9) << endln ; s << "Node 11 : " << connectedExternalNodes(10) << endln ; s << "Node 12 : " << connectedExternalNodes(11) << endln ; s << "Node 13 : " << connectedExternalNodes(12) << endln ; s << "Node 14 : " << connectedExternalNodes(13) << endln ; s << "Node 15 : " << connectedExternalNodes(14) << endln ; s << "Node 16 : " << connectedExternalNodes(15) << endln ; s << "Node 17 : " << connectedExternalNodes(16) << endln ; s << "Node 18 : " << connectedExternalNodes(17) << endln ; s << "Node 19 : " << connectedExternalNodes(18) << endln ; s << "Node 20 : " << connectedExternalNodes(19) << endln ; s << "Material Information : \n " ; materialPointers[0]->Print( s, flag ) ; s << endln ; } }
void Tri31::Print(OPS_Stream &s, int flag) { if (flag == OPS_PRINT_CURRENTSTATE) { s << "\nTri31, element id: " << this->getTag() << endln; s << "\tConnected external nodes: " << connectedExternalNodes; s << "\tthickness: " << thickness << endln; s << "\tsurface pressure: " << pressure << endln; s << "\tmass density: " << rho << endln; s << "\tbody forces: " << b[0] << " " << b[1] << endln; theMaterial[0]->Print(s, flag); s << "\tStress (xx yy xy)" << endln; for (int i = 0; i<numgp; i++) s << "\t\tGauss point " << i + 1 << ": " << theMaterial[i]->getStress(); } if (flag == 2) { s << "#Tri31\n"; int i; const int numNodes = numnodes; const int nstress = numgp; for (i = 0; i < numNodes; i++) { const Vector &nodeCrd = theNodes[i]->getCrds(); const Vector &nodeDisp = theNodes[i]->getDisp(); s << "#NODE " << nodeCrd(0) << " " << nodeCrd(1) << " " << endln; } // spit out the section location & invoke print on the scetion const int numMaterials = numgp; static Vector avgStress(nstress); static Vector avgStrain(nstress); avgStress.Zero(); avgStrain.Zero(); for (i = 0; i < numMaterials; i++) { avgStress += theMaterial[i]->getStress(); avgStrain += theMaterial[i]->getStrain(); } avgStress /= numMaterials; avgStrain /= numMaterials; s << "#AVERAGE_STRESS "; for (i = 0; i < nstress; i++) s << avgStress(i) << " "; s << endln; s << "#AVERAGE_STRAIN "; for (i = 0; i < nstress; i++) s << avgStrain(i) << " "; s << endln; } if (flag == OPS_PRINT_PRINTMODEL_JSON) { s << "\t\t\t{"; s << "\"name\": " << this->getTag() << ", "; s << "\"type\": \"Tri31\", "; s << "\"nodes\": [" << connectedExternalNodes(0) << ", "; s << connectedExternalNodes(1) << ", "; s << connectedExternalNodes(2) << "], "; s << "\"thickness\": " << thickness << ", "; s << "\"surfacePressure\": " << pressure << ", "; s << "\"masspervolume\": " << rho << ", "; s << "\"bodyForces\": [" << b[0] << ", " << b[1] << "], "; s << "\"material\": \"" << theMaterial[0]->getTag() << "\"}"; } }