PROGRAMMI MATLAB
OSCILLAZIONI DEL FLUSSO
Nelle pagine che seguono vengono riportati i programmi MatLab che sono stati
utilizzati nel corso della modellizzazione del circuito per il calcolo della frequenza
naturale delle oscillazioni del flusso, ed in particolare:
1. Programma usato per la caratterizzazione della valvola per il singolo valore
della pressione dell’olio considerato. Si fornisce un esempio a titolo
indicativo.
%Costruzione vettore DELTAp(valvola) - Q %30 bar clear all; load A.txt; load B.txt; load C.txt; load D.txt; load E.txt; load F.txt; load G.txt; load H.txt; Mean1 = mean(A,1); Mean2 = mean(B,1); Mean3 = mean(C,1); Mean4 = mean(D,1); Mean5 = mean(E,1); Mean6 = mean(F,1); Mean7 = mean(G,1); Mean8 = mean(H,1); Deltap(1) = Mean1(2); Deltap(2) = Mean2(2); Deltap(3) = Mean3(2); Deltap(4) = Mean4(2); Deltap(5) = Mean5(2); Deltap(6) = Mean6(2); Deltap(7) = Mean7(2); Deltap(8) = Mean8(2);
%Inizializzazione delle dimensioni significative (mm) D_s = 150; %Diametro del condotto si mandata
A_1 = (150/2)^2*pi; %Area della sezione del condotto di mandata l_s = 2000; %Lunghezza del condotto di mandata
D_d = 100; %Diametro del condotto di scarico
A_2 = (100/2)^2*pi; %Area della sezione del condotto di scarico l_d = 3000; %Lunghezza del condotto di scarico
l_r1 = 50; %Lunghezza del raddrizzatore di flusso sulla mandata l_r2 = 50; %Lunghezza del raddrizzatore di flusso sullo scarico l_v = 1000; %Lunghezza della silent throttle valve
r_t1 = 81; %Raggio dell'induttore (nel caso di falsa girante) eps_p = 0.2; %Valore della rugosità superficiale dei tubi eps_r = 0.1; %Valore della rugosità superficiale dell'honeycomb %nei raddrizzatori
Qf = [3.41 5.33 7.27 9.14 10.99 12.80 14.60 16.23]; %Calcolo del numero di Reynolds
ni_H2O = 10; %Viscosità dell'acqua supposta costante [mm^2/s] Re_s = (4/(pi*D_s*ni_H2O))*Qf; %mandata
Re_d = (4/(pi*D_d*ni_H2O))*Qf; %scarico
Re_r1 = (Qf/A_1)*5/ni_H2O; %raddrizzatore 1 con tubini da 5 mm Re_r2 = (Qf/A_2)*5/ni_H2O; %raddrizzatore 2 con tubini da 5 mm %Calcolo dei valori del coefficiente di attrito per i vari componenti %Si è fatto uso dell'equazione di Churchill per tubi
Re = Re_s; for i=1:length(Qf) eps_D(i) = eps_p/D_s; end; A=(2.457*log(1./((7./Re).^0.9+0.27*(eps_D)))).^16; B=(37530./Re).^16; f_s = 8*((8./Re).^12+(1./(A+B).^(3/2))).^(1/12); Re = Re_d; for i=1:length(Qf) eps_D = eps_p/D_d; end; A=(2.457*log(1./((7./Re).^0.9+0.27*(eps_D)))).^16; B=(37530./Re).^16; f_d = 8*((8./Re).^12+(1./(A+B).^(3/2))).^(1/12); Re = Re_r1; for i=1:length(Qf) eps_D = eps_r/5; end; A=(2.457*log(1./((7./Re).^0.9+0.27*(eps_D)))).^16; B=(37530./Re).^16; f_r1 = 8*((8./Re).^12+(1./(A+B).^(3/2))).^(1/12); Re = Re_r2; for i=1:length(Qf) eps_D = eps_r/5; end; A=(2.457*log(1./((7./Re).^0.9+0.27*(eps_D)))).^16; B=(37530./Re).^16; f_r2 = 8*((8./Re).^12+(1./(A+B).^(3/2))).^(1/12);
K_s = f_s*(l_s/D_s+30); %30 è in entrambi i casi il valore del diametro K_d = f_d*(l_d/D_d+90); %equivalente per un raccordo a gomito di 90° %Nel condotto di scarico ci sono 3 gomiti
K_r1 = f_r1*(l_r1/5); K_r2 = f_r2*(l_r2/5); %Calcolo di K_v DeltaH_d = 0.5*K_d.*(Qf./A_2).^2; DeltaH_s = 0.5*K_s.*(Qf./A_1).^2; DeltaH_r1 = 0.5*K_r1.*(Qf./A_1).^2; DeltaH_r2 = 0.5*K_r2.*(Qf./A_2).^2;
DeltaH_b1 = 0.5*0.5*(Qf./A_1).^2; %Perdite dovute all'uscita dal bollitore DeltaH_b2 = 0.5*1*(Qf./A_2).^2; %Perdite dovute all'ingresso nel bollitore
DeltaH_v = Deltap-DeltaH_d-DeltaH_s-DeltaH_r1-DeltaH_r2-DeltaH_b1-DeltaH_b2; LOGDELTAp = log(Deltap);
LOGQf = log(Qf); N = polyfit(LOGQf,LOGDELTAp,1); loglog (Qf,Deltap); xlabel('Portata (l/s)'); ylabel('DELTAp (atm)'); grid on;
save 30.txt N -ascii -tabs;
2. Modello numerico del circuito e calcolo della frequenza naturale delle
oscillazioni del flusso. Si fornisce un esempio a titolo indicativo.
%Script per il calcolo della frequenza naturale del circuito clear all;
%Inizializzazione delle dimensioni significative (mm) D_s = 150; %Diametro del condotto si mandata
A_1 = (150/2)^2*pi; %Area della sezione del condotto di mandata l_s = 2000; %Lunghezza del condotto di mandata
D_d = 100; %Diametro del condotto di scarico
A_2 = (100/2)^2*pi; %Area della sezione del condotto di scarico l_d = 3000; %Lunghezza del condotto di scarico
l_r1 = 50; %Lunghezza del raddrizzatore di flusso sulla mandata l_r2 = 50; %Lunghezza del raddrizzatore di flusso sullo scarico l_v = 1000; %Lunghezza della silent throttle valve
r_t1 = 81; %Raggio dell'induttore (nel caso di falsa girante) eps_p = 0.2; %Valore della rugosità superficiale dei tubi eps_r = 0.1; %Valore della rugosità superficiale dell'honeycomb %nei raddrizzatori %Input: OMEGA = 2000; Qf = [3 6 10 12 14 16 17.5 18.5 20 21 22.5]; PERC = Qf./(max(Qf)); L_D_v = -21.5.*PERC+36.5; D_v = 0.6.*l_v./L_D_v; A_v = (pi/4).*D_v.^2; Qf = Qf.*1.0e6; %Conversione a mm^3/s
OMEGA = OMEGA*2*pi/60; %Conversione a rad/sec FI = Qf./(pi*r_t1^3*OMEGA);
%Calcolo di PSI e della derivata di PSI rispetto a PHI (NOTA:best fit!)
FI_vett = [0.067 0.065 0.064 0.063 0.062 0.06 0.059 0.057 0.055 0.052 0.05 0.048 0.046 0.044 0.042 0.039 0.038];
FI_vett = [FI_vett 0.036 0.035 0.033 0.032 0.031 0.029 0.028 0.026 0.025 0.023 0.022 0.02 0.019 0.018 0.016 0.015];
FI_vett = [FI_vett 0.013 0.012 0.011 0.01 9.266e-3 8.389e-3 7.207e-3 6.406e-3 5.567e-3 4.766e-3 4.024e-3 3.356e-3];
FI_vett = [FI_vett 2.631e-3 1.907e-3 1.601e-3 1.335e-3 1.068e-3];
PSI_vett = [0.125 0.126 0.125 0.126 0.128 0.129 0.129 0.131 0.134 0.135 0.136 0.139 0.138 0.139 0.14 0.139]; PSI_vett = [PSI_vett 0.142 0.139 0.139 0.136 0.143 0.143 0.143 0.145 0.142 0.142 0.14 0.141 0.138 0.144 0.137]; PSI_vett = [PSI_vett 0.141 0.137 0.139 0.138 0.138 0.138 0.137 0.133 0.134 0.138 0.137 0.137 0.14 0.141 0.142 0.142 0.142 0.144 0.146]; N = polyfit(FI_vett,PSI_vett,5); PSI = polyval(N,FI); if min(PSI)<0
disp('ATTENZIONE-SI STANNO CONSIDERANDO VALORI FUORI DALL''INVILUPPO FI-PSI DELL''INDUTTORE!!');
end;
dPSI_dFI = (5*N(1)*FI.^4+4*N(2)*FI.^3+3*N(3)*FI.^2+2*N(4)*FI+N(5)); %Calcolo del numero di Reynolds
ni_H2O = 10; %Viscosità dell'acqua supposta costante [mm^2/s] Re_s = (4/(pi*D_s*ni_H2O))*Qf; %mandata
Re_d = (4/(pi*D_d*ni_H2O))*Qf; %scarico
Re_r1 = (Qf/A_1)*5/ni_H2O; %raddrizzatore 1 con tubini da 5 mm Re_r2 = (Qf/A_2)*5/ni_H2O; %raddrizzatore 2 con tubini da 5 mm %Calcolo dei valori del coefficiente di attrito per i vari componenti %Si è fatto uso dell'equazione di Churchill per tubi
Re = Re_s; for i=1:length(Qf) eps_D(i) = eps_p/D_s; end; A=(2.457*log(1./((7./Re).^0.9+0.27*(eps_D)))).^16; B=(37530./Re).^16; f_s = 8*((8./Re).^12+(1./(A+B).^(3/2))).^(1/12); Re = Re_d; for i=1:length(Qf) eps_D = eps_p/D_d; end; A=(2.457*log(1./((7./Re).^0.9+0.27*(eps_D)))).^16; B=(37530./Re).^16; f_d = 8*((8./Re).^12+(1./(A+B).^(3/2))).^(1/12); Re = Re_r1; for i=1:length(Qf) eps_D = eps_r/5; end; A=(2.457*log(1./((7./Re).^0.9+0.27*(eps_D)))).^16; B=(37530./Re).^16; f_r1 = 8*((8./Re).^12+(1./(A+B).^(3/2))).^(1/12);
Re = Re_r2; for i=1:length(Qf) eps_D = eps_r/5; end; A=(2.457*log(1./((7./Re).^0.9+0.27*(eps_D)))).^16; B=(37530./Re).^16; f_r2 = 8*((8./Re).^12+(1./(A+B).^(3/2))).^(1/12);
K_s = f_s*(l_s/D_s+30); %30 è in entrambi i casi il valore del diametro K_d = f_d*(l_d/D_d+90); %equivalente per un raccordo a gomito di 90° %Nel condotto di scarico ci sono 3 gomiti
K_r1 = f_r1*(l_r1/5); K_r2 = f_r2*(l_r2/5); %Calcolo di K_v DeltaH_p = PSI*(OMEGA*r_t1)^2; DeltaH_d = 0.5*K_d.*(Qf./A_2).^2; DeltaH_s = 0.5*K_s.*(Qf./A_1).^2; DeltaH_r1 = 0.5*K_r1.*(Qf./A_1).^2; DeltaH_r2 = 0.5*K_r2.*(Qf./A_2).^2;
DeltaH_b1 = 0.5*0.5*(Qf./A_1).^2; %Perdite dovute all'uscita dal bollitore DeltaH_b2 = 0.5*1*(Qf./A_2).^2; %Perdite dovute all'ingresso nel bollitore
DeltaH_v = DeltaH_p-DeltaH_d-DeltaH_s-DeltaH_r1-DeltaH_r2-DeltaH_b1-DeltaH_b2; K_v = DeltaH_v./(0.5*(Qf./A_v).^2);
if min(K_v)<0
disp('ATTENZIONE-PERDITE ECCESSIVE-(H_v<0!!)'); end;
%Calcolo delle resistenze e delle induttanze R_s = K_s.*(Qf./A_1^2); R_r1 = K_r1.*(Qf./A_1^2); R_b1 = 0.5*(Qf./A_1^2); R_d = K_d.*(Qf./A_2^2); R_r2 = K_r2.*(Qf./A_2^2); R_b2 = 1*(Qf./A_2^2); R_v = K_v.*(Qf./(A_v.^2)); R_p = -(OMEGA*r_t1)/(A_1)*(dPSI_dFI)+Qf.*(1/A_1^2-1/A_2^2); L_s = l_s/A_1; L_r1 = l_r1/A_1; L_d = l_d/A_2; L_r2 = l_r2/A_2; L_v = 0.6*l_v./A_v; omega = (R_s+R_r1+R_b1+R_d+R_r2+R_b2+R_v+R_p)./(L_s+L_r1+L_d+L_r2+L_v); %Output figure plot(FI,omega); axis([0 0.08 0 50]); title('Velocità di rotazione 2000rpm'); xlabel('Portata [PHI]'); ylabel('Frequenza naturale [Hz]');
disp('La frequenze naturali sono'); disp(omega); for i=1:length(Qf) A(1,i) = FI(i); A(2,i) = omega(i); end;