Skip to content
Extraits de code Groupes Projets
Valider ec7ab950 rédigé par Clément CAZENAVE's avatar Clément CAZENAVE
Parcourir les fichiers

Upload New File

parent 4e1d9463
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
#include <iostream>
#include <limits>
#include <iomanip>
#include <fstream>
#include <vector>
#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;
lambda_= lambda;
kho_ = kho;
c_ = c;
}
vector<double> resolution(double lambda, vector<double> T){
int n= T.size();
vector<double> d(n,0);
vector<double> l(n-1,0);
d[0]=1+2*lambda;
for (int i =1;i<n;i++){
l[i-1]=(-1)*lambda/d[i-1];
d[i]=1+2*lambda+lambda*l[i-1];
}
vector<double> y(n,0);
y[0]=T[0];
for (int i =1;i<n;i++){
y[i]=T[i]-l[i-1]*y[i-1];
}
vector<double> x(n,0);
x[n-1]=y[n-1]/d[n-1];
for (int i =n-2;i>0;i--){
x[i]=(y[i]+lambda*x[i+1])/d[i];
}
return x;
}
vector<double> sum_vect(vector <double> T,vector <double> F){
vector <double> res(T.size(),0);
for (size_t i=0;i<T.size();i++){
res[i]= T[i]+F[i];
}
return res;
}
void settab(Materiaux mat, int u0, double f)
{
double T=16;
double L=1;
double dt, dx;
dt= T/100.;
dx= L/100.;
double coef= (mat.getlambda()*dt)/(mat.getc()*mat.getkho()*(dx*dx));
double F2=16*f*f;
vector<double> F(101,0);
F[10]=F2;
for(int j=50;j<61;j++){
F[j]=F2*0.75;
}
vector<vector<double> > temp;
vector<double> tp;
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;
tp[100]=tp[100]+coef*u0;
temp.push_back(resolution(coef,sum_vect(tp,F)));
temp[i][0]=u0;
temp[i][100]=u0;
}
const char separateur(' ');
std::ofstream sortie(mat.get_mat(),std::ios::out);
for (int i = 0; i < 100; i++){
for (int j = 0; j < 101; j++){
sortie << temp[i][j] << separateur;
}
sortie<< std::endl;
}
sortie.close();
}
int main(){
Materiaux cuivre = Materiaux("cuivre",389, 8940,380);
Materiaux fer= Materiaux ("fer",80.2,7874,440);
Materiaux verre= Materiaux("verre",1.2,2530,840);
Materiaux polystyrene= Materiaux("polystyrene",0.1,1040,1200);
settab(cuivre, 273.5+13,273.5+80);
std::cout<<1<<std::endl;
settab(fer,273.5+13,273.5+80);
std::cout<<2<<std::endl;
settab(verre,273.5+13,273.5+80);
std::cout<<3<<std::endl;
settab(polystyrene,273.5+13,273.5+80);
std::cout<<4<<std::endl;
return 0;
}
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Veuillez vous inscrire ou vous pour commenter