Ho creato questo programmino in Python, per risolvere un caso pratico: i vegetali, tramite la superficie verde, operano la fotosintesi clorofilliana che converte CO2 in O2 (anidride carbonica in ossigeno). Secondo i dati presenti in letteratura, in media (si parla ovviamente di media) 1 mq di superficie verde converte 1 g di CO2 in 24 ore.
Quindi ho impostato il seguente problema:
- stanza chiusa, a forma di cubo 5x5x5m, quindi superficie di base 25 m2, volume totale 100 m3
- la superficie di base di 25 m2 è superficie verde, erba
- la CO2 presente nell'aria è mediamente 0,035% (mentre abbiamo 21% ossigeno, 78% azoto, ecc)
- in questo caso di studio supponiamo un elevato inquinamento, nella stanza abbiamo il 4% di CO2
- supponiamo miscelazione istantanea quindi diffusione omogenea in tutta la stanza (dalle statistiche, D (CO2) ≈ 0,5 m2/s quindi enormemente maggiore rispetto al tasso di conversione 1g /m2d)
- m (CO2) = 0,04 * 1,97 * 100 * 1000 = 7880 grammi di CO2 totali nella stanza (7880/100 = 78,8 g/m3), dove 1,97 kg/m3 è la densità della CO2
- equazione differenziale: dm / dt = - k * m, quindi m(t) = m0 * e-kt, determino i coefficienti:
- m0 = m (CO2), il valore iniziale
- k = -ln(1-S/mCO2), dato che il primo giorno, concentrazione tale da poter rimuovere 25 g di CO2 (1 g per m2 di superficie verde, abbiamo 25 m2 di superficie); quindi ricaviamo k da: m0-25 = m0 * e- k * 1, t = 1 giorno
- man mano che la concentrazione diminuisce, l'andamento quindi è quello di un esponenziale decrescente; sarebbe infatti sbagliato trovare il tempo finale tramite 7880/25 poiché si tratta di diffusione e quindi avremo una concentrazione sempre inferiore ma non zero
Vediamo ora il codice Python, anche con i vari commenti per una migliore comprensione:
import numpy as np
from matplotlib import pyplot as plt
V=100 #m^3
S=25 #m^2
C0=0.04 #[CO2] 4%, percentuali in volume
#21% O2, 0,035% CO2 in condizioni standard
# 0,035/100 * 1,97 * 1000 = 0,069 g/m^3 CO2
# 1g/mq*d --> grammi/mq*giorno conversione CO2-O2
mCO2=1.97*C0*V*1000 #g
k=-1.0*np.log(1-S/mCO2) #g/d
plt.figure()
for time in range(12*5): # andamento in 5 anni
if mCO2/V*np.exp(-k*time*30)>0.1/100*1.97*1000: #1000 ppm, limite consigliato
color="red"
else:
color="green"
plt.plot(time,mCO2/V*np.exp(-k*time*30),'o',color=color) #andamento mensile
plt.title("Tasso di conversione CO2 - O2 ad opera della superficie verde\nV=100mc S=25 mq, [CO2] iniziale = 4%, limite = 0.1% = 1000 ppm")
plt.xlabel("numero di mesi")
plt.ylabel("g/mc CO2")
plt.show()
Ora un'immagine che mostra l'andamento, nel corso del tempo (in mesi!!). In rosso quando la concentrazione presente è superiore alla soglia 1000 ppm considerata limite accettabile per la salute (ovvero 0,1%, siamo partiti dal 4% e la concentrazione normalmente presente in aria, come media è 0,035%), in verde quando tale concentrazione è inferiore. Si nota chiaramente che le piante e la superificie verde in generale, assorbono molto lentamente la CO2, purtroppo, sebbene siano importantissime, in questo caso di studio prima di avere una concentrazione accettabile nella stanza, occorre attendere circa tre anni (quasi 40 mesi)!
Con questi dati, vediamo in modo riassuntivo alcuni valori: anziché estrapolarli visivamente dal grafico, nel ciclo occorre inserire il seguente codice: print("mese",time,":",mCO2/V*np.exp(-k*time*30), "|", np.exp(-k*time*30)*100,"%")
- mese 0 (inizio): 78,8 g | 100%
- mese 1: 71,6 g | 90,9%
- mese 6: 44,5 g | 56,4%
- mese 12 (un anno): 25,1 g | 31,9%
- mese 24 (due anni): 8 g | 10,1%
- mese 36 (tre anni): 2,5 g | 3,2%