Hola, saludos a todos, soy nuevo en este foro.
Estoy haciendo un programa para encontrar una solución analítica mediante métodos numéricos para el comportamiento de un intercambiador de calor. De momento tengo poco hecho, pero me da un error que dice que mi programa dejó de funcionar. Seguramente encontraréis fallos importantes en mi código...necessito ayuda.
Gracias por adelantado, aquí va el código:
#include <iostream>
#include <math.h>
using namespace std;
int N, M, rc, ra, Nc, Na;
double k, alfa, e, qv, Tg,T, x, P1,P2, Tf1,Tf2, V1, V2, Ro, Cp, Landa, Mu,L;
void introducirDatos(){
/*----------------Introduccion de datos por el usuario-------------------*/
cout<<"INTRODUCCIÓn DE DATOS"<<endl<<endl;
cout<<"Introduce el numero de nodos con que queires discretizar los fluidos: ";
cin>>N;
cout<<endl;
cout<<"Introduce la temperatura inicial: ";
cin>>T;
cout<<endl;
cout<<"Introduce las condiciones de entrada del fluido I: "<< endl;
cout<<"pressio:";
cin>> P1;
cout<<"temperatura:";
cin>> Tf1;
cout<< "velocitat:";
cin>> V1;
cout<<endl;
cout<<"Introduce las condiciones de entrada del fluido II: "<< endl;
cout<<"pressio:";
cin>> P2;
cout<<"temperatura:";
cin>> Tf2;
cout<< "velocitat:";
cin>> V2;
cout<<endl;
M=N-1;
}
class vector_generic_1 {
private:
int N;
double T;
public:
double* array;
double* creaiomple(int a,double b ){
N=a;
T=b;
double* vector = new double[N];
for(int i=0;i<N;i++)
{
vector=T;//rellenamos el vector
};
array=vector;
return array;
}
double mostra(double[]) {
for(int i=0;i<N;i++)
{
cout <<"El valor del node "<<i<< " es "<< array<< endl;
}
}
};
class vector_generic_2 {
private:
int M;
double T;
public:
double* array;
double* creaiomple(int a,double b ){
M=a;
T=b;
double* vector = new double[M];
for(int i=0;i<M;i++)
{
vector=T;//rellenamos el vector
};
array=vector;
return array;
}
double mostra(double[]) {
for(int i=0;i<M;i++)
{
cout <<"El valor del node "<<i<< " es "<< array<< endl;
}
}
};
int main (int argc, char *argv[])
{
cout << "Ressolució numèrica d'un bescanviador de calor de tubs concèntrics" << endl;
cout << "Pressiona enter per a començar" << endl;
cin.get();
introducirDatos();
vector_generic_2 Temperatura_solid_1;
Temperatura_solid_1.creaiomple(M,T);
Temperatura_solid_1.mostra(Temperatura_solid_1.array);
cout<<" "<<endl;
vector_generic_1 Temperatura_fluid_1;
Temperatura_fluid_1.creaiomple(N,Tf1);
Temperatura_fluid_1.mostra(Temperatura_fluid_1.array);
cout<<" "<<endl;
vector_generic_1 Velocitat_fluid_1;
Velocitat_fluid_1.creaiomple(N,V1);
Velocitat_fluid_1.mostra(Velocitat_fluid_1.array);
cout<<" "<<endl;
vector_generic_1 Pressio_fluid_1;
Pressio_fluid_1.creaiomple(N,P1);
Pressio_fluid_1.mostra(Velocitat_fluid_1.array);
cout<<" "<<endl;
vector_generic_1 Temperatura_suposada_fluid_1;
Temperatura_suposada_fluid_1.creaiomple(N,Tf1);
Temperatura_suposada_fluid_1.mostra(Temperatura_suposada_fluid_1.array);
cout<<" "<<endl;
vector_generic_1 Velocitat_suposada_fluid_1;
Velocitat_suposada_fluid_1.creaiomple(N,V1);
Velocitat_suposada_fluid_1.mostra(Velocitat_suposada_fluid_1.array);
cout<<" "<<endl;
vector_generic_1 Pressio_suposada_fluid_1;
Pressio_suposada_fluid_1.creaiomple(N,P1);
Pressio_suposada_fluid_1.mostra(Velocitat_suposada_fluid_1.array);
cout<<" "<<endl;
vector_generic_1 Ro_fluid_1;
Ro_fluid_1.creaiomple(N,P1);
vector_generic_1 Ro_suposada_fluid_1;
Ro_suposada_fluid_1.creaiomple(N,P1);
vector_generic_2 Temperatura_mitja_fluid_1;
Temperatura_mitja_fluid_1.creaiomple(M,T);
vector_generic_2 Temperatura_film_fluid_1;
Temperatura_film_fluid_1.creaiomple(M,T);
vector_generic_2 Velocitat_mitja_fluid_1;
Velocitat_mitja_fluid_1.creaiomple(M,T);
vector_generic_2 Ro_mitja_fluid_1;
Ro_mitja_fluid_1.creaiomple(M,T);
vector_generic_2 Cp_mitja_fluid_1;
Cp_mitja_fluid_1.creaiomple(M,T);
vector_generic_2 Mu_mitja_fluid_1;
Mu_mitja_fluid_1.creaiomple(M,T);
vector_generic_2 Mu_mitja_fluid_1_paret;
Mu_mitja_fluid_1_paret.creaiomple(M,T);
vector_generic_2 Landa_mitja_fluid_1;
Landa_mitja_fluid_1.creaiomple(M,T);
vector_generic_2 alfa_mitja_fluid_1;
alfa_mitja_fluid_1.creaiomple(M,T);
double diametre,diametre_eq, longitud, rugosidad_relativa;
diametre=0.2;
longitud=1;
rugosidad_relativa=0.003;
//diametre_eq=4*3.14*(pow(diametre,2)/4)/
vector_generic_2 Reynolds_mitja_fluid_1;
Reynolds_mitja_fluid_1.creaiomple(M,T);
vector_generic_2 Prandtl_mitja_fluid_1;
Prandtl_mitja_fluid_1.creaiomple(M,T);
vector_generic_2 Graetz_mitja_fluid_1;
Graetz_mitja_fluid_1.creaiomple(M,T);
vector_generic_2 Nusselt_mitja_fluid_1;
Nusselt_mitja_fluid_1.creaiomple(M,T);
vector_generic_2 Factor_friccio_fluid_1;
Factor_friccio_fluid_1.creaiomple(M,T);
for(int i=0;i<=M;i++)
{
for (int j=0;j<10000;j++)
{
Temperatura_mitja_fluid_1.array=(Temperatura_fluid_1.array+Temperatura_suposada_fluid_1.array[i+1])/2;
Temperatura_film_fluid_1.array=(Temperatura_mitja_fluid_1.array+Temperatura_solid_1.array)/2;
Velocitat_mitja_fluid_1.array=(Velocitat_fluid_1.array+Velocitat_suposada_fluid_1.array[i+1])/2;
Ro_mitja_fluid_1.array=847.2+1.298*(Temperatura_mitja_fluid_1.array+273)-0.002657*pow((Temperatura_mitja_fluid_1.array+273),2);
Cp_mitja_fluid_1.array=5648.79-9.14*(Temperatura_mitja_fluid_1.array+273)+0.01421*pow((Temperatura_mitja_fluid_1.array+273),2);
Landa_mitja_fluid_1.array=-0.722+0.007168*(Temperatura_mitja_fluid_1.array+273)-0.000009137*pow((Temperatura_mitja_fluid_1.array+273),2);
Mu_mitja_fluid_1.array=exp(7.867-0.077*(Temperatura_mitja_fluid_1.array+273)+0.0000904*pow((Temperatura_mitja_fluid_1.array+273),2));
Mu_mitja_fluid_1_paret.array=exp(7.867-0.077*(Temperatura_film_fluid_1.array+273)+0.0000904*pow((Temperatura_film_fluid_1.array+273),2));
Reynolds_mitja_fluid_1.array=(Ro_mitja_fluid_1.array*Velocitat_mitja_fluid_1.array*diametre)/Mu_mitja_fluid_1.array;
Prandtl_mitja_fluid_1.array=(Mu_mitja_fluid_1.array*Cp_mitja_fluid_1.array)/Landa_mitja_fluid_1.array;
Graetz_mitja_fluid_1.array=(3.14*diametre*Reynolds_mitja_fluid_1.array*Prandtl_mitja_fluid_1.array)/(4*longitud);
Ro_fluid_1.array=847.2+1.298*(Temperatura_fluid_1.array+273)-0.002657*pow((Temperatura_fluid_1.array+273),2);
Ro_suposada_fluid_1.array[i+1]=847.2+1.298*(Temperatura_suposada_fluid_1.array[i+1]+273)-0.002657*pow((Temperatura_suposada_fluid_1.array[i+1]+273),2);
if(Reynolds_mitja_fluid_1.array<2000 && Graetz_mitja_fluid_1.array>10)
{
Nusselt_mitja_fluid_1.array=1.86*pow(Reynolds_mitja_fluid_1.array,(1/3))*pow(Prandtl_mitja_fluid_1.array,(1/3))*pow((diametre/longitud),(1/3))*pow((Mu_mitja_fluid_1.array/Mu_mitja_fluid_1_paret.array),0.14);
}
else
{
if(Reynolds_mitja_fluid_1.array<2000 && Graetz_mitja_fluid_1.array<10)
{
Nusselt_mitja_fluid_1.array=3.66*pow(Reynolds_mitja_fluid_1.array,0)*pow(Prandtl_mitja_fluid_1.array,0);
}
else
{
if(Reynolds_mitja_fluid_1.array>2000)
{
Nusselt_mitja_fluid_1.array=0.023*pow(Reynolds_mitja_fluid_1.array,0.8)*pow(Prandtl_mitja_fluid_1.array,0.4);
}
else
{
}
}
}
alfa_mitja_fluid_1.array=(Nusselt_mitja_fluid_1.array*Landa_mitja_fluid_1.array)/diametre;
if(Reynolds_mitja_fluid_1.array<2000)
{
Factor_friccio_fluid_1.array=16*pow(Reynolds_mitja_fluid_1.array,-1);
}
else
{
if(5000<Reynolds_mitja_fluid_1.array && Reynolds_mitja_fluid_1.array<30000 && rugosidad_relativa<0.0001)
{
Factor_friccio_fluid_1.array=0.079*pow(Reynolds_mitja_fluid_1.array,-0.25);
}
else
{
if(5000<Reynolds_mitja_fluid_1.array && Reynolds_mitja_fluid_1.array<30000 && rugosidad_relativa<0.004)
{
Factor_friccio_fluid_1.array=0.096*pow(Reynolds_mitja_fluid_1.array,-0.25);
}
else
{
// li he tret Reynolds_mitja_fluid_1.array<300000
if(30000<Reynolds_mitja_fluid_1.array && rugosidad_relativa<0.0001)
{
Factor_friccio_fluid_1.array=0.046*pow(Reynolds_mitja_fluid_1.array,-0.2);
}
else
{
if(30000<Reynolds_mitja_fluid_1.array && rugosidad_relativa<0.004)
{
Factor_friccio_fluid_1.array=0.078*pow(Reynolds_mitja_fluid_1.array,-0.2);
}
else
{
}
}
}
}
}
double Ax;
L=1;
Ax=L/N;
Velocitat_fluid_1.array[i+1]=(Velocitat_fluid_1.array*Ro_fluid_1.array)/Ro_suposada_fluid_1.array[i+1];
Pressio_fluid_1.array[i+1]=Pressio_fluid_1.array-(((Factor_friccio_fluid_1.array*Ro_mitja_fluid_1.array*pow(Velocitat_mitja_fluid_1.array,2)/2)*2*3.14*diametre/2*Ax-Ro_mitja_fluid_1.array*Velocitat_mitja_fluid_1.array*3.14*pow(diametre,2)/4*(Velocitat_fluid_1.array[i+1]-Velocitat_fluid_1.array))/(3.14*pow(diametre,2)/4));
Temperatura_fluid_1.array[i+1]=Temperatura_fluid_1.array-(alfa_mitja_fluid_1.array*(Temperatura_mitja_fluid_1.array-Temperatura_solid_1.array)*2*3.14*(diametre/2)*Ax)/((Ro_mitja_fluid_1.array*Velocitat_mitja_fluid_1.array*3.14*pow(diametre,2)/4)*Cp_mitja_fluid_1.array);
if ((fabs(Velocitat_fluid_1.array[i+1]-Velocitat_suposada_fluid_1.array[i+1]))<0.001 && (fabs(Pressio_fluid_1.array[i+1]-Pressio_suposada_fluid_1.array[i+1]))<0.001 && (fabs(Temperatura_fluid_1.array-Temperatura_suposada_fluid_1.array))<0.001)
{
break;
}
else
{
Velocitat_suposada_fluid_1.array[i+1]=Velocitat_fluid_1.array[i+1];
Pressio_suposada_fluid_1.array[i+1]=Pressio_fluid_1.array[i+1];
Temperatura_suposada_fluid_1.array[i+1]=Temperatura_fluid_1.array[i+1];
}
}
}
Temperatura_mitja_fluid_1.mostra(Temperatura_mitja_fluid_1.array);
cout<<" "<<endl;
Temperatura_film_fluid_1.mostra(Temperatura_film_fluid_1.array);
cout<<" "<<endl;
Velocitat_mitja_fluid_1.mostra(Velocitat_mitja_fluid_1.array);
cout<<" "<<endl;
Ro_mitja_fluid_1.mostra(Ro_mitja_fluid_1.array);
cout<<" "<<endl;
Cp_mitja_fluid_1.mostra(Cp_mitja_fluid_1.array);
cout<<" "<<endl;
Landa_mitja_fluid_1.mostra(Landa_mitja_fluid_1.array);
cout<<" "<<endl;
Mu_mitja_fluid_1.mostra(Mu_mitja_fluid_1.array);
cout<<" "<<endl;
Mu_mitja_fluid_1_paret.mostra(Mu_mitja_fluid_1_paret.array);
cout<<" "<<endl;
Reynolds_mitja_fluid_1.mostra(Reynolds_mitja_fluid_1.array);
cout<<" "<<endl;
Prandtl_mitja_fluid_1.mostra(Prandtl_mitja_fluid_1.array);
cout<<" "<<endl;
Graetz_mitja_fluid_1.mostra(Graetz_mitja_fluid_1.array);
cout<<" "<<endl;
Nusselt_mitja_fluid_1.mostra(Nusselt_mitja_fluid_1.array);
cout<<" "<<endl;
alfa_mitja_fluid_1.mostra(alfa_mitja_fluid_1.array);
cout<<" "<<endl;
Factor_friccio_fluid_1.mostra(Factor_friccio_fluid_1.array);
cout<<" "<<endl;
Ro_fluid_1.mostra(Ro_fluid_1.array);
cout<<" "<<endl;
Ro_suposada_fluid_1.mostra(Ro_fluid_1.array);
cout<<" "<<endl;
Velocitat_fluid_1.mostra(Velocitat_fluid_1.array);
cout<<" "<<endl;
Pressio_fluid_1.mostra(Pressio_fluid_1.array);
cout<<" "<<endl;
Temperatura_fluid_1.mostra(Temperatura_fluid_1.array);
cout<<" "<<endl;
cout << "Afegeix un numero" << endl;
cin >> x;
//delete [] array; es imprescindible??
cout<<endl;
return 0;
}