Example #1
0
def calc_p_in_annulus_for_scipy(p_bar, h_m, p_wellhead_bar, t_wellhead_c,
                                gamma_gas, t_bottomhole_c, h_bottomhole_m):
    p_mean_bar = (p_bar + p_wellhead_bar) / 2
    t_mean_c = (t_wellhead_c + calc_t_in_annulus(
        h_m, t_wellhead_c, t_bottomhole_c, h_bottomhole_m)) / 2

    t_mean_k = (uconst.c2k(t_wellhead_c) + uconst.c2k(
        calc_t_in_annulus(h_m, t_wellhead_c, t_bottomhole_c,
                          h_bottomhole_m))) / 2

    z_mean = calc_z_in_annulus(gamma_gas, t_mean_c, p_mean_bar)
    # print(p_mean_bar, t_mean_c, z_mean)
    p_wellhead_mpa = uconst.bar2MPa(p_wellhead_bar)
    # print(z_mean)
    power = (0.03415 * gamma_gas * h_m) / (z_mean * t_mean_k)
    # print(power)
    p_new_mpa = p_wellhead_mpa * np.exp(power)
    p_new_bar = p_new_mpa * 10
    return (p_new_bar - p_bar)**2
Example #2
0
def calc_z_in_annulus(gamma_gas, t_c, p_bar):
    gamma_gas = float(gamma_gas)
    t_c = float(t_c)
    p_bar = float(p_bar)
    t_k = uconst.c2k(t_c)
    p_mpa = uconst.bar2MPa(p_bar)
    tpc_k = PVT.unf_pseudocritical_temperature_Standing_K(gamma_gas)
    ppc_mpa = PVT.unf_pseudocritical_pressure_Standing_MPa(gamma_gas)
    #z = PVT.unf_z_factor_Kareem(t_k/tpc_k, p_mpa/ppc_mpa)
    z = PVT.unf_zfactor_DAK_ppr(p_mpa / ppc_mpa, t_k / tpc_k)
    return z
Example #3
0
    def calc(self, p_bar, t_c):
        """
        Расчет свойств нефти на основе набора корреляций McCain

        расчитанные значения хранятся в соответствующих атрибутах класса

        :param p_bar: давление, бар
        :param t_c: температура, С
        :return: 1 - если все свойства успешно были посчитаны
        """
        super().calc(p_bar, t_c)
        # подготовим внутренние переменные для расчетов
        p_MPaa = uc.bar2MPa(self.p_bar)
        pbcal_MPaa = uc.bar2MPa(self.pbcal_bar)
        t_K = uc.c2k(self.t_c)
        # найдем значение давления насыщения по Valko McCain
        pb_MPaa = PVT.unf_pb_Valko_MPaa(self.rsb_m3m3, self.gamma_oil, self.gamma_gas, t_K)
        self._pb_bar = uc.MPa2bar(pb_MPaa)
        # TODO необходимо будет сделать калибровку при любом P,T любого свойства
        if pbcal_MPaa > 0:
            p_fact = pb_MPaa / pbcal_MPaa
            # сдвигаем шкалу по давлению для расчета, если задана калибровка
            p_MPaa = p_fact * p_MPaa
            self._pb_bar = self._pb_bar/p_fact
        # внутри rs есть проверка на давление насыщения
        self._rs_m3m3 = PVT.unf_rs_Velarde_m3m3(p_MPaa, pb_MPaa, self.rsb_m3m3, self.gamma_oil, self.gamma_gas, t_K)
        co_1MPa = PVT.unf_compressibility_oil_VB_1Mpa(self._rs_m3m3, t_K, self.gamma_oil, p_MPaa, self.gamma_gas)
        self._compr_oil_1bar = uc.compr_1mpa_2_1bar(co_1MPa)
        # внутри rho есть проверка на давление насыщения
        self._rho_oil_kgm3 = PVT.unf_density_oil_Mccain(p_MPaa, pb_MPaa, co_1MPa, self._rs_m3m3, self.gamma_gas, t_K,
                                                        self.gamma_oil, self.gamma_gassp)
        # оценим значение объемного коэффициента
        # оценим значение объемного коэффициента при давлении насыщения
        self._bob_m3m3 = PVT.unf_fvf_Mccain_m3m3_below(self.rho_oil_stkgm3, self.rsb_m3m3, self._rho_oil_kgm3,
                                                       self.gamma_gas)
        if p_MPaa > pb_MPaa:
            self._bo_m3m3 = PVT.unf_fvf_VB_m3m3_above(self._bob_m3m3, co_1MPa, pb_MPaa, p_MPaa)
        else:
            self._bo_m3m3 = PVT.unf_fvf_Mccain_m3m3_below(self.rho_oil_stkgm3, self._rs_m3m3, self._rho_oil_kgm3,
                                                          self.gamma_gas)
        # проверим необходимость калибровки значения объемного коэффициента
        if self.bobcal_m3m3 > 0:
            b_fact = (self.bobcal_m3m3 - 1) / (self._bob_m3m3 - 1)
            self._bo_m3m3 = b_fact * self._bo_m3m3
        # оценим значение вязкости
        self._mu_deadoil_cP = PVT.unf_deadoilviscosity_Beggs_cP(self.gamma_oil, t_K)
        self._muob_cP = PVT.unf_saturatedoilviscosity_Beggs_cP(self._mu_deadoil_cP, self.rsb_m3m3)
        self._mu_oil_cP = PVT.unf_oil_viscosity_Beggs_VB_cP(self._mu_deadoil_cP, self._rs_m3m3, p_MPaa, pb_MPaa)
        if self.muobcal_cP > 0:
            mu_fact = self.muobcal_cP / self._muob_cP
            self._mu_oil_cP = mu_fact * self._mu_oil_cP
        # gas
        tpc_K = PVT.unf_pseudocritical_temperature_K(self.gamma_gas, self.y_h2s, self.y_co2, self.y_n2)
        ppc_MPa = PVT.unf_pseudocritical_pressure_MPa(self.gamma_gas, self.y_h2s, self.y_co2, self.y_n2)
        self._z = PVT.unf_zfactor_DAK(p_MPaa, t_K, ppc_MPa, tpc_K)
        self._mu_gas_cP = PVT.unf_gasviscosity_Lee_cP(t_K, p_MPaa, self._z, self.gamma_gas)
        self._bg_m3m3 = PVT.unf_gas_fvf_m3m3(t_K, p_MPaa, self._z)
        self._compr_gas_1bar = uc.compr_1mpa_2_1bar(PVT.unf_compressibility_gas_Mattar_1MPa(p_MPaa, t_K,
                                                                                            ppc_MPa, tpc_K))
        self._rho_gas_kgm3 = PVT.unf_gas_density_kgm3(t_K, p_MPaa, self.gamma_gas, self._z)
        # water
        # TODO НУЖНО ДОБАВИТЬ GWR
        self._rho_wat_kgm3 = PVT.unf_density_brine_Spivey_kgm3(t_K, p_MPaa, self.s_ppm, self.par_wat)
        self._compr_wat_1bar = uc.compr_1mpa_2_1bar(PVT.unf_compressibility_brine_Spivey_1MPa(t_K, p_MPaa, self.s_ppm,     
                                                                                              self._z, self.par_wat))
        self._bw_m3m3 = PVT.unf_fvf_brine_Spivey_m3m3(t_K, p_MPaa, self.s_ppm)
        self._mu_wat_cP = PVT.unf_viscosity_brine_MaoDuan_cP(t_K, p_MPaa, self.s_ppm)
        return 1
Example #4
0
    def calc(self, p_bar, t_c):
        """
        Расчет свойств нефти на основе набора корреляций Standing

        расчитанные значения хранятся в соответствующих атрибутах класса

        :param p_bar: давление, бар
        :param t_c: температура, С
        :return: 1 - если все свойства успешно были посчитаны
        """
        super().calc(p_bar, t_c)
        # подготовим внутренние переменные для расчетов
        p_MPaa = uc.bar2MPa(self.p_bar)
        pbcal_MPaa = uc.bar2MPa(self.pbcal_bar)
        t_K = uc.c2k(self.t_c)

        # oil
        # найдем значение давления насыщения по Standing
        pb_MPaa = PVT.unf_pb_Standing_MPaa(self.rsb_m3m3, self.gamma_oil, self.gamma_gas, t_K)
        self._pb_bar = uc.MPa2bar(pb_MPaa)
        # TODO необходимо будет сделать калибровку при любом P,T любого свойства
        if pbcal_MPaa > 0:
            p_fact = pb_MPaa / pbcal_MPaa
            # сдвигаем шкалу по давлению для расчета, если задана калибровка
            p_MPaa = p_fact * p_MPaa
            self._pb_bar = self._pb_bar / p_fact
        # внутри rs есть проверка на давление насыщения
        self._rs_m3m3 = PVT.unf_rs_Standing_m3m3(p_MPaa, pb_MPaa, self.rsb_m3m3, self.gamma_oil, self.gamma_gas, t_K)
        co_1MPa = PVT.unf_compressibility_oil_VB_1Mpa(self._rs_m3m3, t_K, self.gamma_oil, p_MPaa, self.gamma_gas)
        self._compr_oil_1bar = uc.compr_1mpa_2_1bar(co_1MPa)
        # оценим значение объемного коэффициента
        # оценим значение объемного коэффициента при давлении насыщения
        self._bob_m3m3 = PVT.unf_fvf_Standing_m3m3_saturated(self.rsb_m3m3, self.gamma_gas, self.gamma_oil, t_K)
        if p_MPaa > pb_MPaa:
            self._bo_m3m3 = PVT.unf_fvf_VB_m3m3_above(self._bob_m3m3, co_1MPa, pb_MPaa, p_MPaa)
        else:
            self._bo_m3m3 = PVT.unf_fvf_Standing_m3m3_saturated(self._rs_m3m3, self.gamma_gas, self.gamma_oil, t_K)
        # проверим необходимость калибровки значения объемного коэффициента
        if self.bobcal_m3m3 > 0:
            b_fact = (self.bobcal_m3m3 - 1) / (self._bob_m3m3 - 1)
            self._bo_m3m3 = b_fact * self._bo_m3m3
        self._rho_oil_kgm3 = PVT.unf_density_oil_Standing(p_MPaa, pb_MPaa, co_1MPa, self._rs_m3m3, self._bo_m3m3,
                                                          self.gamma_gas, self.gamma_oil)
        # оценим значение вязкости
        self._mu_dead_oil_cP = PVT.unf_deadoilviscosity_Beggs_cP(self.gamma_oil, t_K)
        self._muob_cP = PVT.unf_saturatedoilviscosity_Beggs_cP(self._mu_dead_oil_cP, self.rsb_m3m3)
        self._mu_oil_cP = PVT.unf_oil_viscosity_Beggs_VB_cP(self._mu_dead_oil_cP, self._rs_m3m3, p_MPaa, pb_MPaa)
        if self.muobcal_cP > 0:
            mu_fact = self.muobcal_cP / self._muob_cP
            self._mu_oil_cP = mu_fact * self._mu_oil_cP

        # определим термодинамические свойства нефти
        self._heatcap_oil_jkgc = PVT.unf_heat_capacity_oil_Gambill_JkgC(self.gamma_oil, self.t_c)
        self._thermal_conduct_oil_wmk = PVT.unf_thermal_conductivity_oil_Cragoe_WmK(self.gamma_oil, self.t_c)


        # gas
        tpc_K = PVT.unf_pseudocritical_temperature_K(self.gamma_gas, self.y_h2s, self.y_co2, self.y_n2)
        ppc_MPa = PVT.unf_pseudocritical_pressure_MPa(self.gamma_gas, self.y_h2s, self.y_co2, self.y_n2)
        self._z = PVT.unf_zfactor_DAK(p_MPaa, t_K, ppc_MPa, tpc_K)
        self._mu_gas_cP = PVT.unf_gasviscosity_Lee_cP(t_K, p_MPaa, self._z, self.gamma_gas)
        self._bg_m3m3 = PVT.unf_gas_fvf_m3m3(t_K, p_MPaa, self._z)
        self._compr_gas_1bar = uc.compr_1mpa_2_1bar(PVT.unf_compressibility_gas_Mattar_1MPa(p_MPaa, t_K,
                                                                                            ppc_MPa, tpc_K))
        self._rho_gas_kgm3 = PVT.unf_gas_density_kgm3(t_K, p_MPaa, self.gamma_gas, self._z)

        # определим термодинамические свойства газа
        self._heatcap_gas_jkgc = PVT.unf_heat_capacity_gas_Mahmood_Moshfeghian_JkgC(p_MPaa, t_K, self.gamma_gas)
        self._thermal_conduct_gas_wmk = PVT.unf_thermal_conductivity_gas_methane_WmK(self.t_c)

        # water
        # TODO НУЖНО проверить GWR
        self._rho_wat_kgm3 = PVT.unf_density_brine_Spivey_kgm3(t_K, p_MPaa, self.s_ppm, self.par_wat)
        self._compr_wat_1bar = uc.compr_1mpa_2_1bar(PVT.unf_compressibility_brine_Spivey_1MPa(t_K, p_MPaa, self.s_ppm,
                                                                                              self._z, self.par_wat))
        self._bw_m3m3 = PVT.unf_fvf_brine_Spivey_m3m3(t_K, p_MPaa, self.s_ppm)
        self._mu_wat_cP = PVT.unf_viscosity_brine_MaoDuan_cP(t_K, p_MPaa, self.s_ppm)
        self._rsw_m3m3 = PVT.unf_gwr_brine_Spivey_m3m3(self.s_ppm, self._z)
        # определим термодинамические свойства воды
        self._heatcap_wat_jkgc = PVT.unf_heat_capacity_water_IAPWS_JkgC(self.t_c)
        self._thermal_conduct_wat_wmk = PVT.unf_thermal_conductivity_water_IAPWS_WmC(self.t_c)
        self._thermal_expansion_wat_1c = PVT.unf_thermal_expansion_coefficient_water_IAPWS_1C(self.t_c)

        # определим свойства системы
        self._sigma_oil_gas_Nm = PVT.unf_surface_tension_go_Baker_Swerdloff_Nm(t_K, self.gamma_oil, p_MPaa)
        self._sigma_wat_gas_Nm = PVT.unf_surface_tension_gw_Sutton_Nm(self.rho_wat_kgm3, self.rho_gas_kgm3, self.t_c)
        return 1
Example #5
0
    def calc(self, p_bar, t_c):
        self.p_bar = p_bar
        self.t_c = t_c
        self.t_k = uc.c2k(self.t_c)
        self.p_mpa = uc.bar2MPa(self.p_bar)
        self.t_res_k = uc.c2k(self.t_res_c)
        if self.activate_rus_cor == 0:  # нормальный расчет по UniflocVBA
            # oil
            # давление насыщения нефти

            self.pb_mpa = self._calc_pb_MPaa(self.option.pb_cor_number)
            self.pb_bar = uc.MPa2bar(self.pb_mpa)
            pbcal_MPaa = uc.bar2MPa(self.pb_cal_bar)
            if pbcal_MPaa > 0:
                p_fact = self.pb_mpa / pbcal_MPaa
                # сдвигаем шкалу по давлению для расчета, если задана калибровка
                self.p_mpa = p_fact * self.p_mpa
                self.pb_bar = self.pb_bar / p_fact
            # газосодержание
            self.rs_m3m3 = self._calc_rs_m3m3(self.option.rs_cor_number)
            # коэффициент изотермической сжимаемости
            if self.p_mpa >= self.pb_mpa:
                self.compr_oil_1mpa = self._calc_compr_oil_1mpa(
                    self.option.compr_oil_cor_number)
            else:
                #self.compr_oil_1mpa = self._calc_compr_oil_below_pb_1mpa(self.option.compr_oil_below_pb_cor_number)
                self.compr_oil_1mpa = 0

            self.compr_oil_1bar = uc.compr_1mpa_2_1bar(self.compr_oil_1mpa)
            # объемный коэффициент
            self.b_oil_b_m3m3 = self._calc_b_oil_in_pb_m3m3(
                self.option.b_oil_in_pb_cor_number)
            if self.p_mpa > self.pb_mpa:
                self.b_oil_m3m3 = self._calc_b_oil_above_pb_m3m3(
                    self.option.b_oil_above_pb_cor_number)
            else:
                self.b_oil_m3m3 = self._calc_b_oil_below_pb_m3m3(
                    self.option.b_oil_below_pb_cor_number)
            if self.b_oil_b_cal_m3m3 > 0:
                b_fact = (self.b_oil_b_cal_m3m3 - 1) / (self.b_oil_b_m3m3 - 1)
                self.b_oil_m3m3 = b_fact * self.b_oil_m3m3
            # плотность нефти
            self.rho_oil_kgm3 = self._calc_rho_oil_kgm3(
                self.option.rho_oil_cor_number)
            # вязкость
            self.mu_dead_oil_cp = self._calc_mu_dead_oil_cp(
                self.option.mu_dead_oil_cor_number)
            self.mu_oil_b_cP = self._calc_mu_oil_in_pb_cp(
                self.option.mu_oil_pb_cor_number)
            self.mu_oil_cp = self._calc_mu_oil_any_p_cp(
                self.option.mu_oil_any_p_cor_number)
            if self.mu_oil_b_cal_cp > 0:
                mu_fact = self.mu_oil_b_cal_cp / self.mu_oil_b_cP
                self.mu_oil_cp = mu_fact * self.mu_oil_cp

        else:  # расчет по Мищенко
            if self.true_rsb_m3t:
                self.rsb_m3t = self.rsb_m3m3 * 10**3 * 273 / 293 / (
                    self.gamma_oil * 1000)
            else:
                self.rsb_m3t = self.rsb_m3m3 / self.gamma_oil  #c этой штукой расчет получше
            self.pb_mpa = pvt_rus.calc_pb(self.pb_bar_for_rus_cor / 10,
                                          self.gamma_oil * 1000, self.rsb_m3t,
                                          self.t_res_k, self.t_k, self.y_ch4,
                                          self.y_n2)
            self.pb_bar = uc.MPa2bar(self.pb_mpa)

            self.mt = pvt_rus.coef_mt(self.t_k, self.gamma_oil * 1000,
                                      self.gamma_gas)
            self.rp = pvt_rus.coef_rp(self.p_mpa, self.pb_mpa)
            self.dt = pvt_rus.coef_dt(self.t_k, self.gamma_oil * 1000,
                                      self.gamma_gas)

            self.gas_liberated_m3t, self.gas_dissolved_m3t = pvt_rus.unf_calc_gas_liberated_and_dissolved(
                self.t_k, self.gamma_oil * 1000, self.gamma_oil,
                self.gamma_gas, self.p_mpa, self.pb_mpa, self.rsb_m3t,
                False)  #

            self.gas_liberated_m3m3, self.rs_m3m3 = pvt_rus.unf_calc_gas_liberated_and_dissolved(
                self.t_k, self.gamma_oil * 1000, self.gamma_oil,
                self.gamma_gas, self.p_mpa, self.pb_mpa, self.rsb_m3t, True)
            if self.p_mpa > self.pb_mpa:
                if self.gas_dissolved_m3t_fixed != None and self.rs_m3m3_fixed != None:
                    self.gas_liberated_m3t, self.gas_dissolved_m3t = 0, self.gas_dissolved_m3t_fixed  #73.23
                    self.gas_liberated_m3m3, self.rs_m3m3 = 0, self.rs_m3m3_fixed  # 63.01

            self.rho_gas_liberated_d = pvt_rus.rho_gas_liberated_relative(
                self.p_mpa, self.pb_mpa, self.gamma_gas, self.gamma_oil,
                self.t_k, self.rsb_m3t)

            self.rho_gas_dissolved_relative_d = pvt_rus.unf_rho_gas_dissolved_relative(
                self.rsb_m3t, self.gamma_oil, self.gamma_gas,
                self.gas_liberated_m3t, self.gas_dissolved_m3t,
                self.rho_gas_liberated_d, self.p_mpa, self.pb_mpa, self.t_k)

            self.b_oil_m3m3 = pvt_rus.unf_b_oil_below_pb_m3m3(
                self.t_k, self.p_mpa, self.gamma_oil, self.gamma_gas,
                self.rho_gas_dissolved_relative_d, self.rho_gas_liberated_d,
                self.gas_dissolved_m3t)

            self.rho_oil_kgm3 = pvt_rus.unf_rho_oil_kgm3(
                self.gamma_oil, self.rho_gas_dissolved_relative_d,
                self.gas_dissolved_m3t, self.t_k, self.gamma_gas,
                self.b_oil_m3m3)

            self.mu_dead_oil_293_cp = pvt_rus.unf_mu_dead_oil_293_cp(
                self.gamma_oil)

            self.mu_dead_oil_t_cp = pvt_rus.unf_mu_dead_oil_t_cp(
                self.mu_dead_oil_293_cp, self.t_k, self.gamma_oil)

            self.mu_oil_below_pb_cp = pvt_rus.unf_mu_oil_below_pb_cp(
                self.mu_dead_oil_t_cp, self.gas_dissolved_m3t, self.gamma_oil)

            self.mu_oil_cp = self.mu_oil_below_pb_cp

            self.sigma_oil_gas_nm = pvt_rus.unf_sigma_oil_gas_nm(
                self.p_mpa, self.t_k, self.gamma_gas)

        # теплоемкость
        self.heatcap_oil_jkgc = self._calc_heatcap_oil_jkgc(
            self.option.heatcap_oil_cor_number)
        # теплопроводность
        self.thermal_conduct_oil_wmk = self._calc_thermal_conduct_oil_wmk(
            self.option.thermal_conduct_oil_cor_number)

        # gas
        self.tpc_k = self._calc_pseudocritical_temperature_k(
            self.option.pseudocritical_temperature_cor_number)
        self.ppc_mpa = self._calc_pseudocritical_pressure_mpa(
            self.option.pseudocritical_pressure_cor_number)
        self.z = self._calc_zfactor(self.option.z_cor_number)
        self.mu_gas_cp = self._calc_mu_gas_cp(self.option.mu_gas_cor_number)
        self.b_gas_m3m3 = self._calc_b_gas_m3m3(self.option.b_gas_cor_number)
        self.compr_gas_1bar = self._calc_compr_gas_1bar(
            self.option.compr_gas_cor_number)
        self.rho_gas_kgm3 = self._calc_rho_gas_kgm3(
            self.option.rho_gas_cor_number)
        self.heatcap_gas_jkgc = self._calc_heatcap_gas_jkgc(
            self.option.heatcap_gas_cor_number)
        self.thermal_conduct_gas_wmk = self._calc_thermal_conduct_gas_wmk(
            self.option.thermal_conduct_gas_cor_number)

        # water
        self.b_wat_m3m3 = self._calc_b_wat_m3m3(self.option.b_wat_cor_number)
        self.rho_wat_kgm3 = self._calc_rho_wat_kgm3(
            self.option.rho_wat_cor_number)
        self.compr_wat_1bar = self._calc_compr_wat_1bar(
            self.option.compr_gas_cor_number)
        self.mu_wat_cp = self._calc_mu_wat_cp(self.option.mu_wat_cor_number)
        self.rsw_m3m3 = self._calc_rs_wat_m3m3(self.option.rs_wat_cor_number)
        self.heatcap_wat_jkgc = self._calc_heatcap_wat_jkgc(
            self.option.heatcap_wat_cor_number)
        self.thermal_conduct_wat_wmk = self._calc_thermal_conduct_wat_wmk(
            self.option.thermal_conduct_wat_cor_number)
        self.thermal_expansion_wat_1c = self._calc_thermal_expansion_wat_1c(
            self.option.thermal_expansion_wat_cor_number)

        # some system properties
        self.sigma_oil_gas_Nm = self._calc_sigma_oil_gas_nm(
            self.option.sigma_oil_gas_cor_number)
        self.sigma_wat_gas_Nm = self._calc_sigma_wat_gas_nm(
            self.option.sigma_wat_gas_cor_number)
Example #6
0
    def calc(self, p_bar, t_c):
        self.p_bar = p_bar
        self.t_c = t_c
        self.t_k = uc.c2k(self.t_c)
        self.p_mpa = uc.bar2MPa(self.p_bar)

        # oil
        # давление насыщения нефти
        self.pb_mpa = self._calc_pb_MPaa(self.option.pb_cor_number)
        self.pb_bar = uc.MPa2bar(self.pb_mpa)
        pbcal_MPaa = uc.bar2MPa(self.pb_cal_bar)
        if pbcal_MPaa > 0:
            p_fact = self.pb_mpa / pbcal_MPaa
            # сдвигаем шкалу по давлению для расчета, если задана калибровка
            self.p_mpa = p_fact * self.p_mpa
            self.pb_bar = self.pb_bar / p_fact
        # газосодержание
        self.rs_m3m3 = self._calc_rs_m3m3(self.option.rs_cor_number)
        # коэффициент изотермической сжимаемости
        self.compr_oil_1mpa = self._calc_compr_oil_1mpa(
            self.option.compr_oil_cor_number)
        self.compr_oil_1bar = uc.compr_1mpa_2_1bar(self.compr_oil_1mpa)
        # объемный коэффициент
        self.b_oil_b_m3m3 = self._calc_b_oil_in_pb_m3m3(
            self.option.b_oil_in_pb_cor_number)
        if self.p_mpa > self.pb_mpa:
            self.b_oil_m3m3 = self._calc_b_oil_above_pb_m3m3(
                self.option.b_oil_above_pb_cor_number)
        else:
            self.b_oil_m3m3 = self._calc_b_oil_below_pb_m3m3(
                self.option.b_oil_below_pb_cor_number)
        if self.b_oil_b_cal_m3m3 > 0:
            b_fact = (self.b_oil_b_cal_m3m3 - 1) / (self.b_oil_b_m3m3 - 1)
            self.b_oil_m3m3 = b_fact * self.b_oil_m3m3
        # плотность нефти
        self.rho_oil_kgm3 = self._calc_rho_oil_kgm3(
            self.option.rho_oil_cor_number)
        # вязкость
        self.mu_dead_oil_cp = self._calc_mu_dead_oil_cp(
            self.option.mu_dead_oil_cor_number)
        self.mu_oil_b_cP = self._calc_mu_oil_in_pb_cp(
            self.option.mu_oil_pb_cor_number)
        self.mu_oil_cp = self._calc_mu_oil_any_p_cp(
            self.option.mu_oil_any_p_cor_number)
        if self.mu_oil_b_cal_cp > 0:
            mu_fact = self.mu_oil_b_cal_cp / self.mu_oil_b_cP
            self.mu_oil_cp = mu_fact * self.mu_oil_cp
        # теплоемкость
        self.heatcap_oil_jkgc = self._calc_heatcap_oil_jkgc(
            self.option.heatcap_oil_cor_number)
        # теплопроводность
        self.thermal_conduct_oil_wmk = self._calc_thermal_conduct_oil_wmk(
            self.option.thermal_conduct_oil_cor_number)

        # gas
        self.tpc_k = self._calc_pseudocritical_temperature_k(
            self.option.pseudocritical_temperature_cor_number)
        self.ppc_mpa = self._calc_pseudocritical_pressure_mpa(
            self.option.pseudocritical_pressure_cor_number)
        self.z = self._calc_zfactor(self.option.z_cor_number)
        self.mu_gas_cp = self._calc_mu_gas_cp(self.option.mu_gas_cor_number)
        self.b_gas_m3m3 = self._calc_b_gas_m3m3(self.option.b_gas_cor_number)
        self.compr_gas_1bar = self._calc_compr_gas_1bar(
            self.option.compr_gas_cor_number)
        self.rho_gas_kgm3 = self._calc_rho_gas_kgm3(
            self.option.rho_gas_cor_number)
        self.heatcap_gas_jkgc = self._calc_heatcap_gas_jkgc(
            self.option.heatcap_gas_cor_number)
        self.thermal_conduct_gas_wmk = self._calc_thermal_conduct_gas_wmk(
            self.option.thermal_conduct_gas_cor_number)

        # water
        self.rho_wat_kgm3 = self._calc_rho_wat_kgm3(
            self.option.rho_wat_cor_number)
        self.compr_wat_1bar = self._calc_compr_wat_1bar(
            self.option.compr_gas_cor_number)
        self.b_wat_m3m3 = self._calc_b_wat_m3m3(self.option.b_wat_cor_number)
        self.mu_wat_cp = self._calc_mu_wat_cp(self.option.mu_wat_cor_number)
        self.rsw_m3m3 = self._calc_rs_wat_m3m3(self.option.rs_wat_cor_number)
        self.heatcap_wat_jkgc = self._calc_heatcap_wat_jkgc(
            self.option.heatcap_wat_cor_number)
        self.thermal_conduct_wat_wmk = self._calc_thermal_conduct_wat_wmk(
            self.option.thermal_conduct_wat_cor_number)
        self.thermal_expansion_wat_1c = self._calc_thermal_expansion_wat_1c(
            self.option.thermal_expansion_wat_cor_number)

        # some system properties
        self.sigma_oil_gas_Nm = self._calc_sigma_oil_gas_Nm(
            self.option.sigma_oil_gas_cor_number)
        self.sigma_wat_gas_Nm = self._calc_sigma_wat_gas_Nm(
            self.option.sigma_wat_gas_cor_number)