1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75
|
#include "vtkCellData.h"
#include "vtkDataArray.h"
#include "vtkDataSet.h"
#include "vtkExodusIIReader.h"
#include "vtkMultiBlockDataSet.h"
#include "vtkNew.h"
#include "vtkTestUtilities.h"
int TestExodusAttributes(int argc, char* argv[])
{
char* fname = vtkTestUtilities::ExpandDataFileName(
argc, argv, "Data/edgeFaceElem.exii");
if (!fname)
{
cout << "Could not obtain filename for test data.\n";
return 1;
}
vtkNew<vtkExodusIIReader> rdr;
if (!rdr->CanReadFile(fname))
{
cout << "Cannot read \"" << fname << "\"\n";
return 1;
}
rdr->SetFileName(fname);
delete[] fname;
rdr->UpdateInformation();
rdr->SetObjectAttributeStatus(vtkExodusIIReader::ELEM_BLOCK,0,"SPAGHETTI",1);
rdr->SetObjectAttributeStatus(vtkExodusIIReader::ELEM_BLOCK,0,"WESTERN",1);
rdr->Update();
vtkCellData* cd =
vtkDataSet::SafeDownCast(
vtkMultiBlockDataSet::SafeDownCast(
vtkMultiBlockDataSet::SafeDownCast(
rdr->GetOutputDataObject(0))
->GetBlock(0))
->GetBlock(0))
->GetCellData();
if (!cd)
{
cout << "Could not obtain cell data\n";
return 1;
}
int na = cd->GetNumberOfArrays();
for (int i = 0; i < na; ++i)
{
vtkDataArray* arr = cd->GetArray(i);
cout << "Cell array " << i << " \"" << arr->GetName() << "\"\n";
for (int j = 0; j <= arr->GetMaxId(); ++j)
{
cout << " " << arr->GetTuple1(j) << "\n";
}
}
vtkDataArray* spaghetti = cd->GetArray("SPAGHETTI");
vtkDataArray* western = cd->GetArray("WESTERN");
if (
!spaghetti || !western ||
spaghetti->GetNumberOfTuples() != 2 || western->GetNumberOfTuples() != 2)
{
cout << "Attribute arrays not read or are wrong length.\n";
return 1;
}
if (spaghetti->GetTuple1(0) != 127. || spaghetti->GetTuple1(1) != 137)
{
cout << "Bad spaghetti\n";
return 1;
}
if (western->GetTuple1(0) != 101. || western->GetTuple1(1) != 139)
{
cout << "Wrong western\n";
return 1;
}
return 0;
}
|