Difference between revisions of "Read Xdmf"
From XdmfWeb
Jump to navigationJump to searchDave.demarle (talk | contribs) m |
|||
Line 62: | Line 62: | ||
The XML is stored in the file "MyGrid.xmf". The following Python program demonstrated parsing the XML and | The XML is stored in the file "MyGrid.xmf". The following Python program demonstrated parsing the XML and | ||
retrieving the data values. | retrieving the data values. | ||
− | |||
− | |||
from Xdmf import * | from Xdmf import * | ||
− | + | reader = XdmfReader.New() | |
− | dom. | + | dom = XdmfReader.read('MyGrid.xmf') |
# We now have a tree. Find the one and only Grid element | # We now have a tree. Find the one and only Grid element | ||
− | + | grid = dom.getUnstruturedGrid(0) | |
− | grid = | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
top = grid.GetTopology() | top = grid.GetTopology() | ||
− | + | print 'Values = ', top.getValuesString() | |
− | + | # Release values from data when done | |
+ | top.release() | ||
geo = grid.GetGeometry() | geo = grid.GetGeometry() | ||
− | + | print 'Geo Type = ', geo.getType().getName(), ' # Points = ', geo.getNumberPoints() | |
− | print 'Geo Type = ', geo. | + | print 'Points = ', geo.getValuesString() |
− | print 'Points = ', | + | geo.release() |
# for each Attribute, print Light Data and Values | # for each Attribute, print Light Data and Values | ||
− | for i in range(grid. | + | for i in range(grid.getNumberAttributes()) : |
− | attr = grid. | + | attr = grid.getAttribute(i) |
− | print 'Attribute ', i, ' Name = ', attr. | + | print 'Attribute ', i, ' Name = ', attr.getName() |
# Attribute HeavyData is not Updated by default | # Attribute HeavyData is not Updated by default | ||
# there could potentially be many causing huge IO | # there could potentially be many causing huge IO | ||
− | attr. | + | attr.read() |
− | + | print 'Values ', attr.getValuesString() | |
− | + | attr.release() |
Revision as of 16:43, 10 November 2014
Reading XDMF Data
The following Xdmf XML file is a simple example of a Uniform Grid that contains two Hexahedron that share a face. There are values centered at the nodes and at the cell centers. The values for geometry, connectivity, and scalars are all stored directly in the XML file.
<?xml version="1.0" ?> <!DOCTYPE Xdmf SYSTEM "Xdmf.dtd" []> <Xdmf> <Domain> <Grid Name="TestGrid"> <Topology Type="Hexahedron" NumberOfElements="2" > <DataItem Format="XML" DataType="Float" Dimensions="2 8"> 0 1 7 6 3 4 10 9 1 2 8 7 4 5 11 10 </DataItem> </Topology> <Geometry Type="XYZ"> <DataItem Format="XML" DataType="Float" Precision="8" Dimensions="4 3 3"> 0.0 0.0 1.0 1.0 0.0 1.0 3.0 0.0 2.0 0.0 1.0 1.0 1.0 1.0 1.0 3.0 2.0 2.0 0.0 0.0 -1.0 1.0 0.0 -1.0 3.0 0.0 -2.0 0.0 1.0 -1.0 1.0 1.0 -1.0 3.0 2.0 -2.0 </DataItem> </Geometry> <Attribute Name="NodeValues" Center="Node"> <DataItem Format="XML" DataType="Float" Precision="8" Dimensions="4 3" > 100 200 300 300 400 500 300 400 500 500 600 700 </DataItem> </Attribute> <Attribute Name="CellValues" Center="Cell"> <DataItem Format="XML" DataType="Float" Precision="8" Dimensions="2" > 100 200 </DataItem> </Attribute> </Grid> </Domain> </Xdmf>
The XML is stored in the file "MyGrid.xmf". The following Python program demonstrated parsing the XML and retrieving the data values.
from Xdmf import * reader = XdmfReader.New() dom = XdmfReader.read('MyGrid.xmf') # We now have a tree. Find the one and only Grid element grid = dom.getUnstruturedGrid(0) top = grid.GetTopology() print 'Values = ', top.getValuesString() # Release values from data when done top.release() geo = grid.GetGeometry() print 'Geo Type = ', geo.getType().getName(), ' # Points = ', geo.getNumberPoints() print 'Points = ', geo.getValuesString() geo.release() # for each Attribute, print Light Data and Values for i in range(grid.getNumberAttributes()) : attr = grid.getAttribute(i) print 'Attribute ', i, ' Name = ', attr.getName() # Attribute HeavyData is not Updated by default # there could potentially be many causing huge IO attr.read() print 'Values ', attr.getValuesString() attr.release()