From ec7ab9500e85c4ff809a0b8aac05ff1638aa9ba5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20CAZENAVE?= <clement.cazenave@ensiie.fr> Date: Sun, 12 Jan 2020 03:18:52 +0100 Subject: [PATCH] Upload New File --- src/implicite.cpp | 116 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 116 insertions(+) create mode 100644 src/implicite.cpp diff --git a/src/implicite.cpp b/src/implicite.cpp new file mode 100644 index 0000000..2ccb237 --- /dev/null +++ b/src/implicite.cpp @@ -0,0 +1,116 @@ +#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; +} -- GitLab