Esempio n. 1
0
def dichotomy(maxValue, minValue, press, sumheat, dQ, initVolume):
    error1 = -1
    error2 = 1
    k = minValue
    count = 0
    while (abs(error1 - error2) > 0.00001):
        if (error1 * error2 < 0):
            maxValue = maxValue
            minValue = k
            k = (maxValue + minValue) / 2

            h2 = seuif97.pt2h(press, k)
            rho2 = 1 / seuif97.pt2v(press, k)

            h2up = seuif97.pt2h(press, maxValue)
            rho2up = 1 / seuif97.pt2v(press, maxValue)

            error1 = (sumheat - dQ * 1) - (initVolume * rho2 * h2)
            error2 = (sumheat - dQ * 1) - (initVolume * rho2up * h2up)
            count = count + 1
        else:
            maxValue = k
            minValue = minValue
            k = (maxValue + minValue) / 2

            h2 = seuif97.pt2h(press, k)
            rho2 = seuif97.pt2v(press, k)

            h2down = seuif97.pt2h(press, minValue)
            rho2down = 1 / seuif97.pt2v(press, minValue)

            error1 = (sumheat - dQ * 1) - (initVolume * h2 * rho2)
            error2 = (sumheat - dQ * 1) - (initVolume * h2down * rho2down)
            count = count + 1
    return k
Esempio n. 2
0
def SteamFlow(inletstate, RatedState):

    inletstate['v'] = pt2v(inletstate['p'], inletstate['t'])
    RatedState['v'] = pt2v(RatedState['p'], RatedState['t'])
    
    inletstate['G'] = RatedState['G']*inletstate['p']/RatedState['p']\
                       *square(RatedState['p']*RatedState['v']/(inletstate['p']*inletstate['v']))
    
    return inletstate['G']
Esempio n. 3
0
def calcOverHeatSteam(tempe, maxValue, minValue, press, seconds, innerDiameter,
                      outerDiameter, oneInsulaDiameter, twoInsulaDiameter,
                      pipeLength, insulaType, sumheat):
    # 计算这一段管段产生的饱和水量
    # 就当是这条管道是稳态的已经饱和的蒸汽
    #dQ = calcheatLossPermeter(tempe,seconds)
    heatLossPerSquare = CalcOverHeadPipeThermalFlux(tempe, innerDiameter,
                                                    outerDiameter,
                                                    oneInsulaDiameter,
                                                    twoInsulaDiameter,
                                                    insulaType)
    dQ = heatLossPerSquare * math.pi * twoInsulaDiameter * 1e-3 * 3.6 * seconds / 3600  # 计算每米的热损,kJ
    initVolume = math.pi * pow(
        (twoInsulaDiameter / 2), 2) * 1e-6  # 单位:m^3 ,单位体积
    h1 = seuif97.pt2h(press, tempe)  # 输入的焓值,kJ/kg
    rho = 1 / seuif97.pt2v(press, tempe)  # kg/m^3
    #sumheat = h1 * rho * initVolume  # 单位:kJ,管道中预留的总热量
    mass = rho * initVolume * 1e-3  # 单位:t,管道中总的蒸汽质量
    # 计算压降
    #dropPress = calculateDropPressure(innerDiameter, pipeLength, mass, press, tempe)  # Mpa
    # 二分法计算
    outTempe = dichotomy(maxValue, minValue, press, sumheat, dQ,
                         initVolume)  # 出口的温度
    sumheat = sumheat - dQ
    #press = press - dropPress  # 出口的压强
    return outTempe, press, heatLossPerSquare, dQ, rho, h1, sumheat
def calculateDropPressure(innerDiameter, pipeLength, flowMass, press, tempe):
    #flowRate:流速(m/s);
    #innerDiameter: 管道内径(mm)
    #mu :介质的动力粘度(pa*s)
    #V_steam:介质的比容(m^3/kg)
    press = press + 0.1
    absRough = 0.0457
    KinematicViscosity = seuif97.pt(press, tempe, 25)  # 运动粘度
    volume = seuif97.pt2v(1, 300)
    dynamicViscosity = KinematicViscosity / volume  #Pas
    rhoSteam = 1 / volume

    #计算雷诺数,确定管道的摩擦阻力系数
    reynold = flowMass * innerDiameter * 1e-3 / (dynamicViscosity * volume
                                                 )  #雷诺数
    a = -2 * math.log10(absRough / (innerDiameter * 3.7) + 12 / reynold)
    b = -2 * math.log10(absRough / (innerDiameter * 3.7) + 2.51 * a / reynold)
    mediumValueNum1 = pow((a - 4.781), 2)
    mediumValueNum2 = b - 2 * a + 4.781
    lambda1 = pow(4.781 - mediumValueNum1 / mediumValueNum2, -2)
    #k = 1.15; % 修正系数
    dropPressure = lambda1 * pipeLength * rhoSteam * pow(
        flowMass, 2) * 1e-6 / (2 * innerDiameter * 1e-3)  #MPa
    return dropPressure
Esempio n. 5
0
 def pt(self):
     self.h = if97.pt2h(self.p, self.t)
     self.s = if97.pt2s(self.p, self.t)
     self.v = if97.pt2v(self.p, self.t)
     self.x = None
Esempio n. 6
0
count = 0
tempelist,pressList = [],[]
sumTime = 0

innerDiameter = 150
outerDiameter = 159
oneInsulaThick = 60
twoInsulaThick = 50
pipeLength = 87
oneInsulaDiameter = outerDiameter + 2 * oneInsulaThick
twoInsulaDiameter = oneInsulaDiameter + 2 * twoInsulaThick
insulaType = ['GSL','GLASS']

#原管道中的蒸汽质量
initVolume = math.pi * pow((twoInsulaDiameter / 2), 2) * 1e-6  # 单位:m^3 ,单位体积
rho1 = 1 / seuif97.pt2v(press, tempe)  # kg/m^3
massSteam = rho1 * initVolume   # 单位:kg,管道中总的蒸汽质量
sumtime,heatLossPerSquareList,heatLossPerMeterList, rhoList, hList, sumHeatList = [],[],[],[],[],[]


# 初始的温度和压强下每米管道的蒸汽总热量
initVolume = math.pi * pow((twoInsulaDiameter / 2), 2) * 1e-6  # 单位:m^3 ,单位体积
h1 = seuif97.pt2h(press, tempe)  # 输入的焓值,kJ/kg
rho = 1 / seuif97.pt2v(press, tempe)  # kg/m^3
sumheat = h1 * rho * initVolume  # 单位:kJ,管道中预留的总热量


# 过热蒸汽到饱和蒸汽的过渡计算
while abs(tempe - satT) > 0.5:
  maxValue = tempe
  minValue = tempe - 1
Esempio n. 7
0
 def pt(self):
     self.h = if97.pt2h(self.p, self.t)
     self.s = if97.pt2s(self.p, self.t)
     self.v = if97.pt2v(self.p, self.t)
     self.x = None
Esempio n. 8
0
    
    1 ??2?(in1,in2) , e.g: h=pt2h(p,t)
    2 ??(in1,in2,propertyID),  , e.g: h=pt(p,t,4),  the propertyID h is 4
     
License: this code is in the public domain

Author: Cheng Maohua([email protected])

Last modified: 2018.11.28

"""
import seuif97

p, t = 16.10, 535.10

# ??2?(in1,in2)
h = seuif97.pt2h(p, t)
s = seuif97.pt2s(p, t)
v = seuif97.pt2v(p, t)

print("(p,t),h,s,v:",
      "{:>.2f}\t {:>.2f}\t {:>.2f}\t {:>.3f}\t {:>.4f}".format(p, t, h, s, v))

# ??(in1,in2,propertyid)
t = seuif97.ph(p, h, 1)
s = seuif97.ph(p, h, 5)
v = seuif97.ph(p, h, 3)

print("(p,h),t,s,v:",
      "{:>.2f}\t {:>.2f}\t {:>.2f}\t {:>.3f}\t {:>.4f}".format(p, h, t, s, v))