Ejemplo n.º 1
0
void
AdvDataSet::AddGlobalNodeIds(vtkDataSet *ds, AdvDocFile *f)
{
    AdvDocument *doc = 0;
    if ((doc = adv_dio_open_by_property(f, 0, 
        "content_type", "FEGenericAttribute", 
        "label", "NodeIndex_PartToGlobal", 0)) != 0)
    {
        const char *format = adv_dio_get_property(doc, "format");
        if(format != 0 && strcmp(format, "i4") == 0)
        {
            vtkIntArray *arr = vtkIntArray::New();
            arr->SetNumberOfTuples(nnodes);
            arr->SetName("avtGlobalNodeId");
            int *ptr = (int *)arr->GetVoidPointer(0);
            adv_off_t offset = 0;
            for(int i = 0; i < nnodes; i++, ptr++)
                offset += adv_dio_read_int32(doc, offset, ptr);

            ds->GetPointData()->AddArray(arr);
            debug5 << "Added global node ids to mesh" << endl;
        }
        adv_dio_close(doc);
    }
}
Ejemplo n.º 2
0
void
AdvData::ReadMetaDataFromFile(AdvDocFile *f, 
    AdvDataSet::VarInfoVector &vars, AdvDataSet::AdvElementType &elementType)
{
    // Now, let's iterate over the documents and add ones that look like variables.
    AdvDocument *doc = 0;
    int i = 0;
    while( (doc = adv_dio_open_nth(f, i++)) != 0)
    {
        const char *content_type = adv_dio_get_property(doc, "content_type");
        if(content_type != 0)
        {
            if(strcmp(content_type, "FEGenericAttribute") == 0 ||
               strcmp(content_type, "HDDM_FEGenericAttribute") == 0)
            {
                const char *fega_type = adv_dio_get_property(doc, "fega_type");
                const char *label = adv_dio_get_property(doc, "label");
                const char *format = adv_dio_get_property(doc, "format");
                if(fega_type != 0 && label != 0 && format != 0)
                {
                    AdvDataSet::VarInfo v;
                    v.label = label;
                    v.fega_type = fega_type;
                    v.format = format;
                    vars.push_back(v);
                }
            }
            else if(strcmp(content_type, "HDDM_Element") == 0)
            {
                const char *element_type = adv_dio_get_property(doc, "element_type");
                if(element_type != 0)
                {
                    if(strcmp("3DLinearTetrahedron", element_type) == 0 )
                        elementType = AdvDataSet::ADVENTURE_ELEMENT_TET4;
                    else if ( strcmp("3DQuadraticTetrahedron", element_type) == 0 ) 
                        elementType = AdvDataSet::ADVENTURE_ELEMENT_TET10;
                    else if ( strcmp("3DLinearHexahedron", element_type) == 0 ) 
                        elementType = AdvDataSet::ADVENTURE_ELEMENT_HEX8;
                }
            }
        }
        adv_dio_close(doc);
    }
}