# -*- coding: iso-8859-1 -*-
#
#-------------------------------------------------------------------------------
# Code_Saturne version 1.3
# ------------------------
#
#
# This file is part of the Code_Saturne User Interface, element of the
# Code_Saturne CFD tool.
#
# Copyright (C) 1998-2007 EDF S.A., France
#
# contact: saturne-support@edf.fr
#
# The Code_Saturne User Interface 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 User Interface 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 os, re, sys
import string
#-------------------------------------------------------------------------------
# Application modules import
#-------------------------------------------------------------------------------
import Pages.CommonCombustion as CommonCombustion
#-------------------------------------------------------------------------------
#
#-------------------------------------------------------------------------------
class Coal:
def __init__(self):
self.classesNumber = 1
self.initDiameterClasses = [0.]
self.CDryComposition = 0
self.HDryComposition = 0
self.ODryComposition = 0
self.Dry = 0
self.PCIValue = 0
self.thermalCapacity = 0
self.density = 0
self.CDryCompositionCoke = 0
self.HDryCompositionCoke = 0
self.ODryCompositionCoke = 0
self.PCICokeValue = 0
self.ashesRatio = 0
self.ashesFormingEnthalpy = 0
self.ashesThermalCapacity = 0
self.IY1CH = 0
self.Y1CH = 0
self.IY2CH = 0
self.Y2CH = 0
self.A1CH = 0
self.A2CH = 0
self.E1CH = 0
self.E2CH = 0
self.AHETCH = 0
self.EHETCH = 0
self.IOCHET = 0
def setClassesNumber(self, value):
self.classesNumber = value
def setInitDiameterClasses(self, value):
self.initDiameterClasses = value
def addInitDiameterClasses(self, value):
self.initDiameterClasses.append(value)
self.classesNumber += 1
def updateInitDiameterClasses(self, number, value):
self.initDiameterClasses[number-1] = value
def cancelInitDiameterClasses(self, number):
self.classesNumber -= 1
self.initDiameterClasses.pop(number-1)
def setCDryComposition(self, value):
self.CDryComposition = value
def setODryComposition(self, value):
self.ODryComposition = value
def setHDryComposition(self, value):
self.HDryComposition = value
def setDry(self, value):
self.Dry = value
def setPCIValue(self, value):
self.PCIValue = value
def setThermalCapacity(self, value):
self.thermalCapacity = value
def setDensity(self, value):
self.density = value
def setCDryCompositionCoke(self, value):
self.CDryCompositionCoke = value
def setHDryCompositionCoke(self, value):
self.HDryCompositionCoke = value
def setODryCompositionCoke(self, value):
self.ODryCompositionCoke = value
def setPCICokeValue(self, value):
self.PCICokeValue = value
def setAshesRatio(self, value):
self.ashesRatio = value
def setAshesFormingEnthalpy(self, value):
self.ashesFormingEnthalpy = value
def setAshesThermalCapacity(self, value):
self.ashesThermalCapacity = value
def setIY1CH(self, value):
self.IY1CH = value
def setY1CH(self, value):
self.Y1CH = value
def setIY2CH(self, value):
self.IY2CH = value
def setY2CH(self, value):
self.Y2CH = value
def setA1CH(self, value):
self.A1CH = value
def setA2CH(self, value):
self.A2CH = value
def setE1CH(self, value):
self.E1CH = value
def setE2CH(self, value):
self.E2CH = value
def setAHETCH(self, value):
self.AHETCH = value
def setEHETCH(self, value):
self.EHETCH = value
def setIOCHET(self, value):
self.IOCHET = value
def getClassesNumber(self):
return self.classesNumber
def getInitDiameterClasses(self):
return self.initDiameterClasses
def getCDryComposition(self):
return self.CDryComposition
def getODryComposition(self):
return self.ODryComposition
def getHDryComposition(self):
return self.HDryComposition
def getDry(self):
return self.Dry
def getPCIValue(self):
return self.PCIValue
def getThermalCapacity(self):
return self.thermalCapacity
def getDensity(self):
return self.density
def getCDryCompositionCoke(self):
return self.CDryCompositionCoke
def getHDryCompositionCoke(self):
return self.HDryCompositionCoke
def getODryCompositionCoke(self):
return self.ODryCompositionCoke
def getPCICokeValue(self):
return self.PCICokeValue
def getAshesRatio(self):
return self.ashesRatio
def getAshesFormingEnthalpy(self):
return self.ashesFormingEnthalpy
def getAshesThermalCapacity(self):
return self.ashesThermalCapacity
def getIY1CH(self):
return self.IY1CH
def getY1CH(self):
return self.Y1CH
def getIY2CH(self):
return self.IY2CH
def getY2CH(self):
return self.Y2CH
def getA1CH(self):
return self.A1CH
def getA2CH(self):
return self.A2CH
def getE1CH(self):
return self.E1CH
def getE2CH(self):
return self.E2CH
def getAHETCH(self):
return self.AHETCH
def getEHETCH(self):
return self.EHETCH
def getIOCHET(self):
return self.IOCHET
class Coals:
def __init__(self):
""" constructor """
#
# "CARACTERISTIQUES CHARBON" part
self.Comment = {}
self.coalNumber = 0
self.Comment["coalNumber"] = "Nb de charbons"
self.classesNumberList = []
self.Comment["classesNumberList"] = "Nb de classes"
self.initDiameterClassesList = []
self.Comment["initDiameterClassesList"] = "Diametre initial de la classe (m)"
self.CDryCompositionList = []
self.Comment["CDryCompositionList"] = "Composition C (%) sur sec"
self.HDryCompositionList = []
self.Comment["HDryCompositionList"] = "Composition H (%) sur sec"
self.ODryCompositionList = []
self.Comment["ODryCompositionList"] = "Composition O (%) sur sec"
self.DryList = []
self.Comment["DryList"] = "PCI (J/kg) sur pur (0) sur sec 1"
self.PCIValueList = []
self.thermalCapacityList = []
self.Comment["thermalCapacityList"] = "CP moyen du charbon (J/kg/K)"
self.densityList = []
self.Comment["densityList"] = "Masse volumique (kg/m3)"
self.CDryCompositionCokeList = []
self.Comment["CDryCompositionCokeList"] = "Composition C (%) sur sec"
self.HDryCompositionCokeList = []
self.Comment["HDryCompositionCokeList"] = "Composition H (%) sur sec"
self.ODryCompositionCokeList = []
self.Comment["ODryCompositionCokeList"] = "Composition O (%) sur sec"
self.PCICokeValueList = []
self.Comment["PCICokeValueList"] = "PCI sur sec (J/kg)"
self.ashesRatioList = []
self.Comment["ashesRatioList"] = "Taux de cendres en masse (%)"
self.ashesFormingEnthalpyList = []
self.Comment["ashesFormingEnthalpyList"]= "Enthalpie de formation des cendres (J/kg)"
self.ashesThermalCapacityList = []
self.Comment["ashesThermalCapacityList"]= "CP des cendres (J/kg/K)"
#
# "DEVOLATILISATION" part
self.IY1CHList = []
self.Comment["Y1CHList"] = "Coef. stoe. (adim) Y1 si = 0 calcul automatique"
self.Y1CHList = []
self.Comment["Y2CHList"] = "Coef. stoe. (adim) Y2 si = 0 calcul automatique"
self.IY2CHList = []
self.Y2CHList = []
self.A1CHList = []
self.Comment["A1CHList"] = "Facteur pre-exponentielle A1 (s-1)"
self.A2CHList = []
self.Comment["A2CHList"] = "Facteur pre-exponentielle A2 (s-1)"
self.E1CHList = []
self.Comment["E1CHList"] = "Energie d'activation E1 (J/mol)"
self.E2CHList = []
self.Comment["E2CHList"] = "Energie d'activation E2 (J/mol)"
#
# "COMBUSTION HETEROGENE" part
self.AHETCHList = []
self.Comment["AHETCHList"] = "Constante pre-exponentielle (kg/m2/s/atm)"
self.EHETCHList = []
self.Comment["EHETCHList"] = "Energie d'activation (kcal/mol)"
self.IOCHETList = []
self.Comment["IOCHETList"] = "Ordre de la reaction 0.5 si = 0 1 si = 1"
def getNumber(self):
return self.coalNumber
#
# "CARACTERISTIQUES CHARBON" part
def deleteCoal(self, number):
#
# utiliser self.AHETCHList.remove(number)
self.coalNumber -= 1
nb = number - 1
self.classesNumberList.pop(nb)
self.initDiameterClassesList.pop(nb)
self.CDryCompositionList.pop(nb)
self.HDryCompositionList.pop(nb)
self.ODryCompositionList.pop(nb)
self.DryList.pop(nb)
self.PCIValueList.pop(nb)
self.thermalCapacityList.pop(nb)
self.densityList.pop(nb)
self.CDryCompositionCokeList.pop(nb)
self.HDryCompositionCokeList.pop(nb)
self.ODryCompositionCokeList.pop(nb)
self.PCICokeValueList.pop(nb)
self.ashesRatioList.pop(nb)
self.ashesFormingEnthalpyList.pop(nb)
self.ashesThermalCapacityList.pop(nb)
self.IY1CHList.pop(nb)
self.Y1CHList.pop(nb)
self.IY2CHList.pop(nb)
self.Y2CHList.pop(nb)
self.A1CHList.pop(nb)
self.A2CHList.pop(nb)
self.E1CHList.pop(nb)
self.E2CHList.pop(nb)
self.AHETCHList.pop(nb)
self.EHETCHList.pop(nb)
self.IOCHETList.pop(nb)
def addCoal(self, coal):
self.coalNumber += 1
self.classesNumberList.append(coal.getClassesNumber())
self.initDiameterClassesList.append(coal.getInitDiameterClasses())
self.CDryCompositionList.append(coal.getCDryComposition())
self.HDryCompositionList.append(coal.getHDryComposition())
self.ODryCompositionList.append(coal.getODryComposition())
self.DryList.append(coal.getDry())
self.PCIValueList.append(coal.getPCIValue())
self.thermalCapacityList.append(coal.getThermalCapacity())
self.densityList.append(coal.getDensity())
self.CDryCompositionCokeList.append(coal.getCDryCompositionCoke())
self.HDryCompositionCokeList.append(coal.getHDryCompositionCoke())
self.ODryCompositionCokeList.append(coal.getODryCompositionCoke())
self.PCICokeValueList.append(coal.getPCICokeValue())
self.ashesRatioList.append(coal.getAshesRatio())
self.ashesFormingEnthalpyList.append(coal.getAshesFormingEnthalpy())
self.ashesThermalCapacityList.append(coal.getAshesThermalCapacity())
self.IY1CHList.append(coal.getIY1CH())
self.Y1CHList.append(coal.getY1CH())
self.IY2CHList.append(coal.getIY2CH())
self.Y2CHList.append(coal.getY2CH())
self.A1CHList.append(coal.getA1CH())
self.A2CHList.append(coal.getA2CH())
self.E1CHList.append(coal.getE1CH())
self.E2CHList.append(coal.getE2CH())
self.AHETCHList.append(coal.getAHETCH())
self.EHETCHList.append(coal.getEHETCH())
self.IOCHETList.append(coal.getIOCHET())
def updateCoal(self,number, coal) :
nb = number - 1
self.classesNumberList[nb] = coal.getClassesNumber()
self.initDiameterClassesList[nb] = coal.getInitDiameterClasses()
self.CDryCompositionList[nb] = coal.getCDryComposition()
self.HDryCompositionList[nb] = coal.getHDryComposition()
self.ODryCompositionList[nb] = coal.getODryComposition()
self.DryList[nb] = coal.getDry()
self.PCIValueList[nb] = coal.getPCIValue()
self.thermalCapacityList[nb] = coal.getThermalCapacity()
self.densityList[nb] = coal.getDensity()
self.CDryCompositionCokeList[nb] = coal.getCDryCompositionCoke()
self.HDryCompositionCokeList[nb] = coal.getHDryCompositionCoke()
self.ODryCompositionCokeList[nb] = coal.getODryCompositionCoke()
self.PCICokeValueList[nb] = coal.getPCICokeValue()
self.ashesRatioList[nb] = coal.getAshesRatio()
self.ashesFormingEnthalpyList[nb] = coal.getAshesFormingEnthalpy()
self.ashesThermalCapacityList[nb] = coal.getAshesThermalCapacity()
self.IY1CHList[nb] = coal.getIY1CH()
self.Y1CHList[nb] = coal.getY1CH()
self.IY2CHList[nb] = coal.getIY2CH()
self.Y2CHList[nb] = coal.getY2CH()
self.A1CHList[nb] = coal.getA1CH()
self.A2CHList[nb] = coal.getA2CH()
self.E1CHList[nb] = coal.getE1CH()
self.E2CHList[nb] = coal.getE2CH()
self.AHETCHList[nb] = coal.getAHETCH()
self.EHETCHList[nb] = coal.getEHETCH()
self.IOCHETList[nb] = coal.getIOCHET()
def getCoal(self, number):
coal = Coal()
nb = number - 1
coal.setClassesNumber(self.classesNumberList[nb])
coal.setInitDiameterClasses(self.initDiameterClassesList[nb])
coal.setCDryComposition(self.CDryCompositionList[nb])
coal.setHDryComposition(self.HDryCompositionList[nb])
coal.setODryComposition(self.ODryCompositionList[nb])
coal.setDry(self.DryList[nb])
coal.setPCIValue(self.PCIValueList[nb])
coal.setThermalCapacity(self.thermalCapacityList[nb])
coal.setDensity(self.densityList[nb])
coal.setCDryCompositionCoke(self.CDryCompositionCokeList[nb])
coal.setHDryCompositionCoke(self.HDryCompositionCokeList[nb])
coal.setODryCompositionCoke(self.ODryCompositionCokeList[nb])
coal.setPCICokeValue(self.PCICokeValueList[nb])
coal.setAshesRatio(self.ashesRatioList[nb])
coal.setAshesFormingEnthalpy(self.ashesFormingEnthalpyList[nb])
coal.setAshesThermalCapacity(self.ashesThermalCapacityList[nb])
coal.setIY1CH(self.IY1CHList[nb])
coal.setY1CH(self.Y1CHList[nb])
coal.setIY2CH(self.IY2CHList[nb])
coal.setY2CH(self.Y2CHList[nb])
coal.setA1CH(self.A1CHList[nb])
coal.setA2CH(self.A2CHList[nb])
coal.setE1CH(self.E1CHList[nb])
coal.setE2CH(self.E2CHList[nb])
coal.setAHETCH(self.AHETCHList[nb])
coal.setEHETCH(self.EHETCHList[nb])
coal.setIOCHET(self.IOCHETList[nb])
return coal
def getCoalNumber(self):
return self.coalNumber
def getClassesNumberList(self):
return self.classesNumberList
def getInitDiameterClassesList(self):
return self.initDiameterClassesList
def getCDryCompositionList(self):
return self.CDryCompositionList
def getHDryCompositionList(self):
return self.HDryCompositionList
def getODryCompositionList(self):
return self.ODryCompositionList
def getDryList(self):
return self.DryList
def getPCIValueList(self):
return self.PCIValueList
def getThermalCapacityList(self):
return self.thermalCapacityList
def getDensityList(self):
return self.densityList
def getCDryCompositionCokeList(self):
return self.CDryCompositionCokeList
def getHDryCompositionCokeList(self):
return self.HDryCompositionCokeList
def getODryCompositionCokeList(self):
return self.ODryCompositionCokeList
def getPCICokeValueList(self):
return self.PCICokeValueList
def getAshesRatioList(self):
return self.ashesRatioList
def getAshesFormingEnthalpyList(self):
return self.ashesFormingEnthalpyList
def getAshesThermalCapacityList(self):
return self.ashesThermalCapacityList
def setCoalNumber(self, value):
self.coalNumber = value
def setClassesNumberList(self, value):
self.classesNumberList = value
def setInitDiameterClassesList(self, value):
self.initDiameterClassesList = value
def setCDryCompositionList(self, value):
self.CDryCompositionList = value
def setHDryCompositionList(self, value):
self.HDryCompositionList = value
def setODryCompositionList(self, value):
self.ODryCompositionList = value
def setDryList(self, value):
self.DryList = value
def setPCIValueList(self, value):
self.PCIValueList = value
def setThermalCapacityList(self, value):
self.thermalCapacityList = value
def setDensityList(self, value):
self.densityList = value
def setCDryCompositionCokeList(self, value):
self.CDryCompositionCokeList = value
def setHDryCompositionCokeList(self, value):
self.HDryCompositionCokeList = value
def setODryCompositionCokeList(self, value):
self.ODryCompositionCokeList = value
def setPCICokeValueList(self, value):
self.PCICokeValueList = value
def setAshesRatioList(self, value):
self.ashesRatioList = value
def setAshesFormingEnthalpyList(self, value):
self.ashesFormingEnthalpyList = value
def setAshesThermalCapacityList(self, value):
self.ashesThermalCapacityList = value
#
# "DEVOLATISATION" part
def getIY1CHList(self):
return self.IY1CHList
def getY1CHList(self):
return self.Y1CHList
def getIY2CHList(self):
return self.IY2CHList
def getY2CHList(self):
return self.Y2CHList
def getA1CHList(self):
return self.A1CHList
def getA2CHList(self):
return self.A2CHList
def getE1CHList(self):
return self.E1CHList
def getE2CHList(self):
return self.E2CHList
def setIY1CHList(self, value):
self.IY1CHList = value
def setY1CHList(self, value):
self.Y1CHList = value
def setIY2CHList(self, value):
self.IY2CHList = value
def setY2CHList(self, value):
self.Y2CHList = value
def setA1CHList(self, value):
self.A1CHList = value
def setA2CHList(self, value):
self.A2CHList = value
def setE1CHList(self, value):
self.E1CHList = value
def setE2CHList(self, value):
self.E2CHList = value
#
# "COMBUSTION HETEROGENE" part
def getAHETCHList(self):
return self.AHETCHList
def getEHETCHList(self):
return self.EHETCHList
def getIOCHETList(self):
return self.IOCHETList
def setAHETCHList(self, value):
self.AHETCHList = value
def setEHETCHList(self, value):
self.EHETCHList = value
def setIOCHETList(self, value):
self.IOCHETList = value
class RadiativTransfer:
def __init__(self):
""" constructor """
#
# "RAYONNEMENT" part
self.Comment = {}
self.radiativTransfer = 0
self.Comment["radiativTransfer"] = "Rayonnement : (0 : pas de rayonnement ; 1 : constant donne ci-dessous ; 2 : par Modak)"
self.absorptionCoeff = 0
self.Comment["absorptionCoeff"] = "Coeff absorption pour le melange gazeux constant"
#
# "RAYONNEMENT" part
def getRadiativTransfer(self) :
return self.radiativTransfer
def getAbsorptionCoeff(self):
return self.absorptionCoeff
def setRadiativTransfer(self, value) :
self.radiativTransfer = value
def setAbsorptionCoeff(self, value):
self.absorptionCoeff = value
class CoalThermoChemistryModel:
def __init__(self, fileName, case):
""" constructor """
self.case = case
#
# A remplacer par le bon repertoire
self.fileName = fileName
self.varComment = {}
self.species = CommonCombustion.Species()
self.radiativTransfer = RadiativTransfer()
self.coals = Coals()
#
# Load file
if not self.load():
coal = Coal()
#
# create default coal
self.coals.addCoal(coal)
#
# create default species
self.species.getDefault()
def load(self):
""" read thermochimestry file"""
#FIXME bug to obtain case_path
filePath = self.case['data_path']+"/"+self.fileName
try :
ThermoChFile = open(filePath, "r")
except :
return 0
# "THERMOCHIMIE" part
line = ThermoChFile.readline()
RegExpr = re.compile("^THERMOCHIMIE")
if not RegExpr.match(line):
msg = "Reading file error: " + filePath
msg = msg + "\nNo string 'THERMOCHIMIE' in the first line\n"
raise ValueError, msg
#
#
line = ThermoChFile.readline()
value = self._readIntValue(line, "currentSpeciesNb", filePath)
self.species.setCurrentSpeciesNb(value)
#
#
line = ThermoChFile.readline()
value = self._readIntValue(line, "enthalpyTempTabNb", filePath)
self.species.setEnthalpyTempTabNb(value)
#
# "ESPECE COURANTE" part
line = ThermoChFile.readline()
RegExpr = re.compile("^ESPECES COURANTES")
if not RegExpr.match(line):
msg = "Reading file error: " + filePath
msg = msg + "\nNo string 'ESPECES COURANTES' in the first line\n"
raise ValueError, msg
#
#
line = ThermoChFile.readline()
try:
self.species.setCurrentSpeciesList(line.split())
except:
msg = "Reading file error: " + filePath + " bad list of current species"
raise ValueError, msg
#
#
line = ThermoChFile.readline()
value = self._readFloatValue(line, "MinTempTab", filePath)
self.species.setMinTempTab(value)
#
#
line = ThermoChFile.readline()
value = self._readFloatValue(line, "MaxTempTab", filePath)
self.species.setMaxTempTab(value)
#
#
line = ThermoChFile.readline()
value = self._readIntValue(line, "ElementarySpeciesNb", filePath)
self.species.setElementarySpeciesNb(value)
#
#
ElementarySpeciesMolarMassesList = []
CurrentSpeciesCompositionList = []
for elemSpec in range(self.species.getElementarySpeciesNb()):
try:
line = ThermoChFile.readline()
valuesList = line.split()
ElementarySpeciesMolarMassesList.append(float(valuesList[0]))
composition = []
for currentSpec in range(self.species.getCurrentSpeciesNb()):
composition.append(int(valuesList[1 + currentSpec]))
CurrentSpeciesCompositionList.append(composition)
except:
msg = "Reading file error: " + filePath
msg = msg + "\nElementarySpeciesMolarMassesList or CurrentSpeciesCompositionList reading\n"
raise ValueError, msg
self.species.setElementarySpeciesList(["C","H","O","N"])
self.species.setElementarySpeciesMolarMassesList(ElementarySpeciesMolarMassesList)
self.species.setCurrentSpeciesCompositionList(CurrentSpeciesCompositionList)
#
# "RAYONNEMENT" part
line = ThermoChFile.readline()
RegExpr = re.compile("^RAYONNEMENT")
if not RegExpr.match(line):
msg = "Reading file error: " + filePath + "\nNo string 'RAYONNEMENT'\n"
raise ValueError, msg
#
#
line = ThermoChFile.readline()
value = self._readIntValue(line, "RadiativTransfer", filePath)
self.radiativTransfer.setRadiativTransfer(value)
#
#
line = ThermoChFile.readline()
value = self._readFloatValue(line, "AbsorptionCoeff", filePath)
self.radiativTransfer.setAbsorptionCoeff(value)
#
# "CARACTERISTIQUES CHARBONS" part
line = ThermoChFile.readline()
RegExpr = re.compile("^CARACTERISTIQUES CHARBONS")
if not RegExpr.match(line):
msg = "Reading file error: " + filePath + "\nNo string 'CARACTERISTIQUES CHARBONS'\n"
raise ValueError, msg
#
#
line = ThermoChFile.readline()
value = self._readIntValue(line, "CoalNumber", filePath)
self.coals.setCoalNumber(value)
#
#
line = ThermoChFile.readline()
values = self._readIntCoalValues(line, "ClassesNumberList", filePath)
self.coals.setClassesNumberList(values)
#
#
line = ThermoChFile.readline()
try:
strList = line.split()
InitDiameterClassesList = []
pt = 0
for coal in range(self.coals.coalNumber):
InitDiameter = []
for Class in range(self.coals.classesNumberList[coal]):
InitDiameter.append(float(strList[pt+Class]))
pt += self.coals.classesNumberList[coal]
InitDiameterClassesList.append(InitDiameter)
self.coals.setInitDiameterClassesList(InitDiameterClassesList)
except:
msg = "Reading file error: " + filePath + "\nbad value for InitDiameterClassesList\n"
raise ValueError, msg
#
#
line = ThermoChFile.readline()
values = self._readFloatCoalValues(line, "CDryCompositionList", filePath)
self.coals.setCDryCompositionList(values)
#
#
line = ThermoChFile.readline()
values = self._readFloatCoalValues(line, "HDryCompositionList", filePath)
self.coals.setHDryCompositionList(values)
#
#
line = ThermoChFile.readline()
values = self._readFloatCoalValues(line, "ODryCompositionList", filePath)
self.coals.setODryCompositionList(values)
#
#
line = ThermoChFile.readline()
intValues, floatValues = self._readIntFloatCoalValues(line, "PCIValue", filePath)
self.coals.setDryList(intValues)
self.coals.setPCIValueList(floatValues)
#
#
line = ThermoChFile.readline()
values = self._readFloatCoalValues(line, "thermalCapacity", filePath)
self.coals.setThermalCapacityList(values)
#
#
line = ThermoChFile.readline()
values = self._readFloatCoalValues(line, "density", filePath)
self.coals.setDensityList(values)
#
# "Coke" part
line = ThermoChFile.readline()
RegExpr = re.compile("^Coke")
if not RegExpr.match(line):
msg = "_reading file error: " + filePath + "\nNo string 'Coke'\n"
raise ValueError, msg
#
#
line = ThermoChFile.readline()
values = self._readFloatCoalValues(line, "CDryCompositionCokeList", filePath)
self.coals.setCDryCompositionCokeList(values)
#
#
line = ThermoChFile.readline()
values = self._readFloatCoalValues(line, "HDryCompositionCokeList", filePath)
self.coals.setHDryCompositionCokeList(values)
#
#
line = ThermoChFile.readline()
values = self._readFloatCoalValues(line, "ODryCompositionCokeList", filePath)
self.coals.setODryCompositionCokeList(values)
#
#
line = ThermoChFile.readline()
values = self._readFloatCoalValues(line, "PCICokeValue", filePath)
self.coals.setPCICokeValueList(values)
#
# "Cendres" part
line = ThermoChFile.readline()
RegExpr = re.compile("^Cendres")
if not RegExpr.match(line):
msg = "Reading file error: " + filePath + "\nNo string 'Cendres'\n"
raise ValueError, msg
#
#
line = ThermoChFile.readline()
values = self._readFloatCoalValues(line, "ashesRatioList", filePath)
self.coals.setAshesRatioList(values)
#
#
line = ThermoChFile.readline()
values = self._readFloatCoalValues(line, "AshesFormingEnthalpy", filePath)
self.coals.setAshesFormingEnthalpyList(values)
#
#
line = ThermoChFile.readline()
values = self._readFloatCoalValues(line, "AshesThermalCapacity", filePath)
self.coals.setAshesThermalCapacityList(values)
#
# "Devolatilisation (Kobayashi)" part
line = ThermoChFile.readline()
RegExpr = re.compile("Parametres de devolatilisation")
if not RegExpr.match(line):
msg = "Reading file error: " + filePath + \
"\nNo string 'Parametres de devolatilisation (modele de Kobayashi)'\n"
raise ValueError, msg
#
#
line = ThermoChFile.readline()
intValues, floatValues = self._readIntFloatCoalValues(line, "IY1CH", filePath)
self.coals.setIY1CHList(intValues)
self.coals.setY1CHList(floatValues)
#
#
line = ThermoChFile.readline()
intValues, floatValues = self._readIntFloatCoalValues(line, "IY2CH", filePath)
self.coals.setIY2CHList(intValues)
self.coals.setY2CHList(floatValues)
#
#
line = ThermoChFile.readline()
values = self._readFloatCoalValues(line, "A1CH", filePath)
self.coals.setA1CHList(values)
#
#
line = ThermoChFile.readline()
values = self._readFloatCoalValues(line, "A2CH", filePath)
self.coals.setA2CHList(values)
#
#
line = ThermoChFile.readline()
values = self._readFloatCoalValues(line, "E1CH", filePath)
self.coals.setE1CHList(values)
#
#
line = ThermoChFile.readline()
values = self._readFloatCoalValues(line, "E2CH", filePath)
self.coals.setE2CHList(values)
#
# "Devolatisation (Kobayashi)" part
line = ThermoChFile.readline()
RegExpr = re.compile("Parametres de combustion heterogene")
if not RegExpr.match(line):
msg = "Reading file error: " + filePath + \
"\nNo string 'Parametres de combustion heterogene'\n"
raise ValueError, msg
#
#
line = ThermoChFile.readline()
values = self._readFloatCoalValues(line, "AHETCH", filePath)
self.coals.setAHETCHList(values)
#
#
line = ThermoChFile.readline()
values = self._readFloatCoalValues(line, "EHETCH", filePath)
self.coals.setEHETCHList(values)
#
#
line = ThermoChFile.readline()
values = self._readIntCoalValues(line, "IOCHET", filePath)
self.coals.setIOCHETList(values)
ThermoChFile.close()
return 1
def save(self):
""" write and save thermochimestry file"""
#
# Openning
filePath = self.case['data_path']+"/"+self.fileName
try :
ThermoChFile = open(filePath, "w")
except :
msg = "Openning file error: " + filePath
raise ValueError, msg
#
# writing
ThermoChFile.write("THERMOCHIMIE\n")
chain = str(self.species.getCurrentSpeciesNb())
comment = self.createComment(len(chain),self.species.Comment["currentSpeciesNb"])
ThermoChFile.write(chain + comment + "\n")
chain = str(self.species.getEnthalpyTempTabNb())
comment = self.createComment(len(chain),self.species.Comment["enthalpyTempTabNb"])
ThermoChFile.write(chain + comment + "\n")
#
ThermoChFile.write("ESPECES COURANTES\n")
ThermoChFile.write(self._preWriteList(self.species.getCurrentSpeciesList())+"\n")
chain = str(self.species.getMinTempTab())
comment = self.createComment(len(chain),self.species.Comment["minTempTab"])
ThermoChFile.write(chain + comment + "\n")
chain = str(self.species.getMaxTempTab())
comment = self.createComment(len(chain),self.species.Comment["maxTempTab"])
ThermoChFile.write(chain + comment +"\n")
chain = str(self.species.getElementarySpeciesNb())
comment = self.createComment(len(chain),self.species.Comment["elementarySpeciesNb"])
ThermoChFile.write(chain + comment +"\n")
list2write=[]
ind = 0
for i in self.species.getElementarySpeciesMolarMassesList():
listTMP = []
listTMP.append(i)
for j in self.species.getCurrentSpeciesCompositionList()[ind]:
listTMP.append(j)
ind += 1
list2write.append(listTMP)
ThermoChFile.write(self._preWriteList(list2write))
#
ThermoChFile.write("RAYONNEMENT\n")
chain = str(self.radiativTransfer.getRadiativTransfer())
comment = self.createComment(len(chain),self.radiativTransfer.Comment["radiativTransfer"])
ThermoChFile.write(chain + comment +"\n")
chain = str(self.radiativTransfer.getAbsorptionCoeff())
comment = self.createComment(len(chain),self.radiativTransfer.Comment["absorptionCoeff"])
ThermoChFile.write(chain + comment +"\n")
#
ThermoChFile.write("CARACTERISTIQUES CHARBONS\n")
chain = str(self.coals.getCoalNumber())
comment = self.createComment(len(chain),self.coals.Comment["coalNumber"])
ThermoChFile.write(chain + comment +"\n")
chain = str(self._preWriteList(self.coals.getClassesNumberList()))
comment = self.createComment(len(chain),self.coals.Comment["classesNumberList"])
ThermoChFile.write(chain + comment +"\n")
listTMP = []
for i in self.coals.getInitDiameterClassesList():
for j in i:
listTMP.append(j)
chain = str(self._preWriteList(listTMP))
comment = self.createComment(len(chain),self.coals.Comment["initDiameterClassesList"])
ThermoChFile.write(chain + comment + "\n")
chain = str(self._preWriteList(self.coals.getCDryCompositionList()))
comment = self.createComment(len(chain),self.coals.Comment["CDryCompositionList"])
ThermoChFile.write(chain + comment +"\n")
chain = str(self._preWriteList(self.coals.getHDryCompositionList()))
comment = self.createComment(len(chain),self.coals.Comment["HDryCompositionList"])
ThermoChFile.write(chain + comment +"\n")
chain = str(self._preWriteList(self.coals.getODryCompositionList()))
comment = self.createComment(len(chain),self.coals.Comment["ODryCompositionList"])
ThermoChFile.write(chain + comment +"\n")
list2write=[]
for coal in range(self.coals.coalNumber):
list2write.append(self.coals.getDryList()[coal])
list2write.append(self.coals.getPCIValueList()[coal])
chain = str(self._preWriteList(list2write))
comment = self.createComment(len(chain),self.coals.Comment["DryList"])
ThermoChFile.write(chain + comment +"\n")
chain = str(self._preWriteList(self.coals.getThermalCapacityList()))
comment = self.createComment(len(chain),self.coals.Comment["thermalCapacityList"])
ThermoChFile.write(chain + comment +"\n")
chain = str(self._preWriteList(self.coals.getDensityList()))
comment = self.createComment(len(chain),self.coals.Comment["densityList"])
ThermoChFile.write(chain + comment +"\n")
#
ThermoChFile.write("Coke\n")
chain = str(self._preWriteList(self.coals.getCDryCompositionCokeList()))
comment = self.createComment(len(chain),self.coals.Comment["CDryCompositionCokeList"])
ThermoChFile.write(chain + comment +"\n")
chain = str(self._preWriteList(self.coals.getHDryCompositionCokeList()))
comment = self.createComment(len(chain),self.coals.Comment["HDryCompositionCokeList"])
ThermoChFile.write(chain + comment +"\n")
chain = str(self._preWriteList(self.coals.getODryCompositionCokeList()))
comment = self.createComment(len(chain),self.coals.Comment["ODryCompositionCokeList"])
ThermoChFile.write(chain + comment +"\n")
chain = str(self._preWriteList(self.coals.getPCICokeValueList()))
comment = self.createComment(len(chain),self.coals.Comment["PCICokeValueList"])
ThermoChFile.write(chain + comment +"\n")
#
ThermoChFile.write("Cendres\n")
chain = str(self._preWriteList(self.coals.getAshesRatioList()))
comment = self.createComment(len(chain),self.coals.Comment["ashesRatioList"])
ThermoChFile.write(chain + comment +"\n")
chain = str(self._preWriteList(self.coals.getAshesFormingEnthalpyList()))
comment = self.createComment(len(chain),self.coals.Comment["ashesFormingEnthalpyList"])
ThermoChFile.write(chain + comment +"\n")
chain = str(self._preWriteList(self.coals.getAshesThermalCapacityList()))
comment = self.createComment(len(chain),self.coals.Comment["ashesThermalCapacityList"])
ThermoChFile.write(chain + comment +"\n")
#
ThermoChFile.write("Parametres de devolatilisation (modele de Kobayashi)\n")
list2write=[]
ind = 0
for i in self.coals.getIY1CHList():
j = self.coals.getY1CHList()[ind]
list2write.append(i)
list2write.append(j)
ind += 1
chain = self._preWriteList(list2write)
comment = self.createComment(len(chain),self.coals.Comment["Y1CHList"])
ThermoChFile.write(chain + comment +"\n")
list2write=[]
ind = 0
for i in self.coals.getIY2CHList():
j = self.coals.getY2CHList()[ind]
list2write.append(i)
list2write.append(j)
ind += 1
chain = self._preWriteList(list2write)
comment = self.createComment(len(chain),self.coals.Comment["Y2CHList"])
ThermoChFile.write(chain + comment +"\n")
chain = self._preWriteList(self.coals.getA1CHList())
comment = self.createComment(len(chain),self.coals.Comment["A1CHList"])
ThermoChFile.write(chain + comment +"\n")
chain = self._preWriteList(self.coals.getA2CHList())
comment = self.createComment(len(chain),self.coals.Comment["A2CHList"])
ThermoChFile.write(chain + comment +"\n")
chain = self._preWriteList(self.coals.getE1CHList())
comment = self.createComment(len(chain),self.coals.Comment["E1CHList"])
ThermoChFile.write(chain + comment +"\n")
chain = self._preWriteList(self.coals.getE2CHList())
comment = self.createComment(len(chain),self.coals.Comment["E2CHList"])
ThermoChFile.write(chain + comment +"\n")
ThermoChFile.write("Parametres de combustion heterogene\n")
chain = self._preWriteList(self.coals.getAHETCHList())
comment = self.createComment(len(chain),self.coals.Comment["AHETCHList"])
ThermoChFile.write(chain + comment +"\n")
chain = self._preWriteList(self.coals.getEHETCHList())
comment = self.createComment(len(chain),self.coals.Comment["EHETCHList"])
ThermoChFile.write(chain + comment +"\n")
chain = self._preWriteList(self.coals.getIOCHETList())
comment = self.createComment(len(chain),self.coals.Comment["IOCHETList"])
ThermoChFile.write(chain + comment +"\n")
ThermoChFile.close()
def createComment(self, length, comment):
nb = length
blancString = ""
while nb < 60 :
blancString += " "
nb += 1
return blancString+comment
def _readIntValue(self, line, valueName, filePath):
try:
value = int(line.split()[0])
except:
msg = "Reading file error: " + filePath + "\n"\
"bad value for " + valueName
raise ValueError, msg
return value
def _readFloatValue(self, line, valueName, filePath):
try:
value = float(line.split()[0])
except:
msg = "Reading file error: " + filePath + "\n" \
"bad value for " + valueName
raise ValueError, msg
return value
def _readFloatCoalValues(self, line, valueName, filePath):
""" read coal values"""
try:
strList = line.split()
value = []
for coal in range(self.coals.coalNumber):
value.append(float(strList[coal]))
except:
msg = "Reading file error: " + filePath + "\n"\
"bad value for "+ valueName
raise ValueError, msg
return value
def _readIntCoalValues(self, line, valueName, filePath):
""" read coal values"""
try:
strList = line.split()
value = []
for coal in range(self.coals.coalNumber):
value.append(int(strList[coal]))
except:
msg = "Reading file error: " + filePath + " bad value for "+ valueName
raise ValueError, msg
return value
def _readIntFloatCoalValues(self, line, valueName, filePath):
""" read coal values"""
try:
strList = line.split()
intValue = []
floatValue = []
for coal in range(0,2*self.coals.coalNumber,2):
intValue.append(int(strList[coal]))
floatValue.append(float(strList[coal+1]))
except:
msg = "Reading file error: " + filePath + " bad value for "+ valueName
raise ValueError, msg
return intValue, floatValue
def _preWriteList(self, List):
"""build a line with elements list"""
string = ""
for i in List:
if type(i) == type([]) :
stringTMP = self._preWriteList(i)
string += stringTMP + "\n"
else:
if string != "":
string += " " + str(i) + " "
else:
string += str(i)
return string
def getCoals(self):
return self.coals
def getSpecies(self):
return self.species
syntax highlighted by Code2HTML, v. 0.9.1