Esempio n. 1
0
/*!
	Displays interface information to an output stream

	\param[in] out is the output stream
	\param[in] indent is the number of trailing spaces to prepend when
	writing the information
*/
void Interface::display(std::ostream &out, unsigned short int indent) const
{
	std::string t_s = std::string(indent, ' ');

	// If the type is unknown there are no information to display
	if (getType() == ElementInfo::UNDEFINED) {
	    out << t_s << "interface type:    (unknown)" << std::endl;
	    return;
	}

	// General info ----------------------------------------------------- //
	out << t_s << "interface type: " << getType() << std::endl;
	out << t_s << "ID:             " << getId() << std::endl;
	out << t_s << "is border:      ";
	if (getNeigh() >= 0)  { out << "(false)"; }
	else                  { out << "(true)"; }
	out << std::endl;

	// Connectivity infos --------------------------------------------------- //
	int nVertices = getVertexCount();
	out << t_s << "connectivity: [ ";
	for (int i = 0; i < nVertices - 1; ++i) {
		out << getVertex(i) << ", ";
	} //next i
	out << getVertex(nVertices - 1) << " ]" << std::endl;

	// Onwer infos ---------------------------------------------------------- //
	out << t_s << "onwer ID:    " << getOwner() << std::endl;
	out << t_s << "owner face:  " << getOwnerFace() << std::endl;

	// Onwer infos ---------------------------------------------------------- //
	if (getNeigh() >= 0) {
		out << t_s << "neighbour ID:    " << getNeigh() << std::endl;
		out << t_s << "neighbour face:  " << getNeighFace() << std::endl;
	}
}
Esempio n. 2
0
void SimpleFoamWriter::createFaces()
{
  l2g_t cells = getPartCells();

  m_LFaces.clear();
  EG_VTKDCC(vtkIntArray, cell_code,   m_Grid, "cell_code");
  m_BC = cell_code;
  m_Eg2Of.fill(-1,cells.size());
  int Nvol = 0;
  foreach(int i_cells, cells) {
    vtkIdType *pts;
    vtkIdType  Npts;
    m_Grid->GetCellPoints(cells[i_cells], Npts, pts);
    vtkIdType type_cell = m_Grid->GetCellType(cells[i_cells]);
    vtkIdType id_cell = cells[i_cells];
    
    // tetras
    //
    if (type_cell == VTK_TETRA) {
      m_Eg2Of[id_cell] = Nvol++;
      {      
        face_t F(3,id_cell,getNeigh(i_cells,0));
        F.node[0] = pts[2]; F.node[1] = pts[1]; F.node[2] = pts[0];
        addFace(F);
      }
      {
        face_t F(3,id_cell,getNeigh(i_cells,1));
        F.node[0] = pts[0]; F.node[1] = pts[1]; F.node[2] = pts[3];
        addFace(F);
      }
      {
        face_t F(3,id_cell,getNeigh(i_cells,2));
        F.node[0] = pts[0]; F.node[1] = pts[3]; F.node[2] = pts[2];
        addFace(F);
      }
      {
        face_t F(3,id_cell,getNeigh(i_cells,3));
        F.node[0] = pts[1]; F.node[1] = pts[2]; F.node[2] = pts[3];
        addFace(F);
      }
    }
    
    // prisms
    //
    if (type_cell == VTK_WEDGE) {
      m_Eg2Of[id_cell] = Nvol++;
      {
        face_t F(3,id_cell,getNeigh(i_cells,0));
        F.node[0] = pts[0]; F.node[1] = pts[1]; F.node[2] = pts[2];
        addFace(F);
      }
      {
        face_t F(3,id_cell,getNeigh(i_cells,1));
        F.node[0] = pts[3]; F.node[1] = pts[5]; F.node[2] = pts[4];
        addFace(F);
      }
      {
        face_t F(4,id_cell,getNeigh(i_cells,2));
        F.node[0] = pts[3]; F.node[1] = pts[4]; F.node[2] = pts[1]; F.node[3] = pts[0];
        addFace(F);
      }
      {
        face_t F(4,id_cell,getNeigh(i_cells,3));
        F.node[0] = pts[1]; F.node[1] = pts[4]; F.node[2] = pts[5]; F.node[3] = pts[2];
        addFace(F);
      }
      {
        face_t F(4,id_cell,getNeigh(i_cells,4));
        F.node[0] = pts[0]; F.node[1] = pts[2]; F.node[2] = pts[5]; F.node[3] = pts[3];
        addFace(F);
      }
    }
    
    // hexes
    //
    if (type_cell == VTK_HEXAHEDRON) {
      m_Eg2Of[id_cell] = Nvol++;
      {
        face_t F(4,id_cell,getNeigh(i_cells,0),0);
        F.node[0] = pts[3]; F.node[1] = pts[2]; F.node[2] = pts[1]; F.node[3] = pts[0];
        addFace(F);
      }
      {
        face_t F(4,id_cell,getNeigh(i_cells,1),0);
        F.node[0] = pts[4]; F.node[1] = pts[5]; F.node[2] = pts[6]; F.node[3] = pts[7];
        addFace(F);
      }
      {
        face_t F(4,id_cell,getNeigh(i_cells,2),0);
        F.node[0] = pts[0]; F.node[1] = pts[1]; F.node[2] = pts[5]; F.node[3] = pts[4];
        addFace(F);
      }
      {
        face_t F(4,id_cell,getNeigh(i_cells,3),0);
        F.node[0] = pts[3]; F.node[1] = pts[7]; F.node[2] = pts[6]; F.node[3] = pts[2];
        addFace(F);
      }
      {
        face_t F(4,id_cell,getNeigh(i_cells,4),0);
        F.node[0] = pts[0]; F.node[1] = pts[4]; F.node[2] = pts[7]; F.node[3] = pts[3];
        addFace(F);
      }
      {
        face_t F(4,id_cell,getNeigh(i_cells,5),0);
        F.node[0] = pts[1]; F.node[1] = pts[2]; F.node[2] = pts[6]; F.node[3] = pts[5];
        addFace(F);
      }
    }
  }