Добавил:
klimintas
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Теория по трубопроводу / Программа
.txt#include <iostream>
#include <cmath>
using namespace std;
int main()
{
float Bn20 = 0.000886; //коф. объемного расширения нефти при 20 градусах
float pn20 = 824; //плотность нефти при 20 градусах
float T0 = 293;
float pv0 = 999.9; //плотность воды при 20 градусах
float Bv0 = 0.00013; //коф объемного расширения воды при 0 градусов
int T1 = 293;
float T2 = 303;
float V1 = 0.00000514; //это кинематическая вязкость нефти при Т1
float e = 2.718281; //число е
float D, d, Tn, Tgr, alphaT, alpha, delta, ltr, ltrl, ltrt, alphak, alphagr, G, Q, k, H, nyu, M, lambdagr, alphal, Ltr, F, speed2, P2, ksitr, dlina1, P1, ptCM2;
float Re1 = 2300; // хз зачем, видимо очень надо
float Re2 = 10000;// тоже хз зачем
int Prct = 1;
bool shit;
setlocale(LC_ALL, "Russian");
float A; //массовая доля воды
cout << "Введите внутренний диаметр трубы d = ";
cin >> d;
cout << "Введите внешний диаметр трубы D = ";
cin >> D;
cout << "Введите температуру грунта Tgr = ";
cin >> Tgr;
cout << "Введите начальную температуру смеси T = ";
cin >> Tn;
cout << "Введите массовую долю воды A = ";
cin >> A;
cout << "Введите теплопроводность грунта lambdagr = ";
cin >> lambdagr;
cout << "Введите коэффициент шероховатости = ";
cin >> delta;
//следующие строчки - характеристики НЕФТИ
float U = 0.0791812 / (T2 - T1); //в следующих трех строчках задается зависимость кинематической вязкости нефти от температуры, это на основе метода с вискозиметром, так что это трогать не надо
float z = U * T1 - U * Tn;
float Vtn = V1 * pow(e, z); //кинематическая вязкость нефти
float ptn = pn20 / (1 + Bn20 * (Tn - T0)); //зависимость плотности нефти от температуры, по сути просто пересчёт этой плотности, где за основу пересчета взята плотность при 20 градусах (формула та же что и у вас, просто по другому выглядит, из метрологии еще)
float lambdatn = 156.6 * (1 - 0.00047 * T0) / pn20; //зависимость теплопроводности нефти от температуры, тоже пересчет от теплопроводности при 20 градусах, выраженный через плотность (т/к плотность уже известна)
float Ctn = 31.56 * (762 + 3.39 * T0) / (sqrt(pn20)); //теплоемкость от температуры, тот же принцип
float mtn = Vtn * ptn;//viazkost nefti //формула выражения вязкости нефти через кинематическую вязкость
cout << "Вязкость нефти " << mtn << endl; //проверка для себя (меня), выявление отклонений (можно вцелом убрать)
//следующие строки то же самое но для ВОДЫ, можете делитнуть и заменить константами (но с ними интереснее бы было :)
float ptv = pv0 / (1 + Bv0 * (Tn - 273));
float lambdatv = 0.553 * (1 + 0.003 * (Tn - 273));
float Ctv = 4194 - 1.15 * (Tn - 273) + 0.015 * (Tn - 273) * (Tn - 273);
float mtv = 0.000183 / (1 + Tn * (0.0337 + 0.000221 * Tn));
float Vtv = mtv / ptv;
//тут расчет параметров СМЕСИ на основе уравнений Шабарова (все считается одинаково по одной формуле)
float ptCM = ptv * A + ptn * (1 - A); //плотность
float lambdatCM = lambdatn * (1 - A) + lambdatv * A; //теплопроводность
float CtCM = Ctn * (1 - A) + Ctv * A; //теплоемкость
float mtCM = mtv * A + mtn * (1 - A); //вязкость динамическая
float VtCM = Vtv * A + Vtn * (1 - A); //вязкость кинематическая
cout << "ПАРАМЕТРЫ СМЕСИ " << endl;
cout << "Плотность [кг/м^3] = " << ptCM << endl;
cout << "Коэффицент теплопроводности [Вт/(м*K)] = " << lambdatCM << endl;
cout << "Теплоемкость [Дж/(кг*K)] = " << CtCM << endl;
cout << "Вязкость [кг/(с*м)] = " << mtCM << endl;
cout << "Кинематическая вязкость [м^2/c] = " << VtCM << endl; //вывел параметры смеси на экран,дальше переходим к шуткам уже со смесью и только
//тут задаем критерии Re, Pr Gr
float deltaT; //это разность температур вроде бы грунта и смеси
float betta = Bn20 + 1.6 * Bn20 * Bn20*(Tn - 293); ; //та самая зависимость коэффициента объемного расширения от температуры (тут неточность что он берётся для нефти, а не смеси, хотя обозначает коф смеси. я не придумал как расписать для смеси учитывая содержание воды)
float speed; //скорость потока
float g = 9.8; //ну это же жэ
cout << "Введите скорость смеси ";
cin >> speed;
cout << "Введите разность температур "; // (Tн-Tгр)
cin >> deltaT;
float Re = speed * d / VtCM; //kriterii //эти три строчки уравнения расчета
float Pr = mtCM * CtCM / lambdatCM; //
float Gr = g * pow(d, 3) * betta * deltaT / (VtCM*VtCM); //
cout << "КРИТЕРИИ: " << endl;
cout << "Ренольдса = " << Re << endl;
cout << "Прандтля = " << Pr << endl;
cout << "Грасгофа = " << Gr << endl;
/*if (Re < 2300) //тут условие для определения коэфа теплоотдачи от стенки к трубе. Если Re<2300, то коф определится по уравнению для ламинарного потока
{
float alfa1 = 0.17 * lambdatCM * pow(Re, 0.33) * pow(Pr, 0.68) * pow(Gr, 0.1) / d;
cout << "Коф. теплоотдачи от среды к трубе (ламинарный поток) [Вт/м^2*K] " << alfa1 << endl;
}
else if (Re > 10000) //если Re больше 10000 то коэф он определится по уравнению для турбулентного режима течения
{
float alfa2 = 0.021 * lambdatCM * pow(Re, 0.8) * pow(Pr, 0.68) / d;
cout << "Коф. теплоотдачи от среды к трубе (турбулентный поток) [Вт/м^2*K] " << alfa2 << endl;
}
/*Re = v * d / VtCM;
Gr = (g*beta*pow(d, 3) / pow(VtCM, 2))*deltat;
Pr = (VtCM*ptCM*c) / lyuamda; */
float lambdaM;
cout << "Введите теплопроводность металла lambdaM = ";
cin >> lambdaM;
if (Re < 2300) {
alpha = 0.17*((lambdatCM*(pow(Re, 0.33)) / d)*pow(Pr, 0.43)*pow(Gr, 0.1)*pow((Pr / Prct), 0.25));
cout << "Течение ламианрное alpha = " << alpha << endl;
alphak = 2;
ltr = 64 / Re;
}
if (Re > 10000) {
alpha = 0.021*((lambdatCM*(pow(Re, 0.8)) / d)*pow(Pr, 0.43)*pow((Pr / Prct), 0.25));
cout << "Течение турбулентное alpha = " << alpha << endl;
alphak = 1.1;
ltr = 0.067 * pow(158 / Re + 2 * delta, 0.2);
}
if ((Re <= 10000) && (Re >= 2300)) {
alphal = 0.17*((lambdatCM*(pow(Re, 0.33)) / d)*pow(Pr, 0.43)*pow(Gr, 0.1)*pow((Pr / Prct), 0.25));
alphaT = 0.021*((lambdatCM*(pow(Re, 0.8)) / d)*pow(Pr, 0.43)*pow((Pr / Prct), 0.25));
alpha = alphal + (alphaT - alphal)*(Re - 2000) / (8000);
cout << "Течение переходное alpha = " << alpha << endl;
ltrl = 64 / Re;
ltrt = 0.067 * pow(158 / Re + 2 * delta, 0.2);
ltr = ltrl + (Re * Re1) * (ltrt - ltrl) / (Re2 - Re1);
alphak = 1.7;
}
H = 1.5; // глубина
alphagr = (2 * lambdagr) / (D * (log((2 * H / D) + pow((pow((2 * H / D), 2) - 1), 0.5))));
cout << "Грунт: " << alphagr << " " << endl;
k = 1 / ((1 / alpha) + (log(D / d)) * (d / (2 * lambdaM)) + (d / (alphagr*D)));
cout << "Грунт (k): " << k << " " << endl;
cout << "Введите длину трубы dlina1 = ";
cin >> dlina1;
cout << "Введите эквивалентный коэффициент сопротивления: ";
cin >> ksitr; // коэффициент местного сопротивления
cout << "Введите начальное давление: ";
cin >> P1;
float gn;
cout << "Введите расход нефти: "; // расход нефти
cin >> gn;
float g1 = gn + ((gn * A) / (1 - A)); // расход смеси
float Tlox; // конечная температура
float ptv2;
float ptn2;
float gsht;
int L1;
cout << "Введите подводимый расход: " ;
cin >> gsht;
if (gsht == 0)
{
for (int i = 0; i <= dlina1; i = i + 10)
{
F = 3.14 * d * 10;
Tlox = (Tn * (1 - ((k * F) / (2 * CtCM * g1))) + ((k * F * Tgr) / (CtCM * g1))) / (1 + ((k * F) / (2 * CtCM * g1)));
Tn = Tlox;
ptv2 = pv0 / (1 + Bv0 * (Tlox - 273));
ptn2 = pn20 / (1 + Bn20 * (Tlox - T0));
ptCM2 = ptv2 * A + ptn2 * (1 - A);
speed2 = g1 * 4 / (ptCM2 * 3.14 * pow(d,2));
speed = speed2;
Ltr = ((1.05 * ltr) / pow(0.95, 2)) * (10 / d) * (pow(speed2, 2) / 2) + ksitr * pow(speed2, 2)*ptCM2 / 2;
P2 = P1 + alphak * ptCM2 * ((pow(speed, 2) - pow(speed2, 2)) / 2) - ptCM2 * Ltr;
P1 = P2;
cout << "Значения параметров на " << i / 10 << " - ом этапе цикла : " << Tlox << " , " << speed2 << " , " << P2 << endl;
}
}
/*else
{
float g2 = g1 + gsht;
float Tsht;
cout << "Введите температуру подведенной смеси: ";
cin >> Tsht;
for (int i = 0; i <= dlina1; i = i + 10)
cout << "На какой длине будет подведенный расход : " ;
cin >> L1;
int c;
c = L1 % 10;
L1 = L1 - c;
{
F = 3.14 * d * 10;
Tlox = (Tn * (1 - ((k * F) / (2 * CtCM * g1))) + ((k * F * Tgr) / (CtCM * g1))) / (1 + ((k * F) / (2 * CtCM * g1)));
Tn = Tlox;
ptv2 = pv0 / (1 + Bv0 * (Tlox - 273));
ptn2 = pn20 / (1 + Bn20 * (Tlox - T0));
ptCM2 = ptv2 * A + ptn2 * (1 - A);
speed2 = g2 * 4 / (ptCM2 * 3.14 * pow(d,2));
speed = speed2;
if ( i == L1 )
{
Tlox = (Tn * (g1/g2 - (k*F/ (2*CtCM * g2))) + (k * F * Tgr / (CtCM*g2)) + (gsht * Tsht / g2)) / (1 + k*F/(2*CtCM*g2));
Tn = Tlox;
}
Ltr = ((1.05 * ltr) / pow(0.95, 2)) * (10 / d) * (pow(speed2, 2) / 2) + ksitr * pow(speed2, 2) / 2;
P2 = P1 + alphak * ptCM2 * ((pow(speed, 2) - pow(speed2, 2)) / 2) - ptCM2 * Ltr;
P1 = P2;
cout << "Значения параметров на " << i / 10 << " - ом этапе цикла : " << Tlox << " , " << speed2 << " , " << P2 << endl;
}
} */
return 0;
}
Соседние файлы в папке Теория по трубопроводу