示例#1
0
def my_AllRegions_ph(p, h):
    """ function my_AllRegions_ph = my_AllRegions_ph(p, h) """
    h0 = [0.5132047, 0.3205656, 0, 0, -0.7782567, 0.1885447]
    h1 = [0.2151778, 0.7317883, 1.241044, 1.476783, 0, 0]
    h2 = [-0.2818107, -1.070786, -1.263184, 0, 0, 0]
    h3 = [0.1778064, 0.460504, 0.2340379, -0.4924179, 0, 0]
    h4 = [-0.0417661, 0, 0, 0.1600435, 0, 0]
    h5 = [0, -0.01578386, 0, 0, 0, 0]
    h6 = [0, 0, 0, -0.003629481, 0, 0]

    # % Calcualte density.
    # switch region_ph(p, h)
    if RegionSelection.region_ph(p, h) == 1:
        Ts = Region1.T1_ph(p, h)
        T = Ts
        rho = 1 / Region1.v1_pT(p, Ts)
    elif RegionSelection.region_ph(p, h) == 2:
        Ts = Region2.T2_ph(p, h)
        T = Ts
        rho = 1 / Region2.v2_pT(p, Ts)
    elif RegionSelection.region_ph(p, h) == 3:
        rho = 1 / Region3.v3_ph(p, h)
        T = Region3.T3_ph(p, h)
    elif RegionSelection.region_ph(p, h) == 4:
        xs = Region4.x4_ph(p, h)
        if p < 16.529:
            v4v = Region2.v2_pT(p, Region4.T4_p(p))
            v4L = Region1.v1_pT(p, Region4.T4_p(p))
        else:
            v4v = Region3.v3_ph(p, Region4.h4V_p(p))
            v4L = Region3.v3_ph(p, Region4.h4L_p(p))
        rho = 1 / (xs * v4v + (1 - xs) * v4L)
        T = Region4.T4_p(p)
    elif RegionSelection.region_ph(p, h) == 5:
        Ts = Region5.T5_ph(p, h)
        T = Ts
        rho = 1 / Region5.v5_pT(p, Ts)
    else:
        # my_AllRegions_ph = NaN;
        logger.warning('Region switch returned unknown value')
        return float("NaN")

    rhos = rho / 317.763
    Ts = T / 647.226
    # ps = p / 22.115
    # % Check valid area
    if (T > (900 + 273.15)) or (T > (600 + 273.15) and
                                (p > 300)) or (T > (150 + 273.15) and
                                               (p > 350)) or (p > 500):
        # my_AllRegions_ph = NaN;
        return float("NaN")

    my0 = Ts**0.5 / (1 + 0.978197 / Ts + 0.579829 / (Ts**2) - 0.202354 /
                     (Ts**3))

    Sum = 0
    # TODO:vvvv Check for mistake vvvvv
    # Original Code: for i = 0 : 5
    # Same Problem as in my_AllRegions_pT, see there for explanation
    for i in range(0, 6):
        # Sum = Sum + h0(i + 1) * (1 / Ts - 1) ** i + h1(i + 1) * (1 / Ts - 1) ** i * (rhos - 1) ** 1 + h2(i + 1) * (1 / Ts - 1) ** i * (rhos - 1) ** 2 + h3(i + 1) * (1 / Ts - 1) ** i * (rhos - 1) ** 3 + h4(i + 1) * (1 / Ts - 1) ** i * (rhos - 1) ** 4 + h5(i + 1) * (1 / Ts - 1) ** i * (rhos - 1) ** 5 + h6(i + 1) * (1 / Ts - 1) ** i * (rhos - 1) ** 6;
        Sum = Sum + h0[i] * (1 / Ts - 1) ** i + \
            h1[i] * (1 / Ts - 1) ** i * (rhos - 1) ** 1 + \
            h2[i] * (1 / Ts - 1) ** i * (rhos - 1) ** 2 + \
            h3[i] * (1 / Ts - 1) ** i * (rhos - 1) ** 3 + \
            h4[i] * (1 / Ts - 1) ** i * (rhos - 1) ** 4 + \
            h5[i] * (1 / Ts - 1) ** i * (rhos - 1) ** 5 + \
            h6[i] * (1 / Ts - 1) ** i * (rhos - 1) ** 6

    my1 = math.exp(rhos * Sum)
    mys = my0 * my1
    return mys * 0.000055071