Giovedì, 23 Agosto 2018 18:46

Fattore di potenza F (INAIL R.2.A cap 2.3.1) e funzione interpolante

Scritto da
Vota questo articolo
(0 Voti)

Fattore di potenza F (INAIL R.2.A cap 2.3.1) e funzione interpolante

Premessa: la raccolta "R" INAIL (edz 2009), nel capitolo R.2.A "Dispositivi di sicurezza", nel paragrafo 2.3 "Dimensionamento della valvola di sicurezza" prescrive che:

2.3.1 Le valvole di sicurezza devono essere dimensionate in base alla seguente formula:

A = 0,005 Q F / 0,9 K in cui:

  • A = area della minima sezione trasversale netta dell’orifizio della valvola, in cm 2 ;
  • Q = capacità di scarico della valvola di sicurezza, espressa in kg/h di vapore:

    Q = P/0,58

    in cui:

    • P = potenza nominale del generatore, in kW;
  • F = fattore di pressione desunto dalla tabella 2 in funzione della pressione di scarico;
  • K = coefficiente di efflusso, desunto dal certificato di accettazione.

per cui l'area minima della sezione trasversale dell'orifizio della valvola (A), dipende anche da un fattore sperimentale (F) detto fattore di potenza, che è specificato in una tabella presente nel testo di norma. Per cui entrando nella tabella con la pressione di scarico p, si calcola F:

tabella p F

Al posto di utilizzare la tabella, è possibile definire una funzione polinomiale che approssimi l'andamento di F=F(p), valida nell'intervallo da 0.5 -> 12.5 bar, mediante il metodo dei minimi quadrati. Il grado della polinomiale verrà scelto in modo da approssimare il meglio possibile i dati in tabella. Al fine di verificare la qualità dell'approssimazione verrà calcolato il valore del residuo.

                               Importiamo le librerie sugli array (numpy) e sui grafici (matplotlib)
In [31]:
import numpy as np
import matplotlib.pyplot as plt

Memorizzo in 2 array i valori di della pressione (x) e del fattore di potenza (y)

In [32]:
p = np.array([0.50,0.60,0.70,0.80,0.90,1.00,1.10,1.20,1.30,1.40,1.50,1.6,1.7,1.8,1.9,2,2.1,2.2,2.3,2.4,2.5,2.6,2.7,2.8,2.9,3,3.1,3.2,3.3,3.4,3.5,3.6,3.7,3.8,3.9,4,4.2,4.4,4.6,4.8,5,5.2,5.4,5.6,5.8,6,6.2,6.4,6.6,6.8,7,7.2,7.4,7.6,7.8,8.0,8.2,8.4,8.6,8.8,9,9.5,10,10.5,11,11.5,12,12.5])

F = np.array([ 2.47,2.32,2.19,2.07,1.97,1.87,1.79,1.71,1.63,1.57,1.51,1.45,1.4,1.35,1.31,1.26,1.22,1.19,1.15,1.12,1.09,1.06,1.03,1.01,0.98,0.96,0.93,0.91,0.89,0.87,0.85,0.84,0.82,0.8,0.79,0.77,0.74,0.71,0.69,0.67,0.65,0.62,0.61,0.59,0.57,0.56,0.54,0.53,0.51,0.5,0.49,0.48,0.46,0.45,0.44,0.43,0.43,0.42,0.41,0.4,0.39,0.37,0.36,0.34,0.32,0.32,0.3,0.29])

Calcolo della polinomiale di 8° grado del tipo: $F(p)=z_8*p^8+z_7*p^7+.......+z_1*p+k$

In [33]:
(z, residuals, rank, singular_values, rcond) = np.polyfit(p, F, 8, full=True)

Stampo i coefficienti z della polinomiale (ordinati da $z_8......z_1$,k)

In [34]:
print(z)
[ 4.71377043e-07 -2.69350147e-05  6.50183879e-04 -8.65630673e-03
  6.97687217e-02 -3.53222307e-01  1.13897191e+00 -2.37497803e+00
  3.40349302e+00]

verifico i residui per valutare numericamente la qualità dell'approssimazione

In [35]:
print(residuals)
[0.00105021]

Definiamo la funzione polinomiale avente per coefficiente i valori di z

In [36]:
Finterp = np.poly1d(z)

Stampo su uno stesso grafico i valori iniziali di x e y, e la funzione polinomiale interpolante, valutata per ogni x -> p(x)

In [37]:
plt.plot(p, F, '.', p, Finterp(p), '-');
plt.xlabel("fattore di potenza F");
plt.ylabel("pressione [bar]");
plt.show();

Anche dal grafico si può ben apprezzare l'andamento della approssimazione della polinomiale rispetto ai punti sperimentali

Letto 684 volte Ultima modifica il Sabato, 25 Agosto 2018 19:00
ing. Carmine Manfredi

L'ing. Carmine Manfredi è un libero professionista e si occupa nella propria attività di Termotecnica, Fonti Rinnovabili & Efficienza Energetica nell'ambito civile ed industriale.

 

plus.google.com/100627219583036649758?rel=author

Lascia un commento

Assicurati di aver digitato tutte le informazioni richieste, evidenziate da un asterisco (*). Non è consentito codice HTML.