Sei sulla pagina 1di 16

SOLUCIN DE LA ECUACIN

DEL CALOR EN UNA PLACA


BIDIMENSIONAL USANDO C++
Daniel Arias Ramirez

DEFINICIN DEL SISTEMA


El sistema consta de una placa bidimensional, en la
cual solo se analiza el transporte de calor por
conduccin, en el cual se suministra una diferente
cantidad de energa por dos lados de la placa,
donde se tienen en cuenta las siguientes
aproximaciones:
Velocidad uniforme
Presin constante
Densidad constante
Cambios insignificantes en la energa potencial

INTERCAMBIO DE ENERGA

SEGUNDA LEY DE FOURIER

CODIGO

Librerias

#include <stdio.h> Permite manipular ficheros


desde programas
#include <stdlib.h> Bsqueda y ordenamiento de
datos.
#include <vector> Creacion y trabajo con vectores
#include <iostream> Operaciones de
entrada/salida.

CODIGO

Matriz

double** crear_matriz_int(int n, int m){double**


X = new double*[n]; for(int i = 0; i < n; i++){
X[i] = new double[m];
};
return X;
};
Funcion para crear la matriz

CODIGO

std::cout << "Ingrese el valor de temperatura del


borde a" << endl;
double borde_a;
cin >> borde_a;
std::cout<<"Ingrese el valor de temperatura del
borde a"<<endl;
double borde_b;
cin>> borde_b;

Solicita y asigna los valores iniciales de temperatura

CODIGO
double temperatura_1, temperatura_2;
Declara las variables a resolver

gnu = popen("gnuplot", "w");


Llama al programa Gnuplot

fg = fopen("placa.dat","w");
Crea un fichero para escribir
double** matriz_1=crear_matriz_int(n,m);
Crea una matriz llamada matriz_1

CODIGO

Para
cada punto se puede escribir una ecuacin de

diferencias y el problema ahora es resolver un


sistema de ecuaciones algebraicas lineales:

...

De una manera matricial: donde A es la matriz de


valores conocidos, u y c son los vectores columna de
valores desconocidos y conocidos respectivamente.

CODIGO

Para
resolver la ecuacin se usa el mtodo de
diferencias finitas, usando el esquema de cinco
puntos se obtiene:

CODIGO

CODIGO
for(i=0; i < tammat; i++){

if(i==0){
temperatura_1=(temperatura_2 = borde_b);
} else if(i==tammat-1){
temperatura_1=(temperatura_2 = borde_a);
} else {
temperatura_1=borde_a;

Genera y escribe los datos

temperatura_2=borde_b;

iniciales en la matriz_1

}
for(k=0; k < tammat-1; k++)
matriz_1[i][k] = temperatura_1;
matriz_1[i][k] = temperatura_2;
}

CODIGO
for(j = 0; j < 100; j++){
for(i=1; i < tammat-1; i++){
for(k = 1; k < tammat-1; k++){
matriz_1 [i][k] = (matriz_1 [i+1][k] +
matriz_1 [i-1][k] + matriz_1[i][k-1] + matriz_1[i]
[k+1])/4;
}
}
}

Soluciona la matriz por el mtodo iterativo


previamente mencionado

CODIGO
for(i = 0; i<tammat; i++){
for(k=0; k<tammat; k++)
fprintf(fg,"%u %u %g \n", i, k, matriz_1 [i]
[k]);
fprintf(fg, "\n");

Genera un ordenamiento de los datos obtenidos en


la solucin anterior y los escribe en el archivo
placa.dat

CODIGO

fprintf(gnu,"splot \"placa.dat\" using 1:2:3 with


line;\n");
fclose(fg);
fclose(gnu);

Grafica en gnuplot y cierra el programa

BIBLIOGRAFIA
Jifi M. Latif Heat Conduction 2009 SpringerVerlag Berlin Heidelberg pag 17/15
http://c.conclase.net/librerias/ fecha de
consulta:26/06/2014
http://bibliotecas-del-lenguaje.wikispaces.com/
fecha de consulta:26/06/2014

Potrebbero piacerti anche