Example #1
0
// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
int DataContainer::writeXdmf(QTextStream& out, QString hdfFileName)
{
  if (NULL == m_Geometry.get())
  {
    return -1;
  }

  m_Geometry->writeXdmf(out, getName(), hdfFileName);
  unsigned int geomType = m_Geometry->getGeometryType();

  // Get all of our AttributeMatrices
  AttributeMatrixMap_t amMap = getAttributeMatrices();
  // Loop over each AttributeMatrix and write the meta data to the Xdmf file
  QString xdmfCenter = "";
  for(QMap<QString, AttributeMatrix::Pointer>::iterator iter = amMap.begin(); iter != amMap.end(); ++iter)
  {
    xdmfCenter = "";
    AttributeMatrix::Pointer attrMat = iter.value();
    uint32_t amType = attrMat->getType();
    switch(geomType)
    {
      case DREAM3D::GeometryType::VertexGeometry:
        switch(amType)
        {
          //FIXME: There are more AttributeMatrix Types that should be implemented
          case DREAM3D::AttributeMatrixType::Vertex:
            xdmfCenter = DREAM3D::XdmfCenterType::Node;
            break;
          default:
            break;
        }
      case DREAM3D::GeometryType::EdgeGeometry:
        switch(amType)
        {
          //FIXME: There are more AttributeMatrix Types that should be implemented
          case DREAM3D::AttributeMatrixType::Vertex:
            xdmfCenter = DREAM3D::XdmfCenterType::Node;
            break;
          case DREAM3D::AttributeMatrixType::Edge:
            xdmfCenter = DREAM3D::XdmfCenterType::Cell;
            break;
          default:
            break;
        }
      case DREAM3D::GeometryType::TriangleGeometry:
        switch(amType)
        {
          //FIXME: There are more AttributeMatrix Types that should be implemented
          case DREAM3D::AttributeMatrixType::Vertex:
            xdmfCenter = DREAM3D::XdmfCenterType::Node;
            break;
          case DREAM3D::AttributeMatrixType::Edge:
            xdmfCenter = DREAM3D::XdmfCenterType::Cell;
            break;
          case DREAM3D::AttributeMatrixType::Face:
            xdmfCenter = DREAM3D::XdmfCenterType::Cell;
            break;
          case DREAM3D::AttributeMatrixType::Cell:
            xdmfCenter = DREAM3D::XdmfCenterType::Cell;
            break;
          default:
            break;
        }
      case DREAM3D::GeometryType::QuadGeometry:
        switch(amType)
        {
          //FIXME: There are more AttributeMatrix Types that should be implemented
          case DREAM3D::AttributeMatrixType::Vertex:
            xdmfCenter = DREAM3D::XdmfCenterType::Node;
            break;
          case DREAM3D::AttributeMatrixType::Edge:
            xdmfCenter = DREAM3D::XdmfCenterType::Cell;
            break;
          case DREAM3D::AttributeMatrixType::Face:
            xdmfCenter = DREAM3D::XdmfCenterType::Cell;
            break;
          case DREAM3D::AttributeMatrixType::Cell:
            xdmfCenter = DREAM3D::XdmfCenterType::Cell;
            break;
          default:
            break;
        }
      case DREAM3D::GeometryType::ImageGeometry:
        switch(amType)
        {
          //FIXME: There are more AttributeMatrix Types that should be implemented
          case DREAM3D::AttributeMatrixType::Vertex:
            xdmfCenter = DREAM3D::XdmfCenterType::Node;
            break;
          case DREAM3D::AttributeMatrixType::Edge:
            xdmfCenter = DREAM3D::XdmfCenterType::Cell;
            break;
          case DREAM3D::AttributeMatrixType::Face:
            xdmfCenter = DREAM3D::XdmfCenterType::Cell;
            break;
          case DREAM3D::AttributeMatrixType::Cell:
            xdmfCenter = DREAM3D::XdmfCenterType::Cell;
            break;
          default:
            break;
        }
    }

    if(xdmfCenter.isEmpty() == false)
    {
      QString xdmfText = attrMat->generateXdmfText(xdmfCenter, getName(), hdfFileName, m_Geometry->getXdmfGridType());
      out << xdmfText;
    }
  }

  writeXdmfFooter(out);

  return 0;
}