File: XdmfReader.py

package info (click to toggle)
xdmf 3.0%2Bgit20160803-5
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 35,384 kB
  • sloc: ansic: 265,382; cpp: 162,889; python: 10,976; f90: 1,378; yacc: 687; fortran: 464; xml: 200; java: 187; lex: 125; makefile: 82; sh: 28
file content (83 lines) | stat: -rw-r--r-- 2,222 bytes parent folder | download | duplicates (2)
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
76
77
78
79
80
81
82
83
#!/bin/env python

"""Reader for XDMF Grids"""

from __future__ import print_function
from Xdmf import *
from vtk import *
from libvtkXdmfPython import *

import string


class XdmfReader :

	def __init__( self, DOM, Node ) :
	
		self.DOM = DOM
		self.Node = Node
		self.GridDOM = None
		self.GridNode = None
		self.Reader = vtkXdmfReader()
#		self.Reader.DebugOn()
		# Set the Input XML
		FileName = DOM.Get( Node, "FileName" )
		if FileName == None :
			FileName = DOM.Get( Node, "Input" )
		if FileName == None :
			FileName = DOM.Get( Node, "InputFileName" )
		if FileName == None :
			FileName = DOM.Get( Node, "File" )
		if FileName == None :
			print ('No FileName set')
			return
		print ('SetInputFileName(' + FileName + ')')
		self.Reader.SetInputFileName( FileName )
		# Which Grid ?
		GridName = DOM.Get( Node, "Grid" )
		if GridName == None :
			GridName = DOM.Get( Node, "GridName" )
		if GridName :
			self.Reader.SetGridName(GridName)
		# Parse the XML
		self.Reader.Initialize()
		# Set Up Attributes
		Nparam = DOM.FindNumberOfElements( 'Parameter', Node )
		if Nparam > 0 :
#			print ('Setting %d Parameters' % Nparam)
			DOMHandle = self.Reader.GetXdmfDOMHandle()
			RDOM = HandleToXdmfDOM(DOMHandle)
			for i in range( Nparam) :
				PNode = DOM.FindElement( 'Parameter', i, Node )
				Name = DOM.Get( PNode, "Name" )
				Value = DOM.Get( PNode, "CurrentIndex" )
				if not Value :
					Value = DOM.Get( PNode, "Value" )
				pnode = 1
				j = 0
				while pnode :
					pnode = RDOM.FindElement('Parameter', j, None)
					if pnode :
						pName = RDOM.Get(pnode, 'Name')
						if pName == Name :
							RDOM.Set(pnode, 'CurrentIndex', Value)
						j += 1
						pnode = RDOM.FindElement('Parameter', j, None)
		# Set Up Attributes
		Nattr = DOM.FindNumberOfElements( 'Attribute', Node )
		print ('Reading %d Attributes' % Nattr)
		if Nattr > 0 :
			self.Reader.SetAllAttributeStatusOff()
			for i in range( Nattr ) :
				ANode = DOM.FindElement( 'Attribute', i, Node )
				Name = DOM.Get( ANode, "Name" )
				self.Reader.SetAttributeStatusOn( Name )

	def Update(self) :
		print ('Updating Grid')
		self.Reader.Update()
		return( self.Reader )

	def GetOutput(self) :
		return( self.Reader.GetOutput() )