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); } }
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); } }