Read Xdmf

From XdmfWeb
Jump to navigationJump to search

Reading XDMF Data

TwoHex.jpg

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.

<source lang="xml" line="1"> <?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> </source>

The XML is stored in the file "MyGrid.xmf". The following Python program demonstrated parsing the XML and retrieving the data values.

<source lang="python" line="1">

  1. ! /usr/bin/env python

from Xdmf import * reader = XdmfReader.New() dom = XdmfReader.read('MyGrid.xmf')

  1. We now have a tree. Find the one and only Grid element

grid = dom.getUnstruturedGrid(0)

top = grid.GetTopology() print 'Values = ', top.getValuesString()

  1. 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()

  1. 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()

</source>