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