コード例 #1
0
OCR: oil-circulation ratio [-]: it is a mass fraction of oil per total mass mixture
z_mass: global mass fraction 
z: global molar fraction
'''
p = 0.3e5  # <=============================== change here
T = (30. + 273.15)  # <=============================== change here
LC, base = 0.40, 'mass'  # <=============================== change here
zin = np.array([LC, (1. - LC)])
z, z_mass = Tools_Convert.frac_input(MM, zin, base)
'''
=======================================
         CREATING OBJECTS - [to a better identification, all objects' names are followed by "_obj"]
=======================================
'''
rr_obj = RachfordRice()
eos_obj = PengRobinsonEos(pC, Tc, AcF, omega_a, omega_b, kij)

michelsen_obj = Michelsen()
flash_obj = Flash(max_iter=50, tolerance=1.0e-13, print_statistics=False)
prop_obj = Properties(pC, Tc, AcF, omega_a, omega_b, kij)


def getting_the_results_from_FlashAlgorithm_main(p, T, pC, Tc, AcF, z):
    initial_K_values = calculate_K_values_wilson(p, T, pC, Tc, AcF)
    is_stable, K_michelsen = michelsen_obj(eos_obj,
                                           p,
                                           T,
                                           z,
                                           initial_K_values,
                                           max_iter=100,
                                           tolerance=1.0e-12)
コード例 #2
0
R = 8314  # [J/(kmol*K)]
SQRT_2 = np.sqrt(2)

#TO LOGGING MSG(import logging and logging.basicConfig and logging.disable)
logging.basicConfig(level=logging.DEBUG, format=' %(asctime)s - %(levelname)s - %(message)s')
#logging.disable(logging.CRITICAL)


#FOR BUBBLE T
(pressure, _, global_molar_fraction,
        critical_pressure, critical_temperature, acentric_factor,
        molar_mass, omega_a, omega_b, binary_interaction, specific_heat) = props
#NECESSARY OBJECTS
michelsen_obj = Michelsen()
eos_obj = PengRobinsonEos(critical_pressure, critical_temperature, acentric_factor,
                              omega_a, omega_b, binary_interaction)

def function_inner_loop(temperature, pressure, global_molar_fraction, max_iter = 100, tolerance = 1.0e-12, stability=False):
    P = pressure
    T = temperature
    xi = z = global_molar_fraction
    f_L, Z_L = eos_obj.calculate_fugacities_with_minimum_gibbs_energy(P, T, xi, 'liquid')
    PHI_L = f_L / (xi * P)
    initial_K_values = calculate_K_values_wilson(P, T, eos_obj.Pc, eos_obj.Tc, eos_obj.ω)
    is_stable, K_michelsen = michelsen_obj(eos_obj, P, T, z, initial_K_values, max_iter, tolerance)
    if stability:
        if not is_stable:
            msg = str('===> two-phases can be in equilibrium')
        else:
            msg = str('===> one phase in this @')
        print(str(msg))
コード例 #3
0
# logging.basicConfig(filename='Cleber_File.txt', level=logging.DEBUG, format='%(asctime)s - %(levelname)s - %(message)s')
#logging.disable(logging.CRITICAL)
'''
=================================================================================================================
PROPS IS A LIST OF PROPERTIES; BLANK SPACE CORRESPOND TO THE PROPERTY WE ARE INTERESTED. 

CHECK BubbleP__singlePoint.py OR BubbleP__curvePoints.py to see how the empty spaces are filled
=================================================================================================================
'''
(pC, Tc, AcF, MM, omega_a, omega_b, kij, Cp) = props
'''
=================================================================================================================
NECESSARY OBJECTS
=================================================================================================================
'''
eos_obj = PengRobinsonEos(pC, Tc, AcF, omega_a, omega_b, kij)
michelsen_obj = Michelsen()
'''
=================================================================================================================
CODE FOR SEEK THE BUBBLE PRESSURE
=================================================================================================================
'''


class Bubble_class:
    def __init__(self, pC, Tc, AcF, kij):
        self.pC, self.Tc, self.AcF, self.kij = pC, Tc, AcF, kij

    def pressure_guess(self, T, z):
        '''To a specific temperature, this function provides a estimation (initial guess pressure) to find...
         ... the mixture bubble pressure. This result is used to create a range of pressure.