Simulación de impregnación de LDPE

Introduction

Ce programme nous permet de modéliser la concentration (c2) pour différents food simulant. Cela nous permet également de tracer différents graphiques.


In [6]:
import numpy as np
import pandas as pd
import math
import cmath
from scipy.optimize import root
import matplotlib.pyplot as plt
%matplotlib inline

Polymère


In [7]:
a = ("Table1.txt")
a


Out[7]:
'Table1.txt'

Calcul de la concentration finale

Nous avons besoin de différentes valeurs de concentration qui sont les suivantes : Afin de calculer la concentration finale, nous avons besoin d'équations qui sont les suivantes :


In [66]:
class InterfazPolimero:
    def __init__ (self,a):
        self.a=a

    def Lire(self):
        self.tab = pd.read_csv(self.a,sep=" ")
        coef =self.tab.values
        self.Experiment = coef[:,0]
        self.Thickness = coef[:,1]
        self.FoodSimulant = coef[:,2]
        self.Cpo = coef[:,3]
        self.K = coef [:,4]
        self.Dp = coef[:,5]
        self.RMSE = coef[:,6]
        self.k = coef[:,7]
        self.c4 = coef[:,8]
#         self.c1 =coef[:,9]
        self.c2 = np.zeros(10)
        
        return self.tab
    
    def inicializarC2(self):
        self.c2 = np.zeros(10)
        self.dimension = np.shape(self.c2)
        print(self.dimension)
        return self.c2
    
    
    def calcul(self):
        self.tab["j1"] = (self.tab["Dp"] / (self.tab["Thickness"] / 2)) * (self.tab["Cpo"] - self.c2)
        print(self.tab["j1"])
        self.c3 = self.c2 / self.K
        self.j2 = self.k * (self.c3 - self.tab["c4"])
        return (self.tab["j1"] - self.j2) / self.tab["j1"]
            
    def calcul2(self): 
        i = 0
        for self.tab["Thickness"], self.tab["Dp"], self.tab["K"], self.tab["k"], self.tab["c"] in enumerate(tab):
            self.sol = root(calcul,15,args=(float(self.tab["Dp"]),float(self.tab["k"]),float(self.tab["K"]),float(self.tab["c4"]),float(self.tab["Cpo"]),float(self.tab["Thickness"])))
            c2[i]= self.sol.x
            i = i + 1
        print(self.c2)
        return self.c2
    
    def Garder(self):
        raw_data ={"résultat" : [1.115510936772821, 1.0542169426645587, 1.041340418781726, 1.0219,1.4353658536585368, 1.0542169426645587, 1.058921125781793,1.0217682926829268, 1.05340368852459, 1.058921125781793]}
        df = pd.DataFrame(raw_data,index=["1","2","3","4","5","6","7","8","9","10"])
        df.to_csv("c2rep")
        return df

    
    def Graphique(self):
        plt.plot(self.tab["Dp"],self.Cpo,"^")
        plt.title("f(Dp)=Cpo")
        plt.xlabel("Dp")
        plt.ylabel("Cpo")        
    def Graphique2(self):
        plt.plot(self.tab["Dp"],[1.115510936772821, 1.0542169426645587, 1.041340418781726, 1.0219,1.4353658536585368, 1.0542169426645587, 1.058921125781793,1.0217682926829268, 1.05340368852459, 1.058921125781793],"^")
        plt.title("f(Dp)=c2")
        plt.xlabel("Dp")
        plt.ylabel("c2")        
    def Graphique3(self):
        plt.plot(self.tab["Cpo"],[1.115510936772821, 1.0542169426645587, 1.041340418781726, 1.0219,1.4353658536585368, 1.0542169426645587, 1.058921125781793,1.0217682926829268, 1.05340368852459, 1.058921125781793],"^")
        plt.title("f(Cpo)=c2")
        plt.xlabel("Cpo")
        plt.ylabel("c2")
    def Graphique4(self):
        plt.plot(self.tab["Thickness"],[1.115510936772821, 1.0542169426645587, 1.041340418781726, 1.0219,1.4353658536585368, 1.0542169426645587, 1.058921125781793,1.0217682926829268, 1.05340368852459, 1.058921125781793],"^")
        plt.title("f(Epaisseur)=c2")
        plt.xlabel("Epaisseur")
        plt.ylabel("c2")
        
    def Graphique5(self):
        fig,axes=plt.subplots(2,2)
        
        axes[0,0].plot(self.tab["Dp"],self.Cpo,"^")
        axes[1,1].plot(self.tab["Dp"],[1.115510936772821, 1.0542169426645587, 1.041340418781726, 1.0219,1.4353658536585368, 1.0542169426645587, 1.058921125781793,1.0217682926829268, 1.05340368852459, 1.058921125781793],"^")
        axes[0,1].plot(self.tab["Cpo"],[1.115510936772821, 1.0542169426645587, 1.041340418781726, 1.0219,1.4353658536585368, 1.0542169426645587, 1.058921125781793,1.0217682926829268, 1.05340368852459, 1.058921125781793],"^")
        axes[1,0].plot(self.tab["Thickness"],[1.115510936772821, 1.0542169426645587, 1.041340418781726, 1.0219,1.4353658536585368, 1.0542169426645587, 1.058921125781793,1.0217682926829268, 1.05340368852459, 1.058921125781793],"^")

In [67]:
p = InterfazPolimero("Table1.txt")
p


Out[67]:
<__main__.InterfazPolimero at 0x22ab59ca748>

Table des valeurs

Ici, nous pouvons voir les valeurs obtenus pour chaque expériences. Nous avons donc la valeur de l'épaisseur du film utilisé, le food simulant utilisé, la concentration initiale d'antioxydant dans le plastique, la valeur de K qui est le coefficient de partition du migrant entre le polymer et le food simulant.Dp est le coefficient de diffusion de l'antioxydant dans le polymère, RMSE permet de prédire l'erreur faite sur la valeur, et enfin k est le coefficient de transfert massique. Grâce à ces valeurs nous pouvons déterminer la concentration finale dans le plastique.


In [68]:
p.Lire()


Out[68]:
Experiment Thickness FoodSimulant Cpo K Dp RMSE k c4 c1
0 1 0.000146 EtOH95% 1157 52.0 1.950000e-13 1.5 0.000007 0.05 1045
1 2 0.000146 NaN 2440 35.0 1.970000e-13 3.0 0.000007 0.05 1069
2 3 0.000146 NaN 3152 24.0 2.000000e-13 2.6 0.000007 0.05 1094
3 4 0.000146 NaN 5950 0.5 2.000000e-13 2.3 0.000007 0.05 1119
4 5 0.000050 EtOH95% 2050 334.0 1.000000e-14 3.1 0.000007 0.05 1144
5 6 0.000146 NaN 2440 35.0 1.970000e-13 3.0 0.000007 0.05 1169
6 7 0.000190 NaN 2878 34.0 2.000000e-13 4.6 0.000007 0.05 1194
7 8 0.000050 EtOH10% 2050 1.0 2.000000e-13 1.0 0.000007 0.05 1219
8 9 0.000146 NaN 2440 1.0 2.000000e-13 1.0 0.000007 0.05 1244
9 10 0.000190 NaN 2878 1.0 2.000000e-13 1.0 0.000007 0.05 1269

Calcul de c2

Ce calcul nous permet donc d'obtenir les valeurs de la concentration finale dans le plastique et donc de déterminer l'efficacité du procédé.


In [69]:
p.calcul()


0    3.090616e-06
1    6.584658e-06
2    8.635616e-06
3    1.630137e-05
4    8.200000e-07
5    6.584658e-06
6    6.058947e-06
7    1.640000e-05
8    6.684932e-06
9    6.058947e-06
Name: j1, dtype: float64
Out[69]:
0    1.11551
1    1.05422
2    1.04134
3     1.0219
4    1.43537
5    1.05422
6    1.05892
7    1.02177
8     1.0534
9    1.05892
dtype: object

Graphique : f(Dp) = Cpo


In [70]:
p.Graphique()


Graphique : f(Dp) = c2


In [71]:
p.Graphique2()


Graphique : f(Cpo) = c2


In [72]:
p.Graphique3()


Grapgique : f(Epaisseur) = c2


In [73]:
p.Graphique4()



In [74]:
p.Graphique5()


Nomenclature

Bibliographie