You are on page 1of 7

class Nat_Conv { // Class for correlations of Natural Convection

public:
double T1, T2, Tm, Lc, a, b, h;
bool shape;

void Interpolacion_lineal(double *T, double *rho_, double *cp_, double *k_,


double *Pr_, double *v_) {

for (int i = 0; i < sizeof(T); i++) {

if (Tm < T[i]) {


rho = (8 * rho_[i] - 9 * rho_[i - 1] + rho_[i - 2]) / (3 *
(T[i] - T[i - 1]))*(Tm - T[i - 1]) + rho_[i - 1];
cp = (8 * cp_[i] - 9 * cp_[i - 1] + cp_[i - 2]) / (3 *
(T[i] - T[i - 1]))*(Tm - T[i - 1]) + cp_[i - 1];
k = (8 * k_[i] - 9 * k_[i - 1] + k_[i - 2]) / (3 * (T[i] -
T[i - 1]))*(Tm - T[i - 1]) + k_[i - 1];
Pr = (8 * Pr_[i] - 9 * Pr_[i - 1] + Pr_[i - 2]) / (3 *
(T[i] - T[i - 1]))*(Tm - T[i - 1]) + Pr_[i - 1];
v = k = (8 * v_[i] - 9 * v_[i - 1] + v_[i - 2]) / (3 *
(T[i] - T[i - 1])) * (Tm - T[i - 1]) + v_[i - 1];
break;
}
}
}

void Vertical_plate() { // Vertical plate

Tm = (T1 + T2) / 2;
Ra = g * (1 / (Tm + 273.15))*(abs(T1 - T2))*pow(Lc, 3)* Pr / pow (v,
2);

if (Ra >= pow(10, 4) && Ra <= pow(10, 9)) {


Nu = 0.59*pow(Ra, 0.25);
}

if (Ra >= pow(10, 9) && Ra <= pow(10, 13)) {


Nu = 0.1*pow(Ra, 0.333333);
}
}

void Horizontal_plate_1() { // Hot surface up or cold surface down

cout << "La placa es: [0] Circular o cuadrada [1] Rectangular ";
cin >> shape;

if (shape = true) {
cout << "Ingrese el ancho de la placa rectangular: ";
cout << "Ingrese el largo de la placa rectangular: ";
Lc = a * b / (2 * (a + b));

else {

double a;
cout << "Ingrese el diametro/la longitud del circulo/de la placa:
";
cin >> a;
Lc = a / 4;

Tm = (T1 + T2) / 2;
Ra = g * (1 / (Tm + 273.15))*(abs(T1 - T2))*pow(Lc, 3)* Pr / pow(v, 2);

if (Ra >= pow(10, 4) && Ra <= pow(10, 7)) {


Nu = 0.54*pow(Ra, 0.25);
}

if (Ra >= pow(10, 7) && Ra <= pow(10, 11)) {


Nu = 0.15*pow(Ra, 0.333333);
}

void Horizontal_plate_2() { // Cold surface up or hot surface down

cout << "La placa es: [0] Circular o cuadrada [1] Rectangular ";
cin >> shape;

if (shape = true){
cout << "Ingrese el ancho de la placa rectangular: ";
cout << "Ingrese el largo de la placa rectangular: ";
Lc = a * b / (2 * (a + b));

else {
cout << "Ingrese el diametro/la longitud del circulo/de la placa:
";
cin >> a;
Lc = a / 4;

Tm = (T1 + T2) / 2;
Ra = g * (1 / (Tm + 273.15))*(abs(T1 - T2))*pow(Lc, 3)* Pr / pow(v, 2);
Nu = 0.27*pow(Ra, 0.25);
}

private:
double Ra, Nu;
double rho, cp, k, Pr, v;
};

class Internal_Forced_Conv { // Class for correlations of Forced Convection (I


might split it in External and internal)
public:
double Dh, V, T1, T2, Tm, e, Q, m_f, h;
int k;
void Interpolacion_lineal(double Tm, double *T, double *rho_, double *cp_,
double *k_, double *Pr_, double *v_) {

for (int i = 0; i < sizeof(T); i++) {


if (Tm < T[i]) {
rho = (8 * rho_[i] - 9 * rho_[i - 1] + rho_[i - 2]) / (3 *
(T[i] - T[i - 1]))*(Tm - T[i - 1]) + rho_[i - 1];
cp = (8 * cp_[i] - 9 * cp_[i - 1] + cp_[i - 2]) / (3 *
(T[i] - T[i - 1]))*(Tm - T[i - 1]) + cp_[i - 1];
k = (8 * k_[i] - 9 * k_[i - 1] + k_[i - 2]) / (3 * (T[i] -
T[i - 1]))*(Tm - T[i - 1]) + k_[i - 1];
Pr = (8 * Pr_[i] - 9 * Pr_[i - 1] + Pr_[i - 2]) / (3 *
(T[i] - T[i - 1]))*(Tm - T[i - 1]) + Pr_[i - 1];
v = k = (8 * v_[i] - 9 * v_[i - 1] + v_[i - 2]) / (3 *
(T[i] - T[i - 1])) * (Tm - T[i - 1]) + v_[i - 1];
break;
}
}
}

void Reynolds() {

cout << "Ingrese el diametro hidraulico en metros [m] del ducto: ";
cin >> Dh;
cout << endl;
cout << "¿Cual parametro de flujo conoce?\n[0] Velocidad (m/s) \n[1]
Caudal (m^3/s)\n[2] Flujo masico (kg/s) ";
cin >> k;
switch (k) {
case 0:
cin.clear();
cout << "Ingrese la velocidad en m/s: ";
cin >> V;
Re = V * Dh / v;
break;
case 1:
cin.clear();
cout << "Ingrese el caudal en m^3/s ";
cin >> Q;
Re = (4 * Q / pi * (Dh)) / v;
break;
case 2:
cin.clear();
cout << "Ingrese el flujo masico en kg/s: ";
cin >> m_f;
Re = (4 * m_f / pi * (Dh)) / (rho*v);
break;
}

if (Re < 2000) {


cout << "Laminar flow, Re: " << Re << endl;
}

if (Re >= 2000) {


cout << "Turbulent flow, Re: " << Re << endl;
}
}

void Friction_Factor (){


if (Re < 2000) {
f = 64 / Re;
}

if (Re >= 2000) {


cout << "\n\n Presione la tecla correspondiente al material de la
tuberia \n";
//Se introduce la rugosidad absoluta del material en mm segun la
eleccion del usuario
cout << "Vidrio, plastico, o tuberia lisa [1] \nConcreto [2]
\nDuela de madera [3] \nHule [4] \nCobre o laton [5] \nHierro fundido [6] \nHierro
galvanizado [7] \nAcero inoxidable [8] \nAcero comercial [9] \nHierro forjado
[0] \n";
while (!(cin >> k) || k != 1 && k != 2 && k != 3 && k != 4 && k !
= 5 && k != 6 && k != 7 && k != 8 && k != 9 && k != 0) {

cout << "Tecla no permitida \nIngrese de nuevo \n\n";


cin.clear();
cin.ignore(100, '\n');
}
switch (k) {
case 0:
e = 0.046;
cin.clear();
break;
case 1:
e = 0;
cin.clear();
break;
case 2:
e = 4.9;
cin.clear();
break;
case 3:
e = 0.5;
cin.clear();
break;
case 4:
e = 0.01;
cin.clear();
break;
case 5:
e = 0.0015;
cin.clear();
break;
case 6:
e = 0.26;
cin.clear();
break;
case 7:
e = 0.15;
cin.clear();
break;
case 8:
e = 0.002;
cin.clear();
break;
case 9:
e = 0.045;
cin.clear();
break;
}
f = pow(1.8*log10(pow((((e/1000) / Dh) / 3.7), 1.1) + 6.9 / Re),
-2);
}
}

void laminar_flow_Temp_const() {
Nu = 3.66;
}

void laminar_flow_heat_const() {
Nu = 4.36;
}

void Turbulent_flow(){
bool a;
double n;
cout << "El fluido sufre: [0] Calentamiento [1] Enfriamiento ";
cin >> a;

if (a = true) {
n = 0.4;
}

else {
n = 0.3;
}

Nu = 0.023*pow(Re, 0.8)*pow(Pr, n);


}

private:
double rho, cp, k, Pr, v, Re, Nu, f;

};

class External_Forced_Conv {
public:
double L, V, T1, T2, Tm, Cf, h;
bool a;
void Interpolacion_lineal(double Tm, double *T, double *rho_, double *cp_,
double *k_, double *Pr_, double *v_) {

for (int i = 0; i < sizeof(T); i++) {

if (Tm < T[i]) {


rho = (8 * rho_[i] - 9 * rho_[i - 1] + rho_[i - 2]) / (3 *
(T[i] - T[i - 1]))*(Tm - T[i - 1]) + rho_[i - 1];
cp = (8 * cp_[i] - 9 * cp_[i - 1] + cp_[i - 2]) / (3 *
(T[i] - T[i - 1]))*(Tm - T[i - 1]) + cp_[i - 1];
k = (8 * k_[i] - 9 * k_[i - 1] + k_[i - 2]) / (3 * (T[i] -
T[i - 1]))*(Tm - T[i - 1]) + k_[i - 1];
Pr = (8 * Pr_[i] - 9 * Pr_[i - 1] + Pr_[i - 2]) / (3 *
(T[i] - T[i - 1]))*(Tm - T[i - 1]) + Pr_[i - 1];
v = k = (8 * v_[i] - 9 * v_[i - 1] + v_[i - 2]) / (3 *
(T[i] - T[i - 1])) * (Tm - T[i - 1]) + v_[i - 1];
break;
}
}
}

void Reynolds() {
cout << "Ingrese la longitud caracteristica en metros [m]
correspondiente a su problema\nPlaca plana: Longitud\nEsfera y Cilindro: Diametro"
<< endl;
cin >> L;
Re = V * L / v;
}

void Flat_plate(){

cout << "Define thermal boudary condition: [1] Constant plate


temperature\t[2]Constant heat flux";
cin >> a;

if (Re < 50000 || Pr >0.6 || Pr <= 60) {


Cf = 1.33 / pow(Re, 0.5);
if (a = true) { // Constant temperature (Laminar)
Nu = 0.037*pow(Re, 0.5)*pow(Pr, 0.33333);
}

else { // Constant temperature (Turbulent)


Nu = 0.037*pow(Re, 0.8)*pow(Pr, 0.33333);
}
}

if (Re >= 50000) {


Cf = 0.074 / pow(Re, 0.2);
if (a = true) { // Constant heat flux (Laminar)
Nu = 0.0308*pow(Re, 0.5)*pow(Pr, 0.33333);
}

else { // Constant heat flux (Turbulent)


Nu = 0.0308*pow(Re, 0.8)*pow(Pr, 0.33333);
}
}

void Cylinder() {
double Pe = Re * Pr;
if (Pe > 0.2) {
Nu = 0.3 + 0.62*pow(Re, 0.5)*pow(Pr, 0.33333) / (pow((1 +
pow((0.4 / Pr), 0.66667)), 0.25))*(pow(1 + pow((Re / 282000), 0.625), 0.8));
}
else {
cout << "There is no available correlation for those conditions";
}
}

void Esphere(double &miu_inf, double &miu_s) {

if (Re >= 3.5 || Re <= 80000 || Pr >= 0.7 || Pr <= 380 || miu_inf /
miu_s >= 1 || miu_inf / miu_s <= 380) {
Nu = 2 + (0.4*pow(Re, 0.5) + 0.06*pow(Re, 0.66667))*pow(Pr,
0.4)*(miu_inf / miu_s);
}
else {
cout << "There is no available correlation for those conditions";
}
}

private:
double rho, cp, k, Pr, v, Re, Nu;
};

You might also like