Commencer par enregistrer cette feuille avec votre nom avant de commencer les modifications du code. Vous devrez ensuite sauvegarder régulièrement.
Ce code permet de traiter les résultats du TP d'ultrafiltration de L3 PPC que vous pouvez trouver en vidéo et sous forme de résultats bruts (dans la section Travail pratique virtuel) :
Le code n'est pas complet. Vous devrez rajouter ou modifier les lignes de code après les commentaires apparaissant en MAJUSCULES afin de rajouter les données expérimentales et certaines lignes de code manquantes XXXXX. Vous devrez aussi compléter les zones de commentaires avec une analyse des résultats.
La loi de filtration issue de la loi de Darcy decrivant la mécanique des fluides dans un milieu poreux permet de déterminer la perméabilité de la membrane, $L_p$, ou la resistance hydraulique de la membrane, $R_m$ : $$J=L_p TMP=\frac{TMP}{\mu R_m}$$ où $J$ est le flux de perméation $TMP$ est la pression transmembranaire et $\mu$ est la viscosité de l'eau (le fluide qui circule dans les pores de la membrane).
le code permet de :
import numpy as np
import matplotlib.pyplot as plt
#ENTRER dans les tableaux les valeurs de pression transmembranaire
PTM_bar_alim=np.array([0,2])
PTM_bar_ret=np.array([0,2])
PTM = 1e5*(PTM_bar_alim + PTM_bar_ret)/2 #calcul de la PTM en Pa
#ENTRER dans le tableaux vos valeurs de volume en ml
V=np.array([0,2])
#ENTRER dans le tableau les valeurs de temps en s correspondantes
t=np.array([1,105])
#ECRIRE les équations permettant de calculer le débit de permeation, Q, puis le flux de permeation, J
Q= #m3/s
S= #cm2
J= #m/s
#Vérification des valeurs
print('Pression transmembranaire en Pa')
print(PTM)
print('Flux de permation en m/s')
print(J)
plt.plot(PTM, J, marker='x')
plt.title('Flux de permeation, J, en fonction de la pression transmembranaire, PTM')
plt.xlabel('PTM (Pa)')
plt.ylabel('J (m/s)')
#regression lineaire pour la determination de la resistance hydraulique
reglin_perm= np.polyfit(PTM,J,1)
pente_perm=reglin_perm[0]
oo_perm=reglin_perm[1]
plt.plot(PTM, pente_perm*PTM+oo_perm, 'g--')
mu=0.001 #Pa.s ou kg m-1 s-1
Rm=1/(mu*pente_perm) #ENTRER ICI LA RELATION POUR CALCULER Rm
print('Permeabilité de la membrane, Lp=', pente_perm*1000*3600*1e5,' L/(h.m2.bar)')
print('Resistance hydraulique de la membrane, Rm=', Rm,'DONNER L UNITE')
#CALCULER ET FAIRE ECRIRE LA VALEUR DU FLUX DE PERMEATION POUR UNE PRESSION DE 2 BAR POUR DE L'EAU LIQUIDE A 0°C (données wikipedia)
#VOUS POURRIEZ EGALEMENT FAIRE UNE PARTIE DE CODE PERMETTANT DE CALCULER LE FLUX POUR (données sur Techniques de l'Ingénieur J 2 790v2 – 3)
File "<ipython-input-1-efd4e9b3242a>", line 16 Q= #m3/s ^ SyntaxError: invalid syntax
Cette partie permet de rentrer les mesures expérimentales de la filtration des solutions de PVP concentrées à 2, 5 et 10 g/L puis de réaliser des calculs pour au final déterminer la concentration à la membrane ainsi que le coefficient de transfert de matière.
Trois équations sont utilisées pour décrire l'impact de l'accumulation de matière à la membrane, $c_m$, sur la productivité du procédé, $J$
où $c_0$ est la concentration de la solution, $c_p$ est la concentration dans le perméat, $J$ est le flux de perméation et $D$ est le coefficient de diffusion. A noter que $D/\delta$ est aussi le coefficient de transfert de matière, $k$ et vous reconnaîtrez peut-être le Péclet sous le visage de $\frac{J\delta}{D}$ !
A MODIFIER où $\Delta\Pi$ est la différence de pression osmotique $\Pi(c_m)-\Pi(c_p)$
ECRIRE ICI L'EQUATION ET LA DESCRIPTION DU PARAMETRE (EN SUIVANT LES EXEMPLES CI-DESSUS)
le code permet de :
from scipy.optimize import fsolve
## Détermination de la pression osmotique et du coefficient de transfert de matière
#ENTRER dans le tableaux vos valeurs de PTM
PTM_bar_2gl=np.array()
PTM_bar_5gl=np.array()
PTM_bar_10gl=np.array()
#ENTRER dans le tableaux vos valeurs de volume en ml
V_2gl=np.array
V_5gl=
V_10gl=
#ENTRER dans le tableau les valeurs de temps en s correspondantes
t_2gl=
t_5gl=
t_10gl=
#ENTRER LES FORMULES POUR CALCULER LES PTM en Pa
PTM_2gl=
#ENTRER LES FORMULES POUR CALCULER LES FLUX DE PERMEATION
J_2gl= #m/s
J_5gl= #m/s
J_10gl= #m/s
print('J 2gl',J_2gl)
print('J 5gl',J_5gl)
print('J 10gl',J_10gl)
#Tracé des flux de permeation
plt.plot(PTM, J, marker='x', label='Eau')
plt.plot(PTM_2gl, J_2gl, marker='x', color='r', label='2 g/L')
plt.plot(PTM_5gl, J_5gl, marker='x', color='g', label='5 g/L')
plt.plot(PTM_10gl, J_10gl, marker='x', color='b', label='10 g/L')
plt.legend(loc='best')
plt.title('Flux de permeation, J, en fonction de la pression transmembranaire, PTM')
plt.xlabel('PTM (Pa)')
plt.ylabel('J (m/s)')
plt.show()
#ENTRER lES EQUATIONS POUR LE CALCUL DE LA PRESSION OSMOTIQUE (SELON eq. 2)
Pi_cm_2gl=
Pi_cm_5gl=
Pi_cm_10gl=
#vous pouvez imprimer les valeurs pour vérifier vos calculs
#print ('Pi_2gl',Pi_cm_2gl)
#Fonction devant être égale à zero pour trouver la concentration en PVP, c, correspondant à une pression osmotique, pi
def pic(c,pi):
c=c/1000. #concentration en g/cm3
pic=0.210*c+16.05*c*c+163.8*c**3 #ENTRER la formule de pression osmotique en bar
return pic*1e5-pi #pression osmotique en Pa
#Calcul des concentrations à la membrane, cm, à partir de la pression osmotique (equation 3)
#Définition du tableau de valeur pour cm à 2g/L
cm_2gl=np.zeros(len(PTM_2gl))
#Résolution de l'équation 3 pour définir cm à partir de pi(cm) pour chaques valeurs de pi(cm)
for i in range(len(PTM_2gl)):
cm_2gl[i]=fsolve(pic,2, args=Pi_cm_2gl[i])
print ('cm_2gl',cm_2gl)
#idem pour les valeurs à 5g/L
cm_5gl=np.zeros(len(PTM_5gl))
for i in range(len(PTM_5gl)):
cm_5gl[i]=fsolve(pic,2, args=Pi_cm_5gl[i])
print ('cm_5gl',cm_5gl)
#idem pour les valeurs à 10g/L
cm_10gl=np.zeros(len(PTM_10gl))
for i in range(len(PTM_10gl)):
cm_10gl[i]=fsolve(pic,2, args=Pi_cm_10gl[i])
print ('cm_2gl',cm_10gl)
#Tracé des concentrations à la membrane
plt.plot(PTM_2gl, cm_2gl, marker='x', color='r', label='2 g/L')
plt.plot(PTM_5gl, cm_5gl, marker='x', color='g', label='5 g/L')
plt.plot(PTM_10gl, cm_10gl, marker='x', color='b', label='10 g/L')
plt.title('Concentration à la membrane, cm, en fonction de la pression transmembranaire, PTM')
plt.xlabel('PTM (Pa)')
plt.ylabel('cm (g/L)')
plt.legend(loc='best')
plt.show()
#ENTRER L'EQUATION POUR LE CALCUL DU COEFFICIENT DE MATIERE (selon eq.1)
k_2gl=
k_5gl=
k_10gl=
print ('k_2gl',k_2gl)
print ('k_5gl',k_5gl)
print ('k_10gl',k_10gl)
print ('Coefficient de transfert de matière moyen pour 2g/L', np.mean (k_2gl[3:4]))
print ('Coefficient de transfert de matière moyen pour 5g/L', np.mean (k_5gl[2:4]))
print ('Coefficient de transfert de matière moyen pour 10g/L', np.mean (k_10gl[2:4]))
J 2gl [4.71698113e-07 1.63280116e-06 3.03983229e-06 3.51819035e-06 3.64849369e-06] J 5gl [4.71698113e-07 1.57232704e-06 2.71030960e-06 2.90275762e-06 2.96422312e-06] J 10gl [4.71698113e-07 1.52840729e-06 2.35849057e-06 2.42364224e-06 2.46216048e-06]
cm_2gl [ 13.96232239 41.43453414 66.85244206 117.7175232 153.1772377 ] cm_5gl [ 23.96645976 46.16733924 84.77802392 131.180539 162.78729478] cm_2gl [ 30.81634939 59.14424525 99.06129388 141.42828436 171.44411748]
k_2gl [2.42741050e-07 5.38706256e-07 8.66211800e-07 8.63329785e-07 8.40967388e-07] k_5gl [3.00978093e-07 7.07352215e-07 9.57504094e-07 8.88471452e-07 8.51052997e-07] k_10gl [4.19115735e-07 8.59914639e-07 1.02849215e-06 9.14855511e-07 8.66447726e-07] Coefficient de transfert de matière moyen pour 2g/L 8.63329785069308e-07 Coefficient de transfert de matière moyen pour 5g/L 9.229877733933571e-07 Coefficient de transfert de matière moyen pour 10g/L 9.716738288471353e-07
Commentaires :
hlhflqsdflqkh
On peut noter sur les expériences précédentes que les valeurs de flux de perméation semblent atteindre un plateau quand la pression est élevée. Ce flux, qu'on appelle flux limite, $J_{lim}$, est atteind car la concentration en PVP atteind une concentration tellement élevée qu'un gel est formé : la concentration de gel, $c_g$. La loi décrivant l'accumulation de matière à la membrane s'écrit alors : $$\frac{c_g-c_p}{c_0-c_p}=e^{\frac{J_{lim}\delta}{D}}$$
le code ci-dessous permet de :
#Rentrer dans le tableaux vos valeurs de concentration, C0
c0=np.array([2,5,10]) #valeurs en g/L
lnc0=np.log(c0)
#Rentrer dans le tableaux vos valeurs de pression transmembranaire
Jlim=np.array([3.64e-06,2.96422312e-06,2.46216048e-06]) #valeurs en m/s
#regression lineaire pour la determination de la resistance hydraulique
reglin_Jlim= np.polyfit(lnc0,Jlim,1)
pente_Jlim=reglin_Jlim[0]
oo_Jlim=reglin_Jlim[1]
plt.plot(lnc0, Jlim, 'x')
plt.plot(lnc0, pente_Jlim*lnc0+oo_Jlim, 'r--')
plt.title('Flux limite, Jlim, en fonction du log de la concentration')
plt.xlabel('PTM (Pa)')
plt.ylabel('ln(c0) (-)')
#INSERER L'EQUATION POUR CALCULER LA CONCENTRATION DE GEL
print('Coefficient de transfert de matière, k=',-pente_Jlim, 'm/s')
cg=np.exp(-oo_Jlim/pente_Jlim)
print('La concentration de gel est de ', cg, 'g/L')
Coefficient de transfert de matière, k= 7.321298781538278e-07 m/s La concentration de gel est de 287.9867027594029 g/L
Commentaires :
#Bonus +++
#vous pourriez ici calculer les flux de permeations que nous devrions obtenir si le débit de circulation était multiplié par 2