diff --git a/src/implicite.cpp b/src/implicite.cpp index 9f0967954436e93d8e3b47bec83cdd0109e34b20..1bf289e13ba62e362e3d8f2c2538a7cf464ad9c7 100644 --- a/src/implicite.cpp +++ b/src/implicite.cpp @@ -6,16 +6,22 @@ #include "tab.h" using namespace std; -typedef std::numeric_limits< double > dbl; -Materiaux::Materiaux(const char* materiaux,double lambda, double kho, double c) +Materiaux::Materiaux(const char* materiaux,double lambda, double rho, double c) { materiaux_=materiaux; lambda_= lambda; - kho_ = kho; + rho_ = rho; c_ = c; } +/** +Résolution de l'équation de la chaleur à 1 dimension implicite, avec la décomposition LU + +@param lambda: coefficient de diffusivité thermique +@param T: vecteur qui contient les 101 valeures de la température en Kelvin à l'instant n, le long de la barre +@return: un vecteur qui contient les 101 valeures de la température en Kelvin à l'instant n+1, le long de la barre +*/ vector<double> resolution(double lambda, vector<double> T){ int n= T.size(); vector<double> d(n,0); @@ -40,6 +46,13 @@ vector<double> resolution(double lambda, vector<double> T){ return x; } +/** +Fait la somme de 2 vecteurs de doubles + +@param F: vecteur qui contient les 101 valeures d'apport extérieur de chaleur à l'instant n, le long de la barre +@param T: vecteur qui contient les 101 valeures de la température en Kelvin à l'instant n, le long de la barre +@return: la somme des 2 vecteurs +*/ vector<double> sum_vect(vector <double> T,vector <double> F){ vector <double> res(T.size(),0); @@ -50,6 +63,14 @@ vector<double> sum_vect(vector <double> T,vector <double> F){ } +/** +Calcule les valeurs de la températures pour chaque chaque couple (x,t), où x,la position, prend 100 valeurs de 0 à 1, et T prend 101 valeurs de 0 à 16 + +@param mat: materiau de la barre +@param f: valeur de la température de la source exterieure de chaleur (en K) +@param u0: valeur de la température ambiante (en K) +@return: créé les fichiers contenant les tableaux de valeur, ne retourne rien +*/ void settab(Materiaux mat, int u0, double f) { double T=16; @@ -57,12 +78,12 @@ void settab(Materiaux mat, int u0, double f) double dt, dx; dt= T/100.; dx= L/100.; - double coef= (mat.getlambda()*dt)/(mat.getc()*mat.getkho()*(dx*dx)); + double coef= (mat.getlambda()*dt)/(mat.getc()*mat.getrho()*(dx*dx)); double F2=16*f*f; vector<double> F(101,0); - F[10]=F2/(mat.getc()*mat.getkho()); + F[10]=F2/(mat.getc()*mat.getrho()); for(int j=50;j<61;j++){ - F[j]=F2*0.75/(mat.getc()*mat.getkho()); + F[j]=F2*0.75/(mat.getc()*mat.getrho()); } vector<vector<double> > temp; @@ -70,8 +91,6 @@ void settab(Materiaux mat, int u0, double f) temp.push_back(vector<double>(101,u0)); - std::cout<< std::setprecision(std::numeric_limits<double>::digits10)<< coef<<std::endl; - for (int i = 1; i < 100; i++){ tp=temp[i-1]; tp[0]=tp[0]+coef*u0;