#============================================================================
#
# Code_Saturne version 1.3
# ------------------------
#
#
# This file is part of the Code_Saturne Kernel, element of the
# Code_Saturne CFD tool.
#
# Copyright (C) 1998-2007 EDF S.A., France
#
# contact: saturne-support@edf.fr
#
# The Code_Saturne Kernel is free software; you can redistribute it
# and/or modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2 of
# the License, or (at your option) any later version.
#
# The Code_Saturne Kernel is distributed in the hope that it will be
# useful, but WITHOUT ANY WARRANTY; without even the implied warranty
# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with the Code_Saturne Kernel; if not, write to the
# Free Software Foundation, Inc.,
# 51 Franklin St, Fifth Floor,
# Boston, MA 02110-1301 USA
#
#============================================================================
import sys
from xml.dom import minidom
#from neptune import case
class Parser:
""" Parser -- class to parse XML file."""
def __init__ (self, XMLFileName):
"Constructor --"
try:
self.doc = minidom.parse (XMLFileName)
except:
print "No file or syntax error"
sys.exit(1)
self.root = self.doc.firstChild
name = self.root.nodeName
if name != "autovalid":
print XMLFileName + " :Wrong XML file"
print sys.exit(1)
def getReferenceVersion(self):
return self.getDataFromNode(self.root,"referenceversion")
def getReferencePath(self):
return self.getDataFromNode(self.root,"referencepath")
def getStudiesLabels(self):
studiesLabels=[]
studyNodes = self.root.getElementsByTagName("study")
for node in studyNodes :
label = str(node.attributes["label"].value)
status = str(node.attributes["status"].value)
if status == 'on':
studiesLabels.append(label)
return studiesLabels
def getVariablesDefinition(self, studyLabel):
variables = {}
studyNode = self.getStudyNode(studyLabel)
variableNodes = studyNode.getElementsByTagName("variable")
for node in variableNodes :
label = str(node.attributes["label"].value)
status = str(node.attributes["status"].value)
if status == 'on' :
variables[label] = float(self.getDataFromNode(node,"tolerance"))
return variables
def getCasesLabels(self, studyLabel):
casesLabels=[]
studyNode = self.getStudyNode(studyLabel)
caseNodes = studyNode.getElementsByTagName("case")
for node in caseNodes :
label = str(node.attributes["label"].value)
status = str(node.attributes["status"].value)
compute = str(node.attributes["compute"].value)
if status == 'on':
casesLabels.append(label)
return casesLabels
def getIfComputeCase(self, studyLabel, caseLabel):
ifComputeCase = False
studyNode = self.getStudyNode(studyLabel)
caseNode = self.getCaseNode(studyNode,caseLabel)
compute = str(caseNode.attributes["compute"].value)
if compute == 'on':
ifComputeCase = True
return ifComputeCase
def getScriptPostName(self, studyLabel, caseLabel):
studyNode = self.getStudyNode(studyLabel)
caseNode = self.getCaseNode(studyNode,caseLabel)
postNodes = caseNode.getElementsByTagName("post")
returnLabel = None
if postNodes != None :
label = str(postNodes[0].attributes["label"].value)
status = str(postNodes[0].attributes["status"].value)
if status == 'on':
returnLabel = label
return returnLabel
def getProcNumber(self, studyLabel, caseLabel):
studyNode = self.getStudyNode(studyLabel)
caseNode = self.getCaseNode(studyNode,caseLabel)
try:
procNumber = int(self.getDataFromNode(caseNode,"nproc"))
except:
procNumber = 1
return procNumber
def getDataFromNode(self, node, childName):
data = None
list = node.getElementsByTagName(childName)
if (list.length == 1):
current = list.item(0)
data = current.firstChild.data
return data
def getStudyNode(self, studyLabel):
studyNodes = self.root.getElementsByTagName("study")
for node in studyNodes :
label = str(node.attributes["label"].value)
if label == studyLabel :
studyNode = node
return studyNode
def getCaseNode(self, studyNode, caseLabel):
caseNodes = studyNode.getElementsByTagName("case")
for node in caseNodes :
label = str(node.attributes["label"].value)
if label == caseLabel :
caseNode = node
return caseNode
syntax highlighted by Code2HTML, v. 0.9.1