예제 #1
0
def RiemFluid_TP(T, P, *, fluid):
    from ctREFPROP.ctREFPROP import REFPROPFunctionLibrary
    PATH = r'D:\REFPROP'
    RP = REFPROPFunctionLibrary(PATH)
    MOLAR_BASE_SI = RP.GETENUMdll(0, 'MOLAR BASE SI').iEnum
    RP.SETPATHdll(PATH)
    RP.SETFLUIDSdll(fluid)
    rhomolar, Riem = RP.REFPROPdll('', 'TP', 'D;RIEM', MOLAR_BASE_SI, 0, 0, T,
                                   P, [1.0]).Output[0:2]
    rhoN = rhomolar * N_A

    z = [1.0] + [0.0] * 19
    Ar00, Ar01, Ar10, Ar02, Ar11, Ar20, Ar03, Ar12, Ar21, Ar30 = RP.REFPROPdll(
        '', 'TD',
        'PHIR00;PHIR01;PHIR10;PHIR02;PHIR11;PHIR20;PHIR03;PHIR12;PHIR21;PHIR30',
        MOLAR_BASE_SI, 0, 0, T, rhomolar, z).Output[0:10]
    Ao00, Ao01, Ao10, Ao02, Ao11, Ao20, Ao03, Ao12, Ao21, Ao30 = RP.REFPROPdll(
        '', 'TD',
        'PHIG00;PHIG01;PHIG10;PHIG02;PHIG11;PHIG20;PHIG03;PHIG12;PHIG21;PHIG30',
        MOLAR_BASE_SI, 0, 0, T, rhomolar, z).Output[0:10]
    Bstar = 1 + 2 * Ar01 + Ar02
    cvstar = -Ao20 - Ar20

    # First derivatives
    TdBdT = -(2 * Ar11 + Ar12)
    TdcvdT = ((2 * Ao20 + Ao30) + (2 * Ar20 + Ar30))
    rhodBdrho = (2 * (Ar01 + Ar02) + (2 * Ar02 + Ar03))
    rhodcvdrho = -Ar21

    # Combinations of first derivatives
    rhodlnBcvdrho = 1 / Bstar * rhodBdrho + 1 / cvstar * rhodcvdrho
    TdlnBcvdT = 1 / Bstar * TdBdT + 1 / cvstar * TdcvdT
    rhodlnBovercvdrho = 1 / Bstar * rhodBdrho - 1 / cvstar * rhodcvdrho

    # Second derivatives, same treatment as first derivatives,
    # Fourth derivatives cancel conveniently
    T2dBdT2_plus_rho2dcvdrho2 = (4 * Ar11 + 2 * Ar12 + 2 * Ar21)

    Rstar = 1 / (Bstar * cvstar) * (TdBdT *
                                    (1 - 0.5 * TdlnBcvdT) + rhodcvdrho *
                                    (1 - 0.5 * rhodlnBcvdrho) -
                                    0.5 * cvstar * rhodlnBovercvdrho +
                                    T2dBdT2_plus_rho2dcvdrho2)
    here = Rstar / rhoN  # [m^3]
    return here * 1e27, Riem  # [nm^3]
예제 #2
0
파일: time_Ar0n.py 프로젝트: ianhbell/teqp
def time_REFPROP(n, Nrep):
    root = os.environ['RPPREFIX']
    RP = REFPROPFunctionLibrary(root)
    RP.SETFLUIDSdll('METHANE')
    if n == 0:
        f = lambda D, T: RP.REFPROP1dll(D, T)
    elif n == 1:
        f = lambda AS: AS.delta() * AS.dalphar_dDelta()
    elif n == 2:
        f = lambda AS: AS.delta()**2 * AS.d2alphar_dDelta2()
    elif n == 3:
        f = lambda AS: AS.delta()**3 * AS.d3alphar_dDelta3()
    else:
        raise ValueError(n)

    T = 300
    rho = 3.0
    z = [1.0]
    tic = timeit.default_timer()
    for i in range(Nrep):
        RP.PRESSdll(T, rho / 1e3, z)
    toc = timeit.default_timer()
    elap = (toc - tic) / Nrep
    return elap