Dopo aver visto alcune applicazioni di chimica e ingegneria (ad esempio BOD, COD, ThOD in C, PCS in COBOL, irraggiamento termico in Python e irraggiamento termico in COBOL, vediamo ora un altro caso interessante: calcolo del volume di un reattore di digestione anaerobica per rifiuti organici. Quindi a differenza di un impianto di compostaggio (reazioni aerobiche, presenza di ossigeno) qui i processi sono anaerobici e trovano applicazione prevalentemente in ambito industriale.
Per completezza (o anche divertimento?) è stato scritto il codice sia in Python (con la possibilità di mostrare anche il grafico, tramite libreria Matplotlib) e in COBOL. Nel caso di COBOL abbiamo considerato un risultato fissato in base ad una popolazione di 105 abitanti (NB: si parla di Abitante Equivalente, nel caso es. delle industrie occorre calcolare una stima di questi valori), mentre nel caso di Python la formula del dimensionamento parte da zero fino ad un milione (106) di abitanti, per mostrare l'andamento grafico (che nel caso in esame cresce semplicemente in modo lineare).
I dati di partenza sono:
- 0,2 kg/ab/d di rifiuto organico
- umidità 70%
- frazione volatile 90%
- carico Cv del reattore 4 kgSV/m3/d
Riportiamo il codice Python:
import numpy as np
from matplotlib import pyplot as plt
Q=0.2 #kg/ab/d
Nmax=10**6 #abitanti
U=0.7 #70%
fv=0.9 #SV/ST
Cv=4 #kg SV/m3/d
ST=(1-U)*Q
SV=0.9*ST
i=np.linspace(0,Nmax,100)
plt.figure()
for i in range(100):
V=SV/Cv*Nmax/100*i
plt.plot(i*Nmax/100,V,'o')
plt.xlabel('Numero abitanti [in milioni]')
plt.ylabel('Volume del reattore [m^3]')
plt.title('Dimensionamento reattore anaerobico:\n0.2kg/ab/d - U=70% - fv=0.9 - Cv=4kgSV/m3/d')
plt.show()
Riportiamo il codice COBOL:
IDENTIFICATION DIVISION.
PROGRAM-ID. REATTORE-ANAEROBICO.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 Q PIC 99V99 VALUE 0.2.
01 U PIC 9V99 VALUE 0.7.
01 fs PIC 9V99.
01 fv PIC 9V99 VALUE 0.9.
01 Cv PIC 99V99 VALUE 4.
01 ST PIC 99V99.
01 SV PIC 99V99.
01 V PIC 9(6)V9(2).
01 AE PIC 9(7) VALUE 100000.
PROCEDURE DIVISION.
DISPLAY 'Dimensionamento reattore anaerobico con i dati di partenza:'.
DISPLAY '0.2 kg/AE/d - U=70% - fv=90% - Cv=4kgSV/m^3/d - N=100000AE'.
SUBTRACT U FROM 1 GIVING fs.
MULTIPLY fs BY Q GIVING ST.
MULTIPLY 0.9 BY ST GIVING SV.
MULTIPLY SV BY AE GIVING V.
DIVIDE 4 INTO V GIVING V.
DISPLAY 'Volume reattore: ' V ' m^3'.
STOP RUN.
Infine il grafico, con l'aggiunta anche di due immagini reali.
