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();
  }
}
Exemple #2
0
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;
		}
    }
}
Exemple #3
0
//! @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();
      }
  }
Exemple #4
0
//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 ;
        }
}
Exemple #5
0
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 ;

	}

}
Exemple #7
0
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() << "\"}";
    }
}