Está en la página 1de 2

#include <iostream>

#include <conio.h>
#include <math.h>
using namespace std;

/*float Temp(float L, float Tini, float Tfin, int stepX, int stepY, float res){
float barrita[stepY][stepX];
for (int i=0; i<stepY; i++){
barrita[i][0]=Tini;
}
for (int i=0; i<stepY; i++){
barrita[i][L]=Tfin;
}
for (int i=1; i<stepX-1;i++){
barrita[0][i]=16.69; /*Funcion constante*/
/* }
for (int i=1; i<stepY; i++){
for (int j=1; j<stepX-1; j++){
barrita[i][j]=barrita[i-1][j]+(res*(barrita[i-1][j+1]-2*barrita[i-1][j]
+barrita[i-1][j-1]));
/*EC: Ti(n+1)=Ti(n)+((alpha*dt)/((dx)^2))*(Ti+1(n)-2*(Ti(n))+(Ti-1(n)))*/
/* }
}
return barrita;
}*/

int main(){

float Tini, Tfin, dt, alpha, res, timeF=60, dx, L; /*El tiempo de ejecucion esta en
segundos, 1 minuto exactamente*/
int stepX,stepY;
cout<<"Ingrese el indice de conductividad termica o calorica o como sea xd:
"<<endl;
cin>>alpha;
cout<<"Ingrese la longitud de la barra: "<<endl;
cin>>L;
cout<<"META dx: "<<endl;
cin>>dx;
cout<<"Ingrese el dt: "<<endl;
cin>>dt;
stepX=round(L/dx);
stepY=round(timeF/dt);
res=(alpha*dt)/pow(L/dx,2);
cout<<"\nres: "<<res<<endl;
while (res>=0.5){
cout<<"El dt es muy grande, ingrese otro porfavor: "<<endl;
cin>>dt;
res=(alpha*dt)/pow(L/dx,2);
cout<<"\nres: "<<res<<endl;
}
/*Se coloca esta restriccion por la condicion de Courant-Friedrichs-Lewy
donde se exige que la multiplicacion de alpha con delta t, dividido en
delta x elevado al cuadrado debe ser menor estricto a 0.5
Esta restriccion es obligatoria para que el modelo por aproximacion numerica
tenga solucion, se decide cambiar el delta t debido a que en condiciones
reales, este es el unico valor posible que se podria cambiar.
*/
cout<<"Ingrese el valor de temperatura en farenheit para x=0 en cualquier tiempo t:
"<<endl;
cin>>Tini;
cout<<"Ingrese el valor de temperatura en farenheit para x=L en cualquier tiempo t:
"<<endl;
cin>>Tfin;
cout<<endl;
/*stepX=round(ceil(dx)+1);*/
cout<<"\cantidad de filas o pasos en la barra: "<<stepX<<endl;
/*stepY=round(ceil(dt)+1);*/
cout<<"\cantidad de columnas o pasos en el tiempo: "<<stepY<<endl;

float barrita[stepY][stepX];
for (int i=0; i<stepY; i++){
barrita[i][0]=Tini;
/*cout<<"\n"<<barrita[i][0]<<endl;*/
}
for (int i=0; i<stepY; i++){
barrita[i][stepX-1]=Tfin;
/*cout<<"\n"<<barrita[i][stepX]<<endl;*/
}
for (int i=1; i<stepX-1;i++){
barrita[0][i]=sin(i)*2; /*Funcion trigonometrica seno, multiplicada por 2*/
/*cout<<"\n"<<barrita[0][i]<<endl;*/
}
for (int i=1; i<stepY; i++){
for (int j=1; j<stepX-1; j++){
barrita[i][j]=barrita[i-1][j]+(res*(barrita[i-1][j+1]-2*barrita[i-1][j]
+barrita[i-1][j-1]));
/*EC: Ti(n+1)=Ti(n)+((alpha*dt)/((dx)^2))*(Ti+1(n)-2*(Ti(n))+(Ti-1(n)))*/
/*cout<<"\n"<<barrita[i][j]<<endl;*/
}
}
for (int i=0; i<stepY; i++){
cout<<endl;
for (int j=0; j<stepX; j++){
cout<<barrita[i][j]<<" ";
}
}

/*Densidad, capacidad calorifica y la constante de conductividad termica son


constantes
alpha es la difusividad termica
alpha = calor conducido/calor almacenado
Se aplica discretizacion para llegar a una solucion aproximada por medio
de diferencias finitas*/
return 0;
}

También podría gustarte