597
In questa appendice si riportano i programmi matlab relativi al capitolo 9 per la caratterizzazione delle instabilità in regime non cavitante e cavitante del DAPAMITO3. Per evitare di appesantire troppo questa parte si riporta per ogni serie di programmi matlab un solo esempio, essendo quelli esclusi identici in tutto e per tutto a quelli riportati, fuorché per i dati impiegati.
1. Si presenta il programma matlab per il calcolo delle instabilità, con il quale si graficano i waterfall plots e i waterfall plots filtrati dal passaggio delle pale dell’induttore e si possono individuare le instabilità presenti nei waterfall plots, fissandosi su precisi valori di ߪ. Infine il listato presenta anche la possibilità di calcolare le ampiezze vere in Pa dei fenomeni evidenziati. La matrice massimo impiegata in questo listato sarà successivamente presentato.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Calcolo dell'autospettro, cross-spettro e coerenza in forma di waterfall plot
% Isolamento dello spettro per un dato sigma e calcolo della fase e della coerenza
% corrispondente alla frequenza analizzata
%
% Renzo Testa 2003 – Lucio Torre 2004- Giovanni Pace 2009
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
clear all close all clc
% Dati geometrici dell'induttore e velocità angolari dello stesso durante
% la prova
Rt=0.081; % [m] raggio induttore
% Clearance radiale
cle=0.002 ; % in m
% Area frontale di passaggio dell'acqua Area=pi*(Rt)^2 ; % in m^2
% Velocità angolare dell'induttore
Om=3000 ; % in rpm
% Velocità angolare dell'induttore convertita in radianti al secondo Omega=(Om*2*pi)/60 ; % in rad/s
% Caricamento dei dati di pressione e di portata del flusso dati1_mat=load ('prova_phi_0_062_inst.txt');
% Caricamento dati del flussimetro misurati mediante multimetro di precisione
% e conversione dei dati in l/s, concordemente alle unitò di misura
% impiegate
Corrente=xlsread('Q_32_49.xls'); % la portata è letta come una corrente elettrica dal multimetro
PortataVol=3125.*Corrente-12.5; % in l/s
598 One(1,1:200)=1;
PVol=PortataVol*One;
VettPVol=reshape(PVol',1,240000);
p_dati=[];
Dp_dati=[];
psi_bar=0.0689476; % fattore di conversione 1 psi =0.0689476 bar % (i trasduttori PCB a differenza di quelli assoluti
% e differenziali impiegati misurano le pressioni in % psi anziché in bar)
% SCELTA DEI TRASDUTTORI
p_dati=1e005*dati1_mat(:,1); % [Pa]
PCB1_dati=psi_bar*1e005*dati1_mat(:,9); % [Pa] ad ogni colonna corrisponde PCB2_dati=psi_bar*1e005*dati1_mat(:,7); % [Pa] un trasduttore
% Dati relativi all'analisi dei valori di pressione dei PCB
n_spettri=4000 ; % numero di punti utilizzati per il calcolo % di ciascuno spettro; 1000 punti corrispondono % a 1 sec; deve essere tale che dim_p_dati/n_spettri % sia un numero intero
dt=1/1000; % intervallo di campionamento in secondi N_av_spec=2; % Numero di medie per ciascuno spettro dim1=size(p_dati);
size(Dp_dati);
dim_p_dati=dim1(1);
%CALCOLO DENSITÀ ACQUA IN FUNZIONE DELLA TEMPERATURA
% Temperatura media dell'acqua durante la prova
T_1=14.95 ; % Tempratura in °C dell'acqua T=T_1+273.15 ; % in K
% Densità dell'acqua alla temperatura media della prova rho=density(T); % in kg/m^3
% Pressione di vapore dell'acqua alla temperatura media della prova p_v=pressione_vapore(T_1) ; % in Pascal
%CALCOLO SPETTRI
N_spettri=dim_p_dati/n_spettri; % numero di spettri p_vett_spettri=[]; p_vett_PCB1=[]; p_vett_PCB2=[];
for i=1:N_spettri
p1=p_dati((n_spettri*(i-1)+1):(n_spettri*(i-1)+n_spettri));
p_vett_spettri=[p_vett_spettri p1];
p1=PCB1_dati((n_spettri*(i-1)+1):(n_spettri*(i-1)+n_spettri));
p_vett_PCB1=[p_vett_PCB1 p1];
p1=PCB2_dati((n_spettri*(i-1)+1):(n_spettri*(i-1)+n_spettri));
p_vett_PCB2=[p_vett_PCB2 p1];
end;
size(p_vett_spettri); % sono matrici (n_spettri) righe e (dim_17_5/2) size(p_vett_PCB1); % colonne
%CALCOLO DEI VALORI MEDI DI SIGMA
p_spettri_mean=[];
p_spettri_mean=mean(p_vett_spettri);
sigma_spettri=[];
sigma_spettri=(p_spettri_mean-p_v)/(0.5*rho*(Omega*Rt)^2);
%ASSEGNAZIONE INTERVALLO DI SAMPLING
% FREQUENZA DI NYQUIST f_Nyq=1/(2*dt); % Hz
%LUNGHEZZA TOTALE RECORD Tr=n_spettri/(1/dt); % s
%DEFINIZIONE DELLE QUANTITÀ PER LA STIMA DELLO SPETTRO
% LUNGHEZZA DEL SUBRECORD T=Tr/N_av_spec;
% IL NUMERO DI PUNTI DI SAMPLING VIENE AUMENTATO, SE NECESSARIO, PORTANDOLO
% ALLA POTENZA DI 2 PIÙ VICINA, IN ALTO
N_tot=Tr/dt; % numero totale di punti di sampling, è uguale a n_spettri N=T/dt; % numero di punti di sampling in ogni subrecord(è anche uguale a
% n_spettri/N_av_spec)
% Calcolo del numero L di zeri da aggiungere L=[];
n=log2(N);
n1=ceil(n);
if (n1-n)==0 L=0;
else L=2^n1-N;
end;
% DEFINIZIONE DELLA MATRICE DEI VALORI DEL TEMPO PER LA DEFINIZIONE DELLA
% FINESTRA DI TAPERING
% IL VETTORE DEI VALORI DEL TEMPO È DIVISO IN N_AV_SPEC PARTI CONSECUTIVE LE
% QUALI SONO DISPOSTE SECONDO LE COLONNE DELLA MATRICE T_MAT t_mat1=[]; t_mat=[];
for i=1:(N_spettri*N_av_spec)
t_mat1=(((i-1)*(N_tot/N_av_spec)+1)*dt):dt:((i*N_tot/N_av_spec)*dt);
t_mat=[t_mat t_mat1.'];
end;
%t_mat1=[]; t_mat=[];
%t_mat1=(1*dt):dt:(N*dt);
%t_mat=t_mat1.';
%size(t_mat)
% SPAZIATURA DELLE FREQUENZE DI STIMA DELLO SPETTRO df=1/T; % Hz
% DEFINIZIONE DEL VETTORE DELLE FREQUENZE PER LA STIMA DELLO SPETTRO,
% avendo aggiunto gli zeri necessari per la successiva applicazione della
% FFT al segnale T_L=(N+L)*dt;
df_L=1/T_L;
600 omega_vett=0:(2*pi/T_L):pi/dt; % rad/s pulsazioni freq_vett=0:df_L:1/(2*dt); % 1/s frequenze
%DIVISIONE DELLA MATRICE DEI DATI IN N_AV_SPEC PARTI u1_T=[]; u2_T=[];
for i=1:N_spettri
p1=p_vett_PCB1(:,i); % vedi che i dati relativi a ciascuno spettro sono disposti secondo colonne,
p2=p_vett_PCB2(:,i); % infatti il vettore di dati iniziale,es.PCB1_dati, è un vettore colonna viene
for j=1:N_av_spec % divisa in N_spettri parti,anch'esse vettori colonna, e organizzata in una
r=(i-1)*N_av_spec+j; % matrice, p_vett_PCB1, di dimensioni [dim(PCB1_dati)]/N_spettri righe e N_spettri colonne
u1_T(:,r)=p1(((j-1)*(N_tot/N_av_spec)+1):(j*N_tot/N_av_spec));
u2_T(:,r)=p2(((j-1)*(N_tot/N_av_spec)+1):(j*N_tot/N_av_spec));
end;
end;
size(u1_T); % è una matrice (n_spettri/N_av_spettri) righe e % (N_spettri*N_av_spec) colonne
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% CALCOLO DFT (Trasformata discreta di Fourier)
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% CALCOLO DELLA MEDIA (da sottrarsi successivamente ai valori della
% pressione effettiva per ottenere la parte oscillatoria del segnale) u_mean=[]; v_mean=[];
for i=1:(N_spettri*N_av_spec) u_mean(i)=sum(u1_T(:,i))/N;
v_mean(i)=sum(u2_T(:,i))/N;
end;
% DEFINIZIONE DELLE SERIE {X(R)} E {Y(R)} DEPURATE DAL VALORE MEDIO
% I VALORI PER CIASCUN SUBRECORD VENGONO DISPOSTI SECONDO LE RIGHE DELLE
% MATRICI X_N E Y_N
for i=1:(N_spettri*N_av_spec) % Qui i 2 vettori u1_T e u2_T
x_N(:,i)=u1_T(:,i)-u_mean(i)*ones(N,1); % vengono depurati dei valori medi.
y_N(:,i)=u2_T(:,i)-v_mean(i)*ones(N,1); % Vettori di lunghezza N.
end;
size(x_N)
%TAPERING DEI DATI CON HANNING u_Hann=[]; v_Hann=[];
for i=1:(N_spettri*N_av_spec)
u_Hann(:,i)=x_N(:,i).*(0.5-0.5*cos((2*pi/T)*t_mat(:,i)));
v_Hann(:,i)=y_N(:,i).*(0.5-0.5*cos((2*pi/T)*t_mat(:,i)));
end;
x_Hann=((8/3)^0.5)*u_Hann; y_Hann=((8/3)^0.5)*v_Hann;
%x_Hann=x_N;
size(x_Hann)
% AGGIUNTA DEGLI ZERI calcolati in precedenza x_zero=zeros(L,1);
y_zero=zeros(L,1);
x_L=[];y_L=[];
for i=1:(N_spettri*N_av_spec)
x_L(:,i)=[x_Hann(:,i);x_zero]; % vettore di lunghezza N+L y_L(:,i)=[y_Hann(:,i);x_zero];
end;
% CALCOLO DFT DELLE SERIE {X(R)} E{Y(R)} DEI SINGOLI SUBRECORD X_DFT=[]; Y_DFT=[];
for i=1:(N_spettri*N_av_spec) X_1=x_L(:,i).';
X_DFT(i,:)=fft(X_1);
Y_1=y_L(:,i).';
Y_DFT(i,:)=fft(Y_1);
end;
size(X_DFT)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% CALCOLO STIME DEGLI SPETTRI
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% CALCOLO COEFFICIENTI {S(K)} DEGLI AUTOSPETTRI E CROSS_SPETTRI DEI SINGOLI
% SUBRECORD
% Calcolo della densità spettrale di potenza per i singoli subrecord S_xx_mat=[]; S_xy_mat=[]; S_yx_mat=[]; S_yy_mat=[];
for i=1:(N_spettri*N_av_spec)
S_xx_mat(i,:)=conj(X_DFT(i,:)).*X_DFT(i,:);
S_xy_mat(i,:)=conj(X_DFT(i,:)).*Y_DFT(i,:);
S_yx_mat(i,:)=conj(Y_DFT(i,:)).*X_DFT(i,:);
S_yy_mat(i,:)=conj(Y_DFT(i,:)).*Y_DFT(i,:);
end;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% CALCOLO DELLO SPETTRO COME MEDIA DEGLI SPETTRI DEI SUBRECORD
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Sxx_mat=[]; S_xx=[]; Sxy_mat=[]; S_xy=[]; Syx_mat=[]; S_yx=[]; Syy_mat=[]; S_yy=[];
%Sxx_mat1=[];
s=0;
for i=1:N_spettri s=(i-1)*N_av_spec+1;
Sxx_mat=S_xx_mat(s:(s+N_av_spec-1),:);
S_xx(i,:)=(dt/(N*N_av_spec))*sum(Sxx_mat);
602 Sxy_mat=S_xy_mat(s:(s+N_av_spec-1),:);
S_xy(i,:)=(dt/(N*N_av_spec))*sum(Sxy_mat);
Syx_mat=S_yx_mat(s:(s+N_av_spec-1),:);
S_yx(i,:)=(dt/(N*N_av_spec))*sum(Syx_mat);
Syy_mat=S_yy_mat(s:(s+N_av_spec-1),:);
S_yy(i,:)=(dt/(N*N_av_spec))*sum(Syy_mat);
end;
%Sxx_mat=20*log10(Sxx_mat1);
size(S_yx)
%S_xy=(dt/(N*N_av_spec))*sum(S_xy_mat);
%S_yx=(dt/(N*N_av_spec))*sum(S_yx_mat);
%S_yy=(dt/(N*N_av_spec))*sum(S_yy_mat); %NOTA: questi vettori sono costituiti %da (N+L) elementi ma solo i primi
%(N+L)/2
% sono significativi, infatti dopo %l'indice (N+L)/2 i coeff. si ripetono
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% PER I CROSS-SPETTRI SI CALCOLA IL MODULO E LA FASE
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
S_xy_mod=[]; S_xy_fase=[]; S_yx_mod=[]; S_yx_fase=[];
for i=1:N_spettri
S_xy_mod(i,:)=abs(S_xy(i,:));
S_xy_fase(i,:)=angle(S_xy(i,:))*180/pi; % in gradi S_yx_mod(i,:)=abs(S_yx(i,:));
S_yx_fase(i,:)=angle(S_yx(i,:))*180/pi; % in gradi end;
size(S_yx_mod) size(S_yx_fase)
% Viene ridefinito S_xx per la successiva conversione in Pascal Spectral=S_xx;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% CALCOLO DELLA FUNZIONE DI COERENZA
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
gamma2_xy=[]; gamma2_yx=[];
for i=1:N_spettri
gamma2_xy(i,:)=(S_xy_mod(i,:).*S_xy_mod(i,:))./(S_xx(i,:).*S_yy(i,:));
gamma2_yx(i,:)=(S_yx_mod(i,:).*S_yx_mod(i,:))./(S_xx(i,:).*S_yy(i,:));
end;
%DATI IN USCITA T
dt f_Nyq
e_random_norm=1/(N_av_spec^0.5)
N L T_L
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Andamento temporale delle varie grandezze in gioco
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
p_ingresso=[dati1_mat(1:end,1)];
p_differenziale=[dati1_mat(1:end,2)];
% Numero di scan rate num=1000;
% Durata della prova
t=num*240; % 4 min di prova
% Definizione dell'intervallo di tempo su ci viene effettuata la media
% temporale dei dati
DELTA_tempo=8 ; % in secondi
% Numero di dati contenuti in ciascun intervallo prescelto n_tempo=DELTA_tempo*1000 ;
% Grado di ricoprimento dell'intervallo in percentuale e_ricoprimento=0.9 ;
l_curve=length(dati1_mat);
c=(1/(1-e_ricoprimento))*((l_curve/n_tempo)-1)+1;
p_ingresso_1(1)=mean(p_ingresso(1:n_tempo,1)) ;
%%%%
p_differenziale_1(1)=mean(p_differenziale(1:n_tempo,1)) ; inizio(1)=0;
for i=2:c
inizio(i)=(i-1)*n_tempo*(1-e_ricoprimento);
end
fine(1)=n_tempo;
for i=2:c
fine(i)=inizio(i)+n_tempo;
end for i=2:c
p_ingresso_1(i)=mean(p_ingresso(inizio(i):fine(i),1)) ;
p_differenziale_1(i)=mean(p_differenziale(inizio(i):fine(i),1)) ; end
%%%%%%%%%%%%%%%%%%%%%%%%%
% Battente idrostatico idro=0.06 ; % in bar
% Plottaggio andamento della pressione in funzione del tempo
p_in_1_bar=(p_ingresso-idro) ; % Valore della pressione in bar in ingresso all'induttore tempo_1=[1:t]' ; % Costruzione del vettore che rappresenta gli istanti di tempo di campionamento
tempo=tempo_1./1000 ; % Vettore contenente il tempo in secondi
% Plottaggio andamento della pressione in ingresso all'induttore figure
604 plot(tempo,p_in_1_bar,'.k')
xlabel('t (secondi)')
ylabel('pressione ingresso (bar)') grid on
box on
% Plottaggio dell'andamento del coefficiente di flusso Q_32_49=PortataVol;
phi_32_49=((Q_32_49.*10^-3)/Area)/(Omega*Rt) ; phi_32_49_media=mean(phi_32_49);
% Ridefinizione del tempo per la portata essendo questa campionata 5 volte
% al secondo anziché 1000 come per la pressione tempo_fluss=[1:1200]/5;
tempo_fluss=tempo_fluss';
figure
plot(tempo_fluss,phi_32_49,'*r') xlabel('tempo')
ylabel('\phi') grid on box on
%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% GRAFICI
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%
size(sigma_spettri) size(freq_vett) size(S_xx)
size(S_xx(10,1:(N+L)/2))
% Plottaggio autospettro x-x figure(4);clf;hold on;grid on;
for i=1:N_spettri
sig_vett=sigma_spettri(i)*ones(1,((N+L)/2));
plot3(sig_vett,freq_vett(1:(N+L)/2),S_xx(i,1:(N+L)/2));
end;
xlabel('sigma');ylabel('frequenza (Hz)');zlabel('Ampiezza S_x_x');
% Plottaggio Cross-spettro x-y e relativa fase figure(5);clf;
subplot(211);hold on;grid on;
for i=1:N_spettri
sig_vett=sigma_spettri(i)*ones(1,((N+L)/2));
plot3(sig_vett,freq_vett(1:(N+L)/2),S_xy_mod(i,1:(N+L)/2));
end;
xlabel('sigma');ylabel('frequenza (Hz)');zlabel('Modulo S_x_y');
subplot(212);hold on;grid on;
for i=1:N_spettri
sig_vett=sigma_spettri(i)*ones(1,((N+L)/2));
plot3(sig_vett,freq_vett(1:(N+L)/2),S_xy_fase(i,1:(N+L)/2));
end;
xlabel('sigma');ylabel('frequenza (Hz)');zlabel('Angolo di fase(deg)');
% Plottaggio Cross-spettro y-x e relativa fase
figure(8);clf;
subplot(211);hold on;grid on;
for i=1:N_spettri
sig_vett=sigma_spettri(i)*ones(1,((N+L)/2));
plot3(sig_vett,freq_vett(1:(N+L)/2),S_yx_mod(i,1:(N+L)/2));
end;
xlabel('sigma');ylabel('frequenza (Hz)');zlabel('Modulo S_y_x');
subplot(212);hold on;grid on;
for i=1:N_spettri
sig_vett=sigma_spettri(i)*ones(1,((N+L)/2));
plot3(sig_vett,freq_vett(1:(N+L)/2),S_yx_fase(i,1:(N+L)/2));
end;
xlabel('sigma');ylabel('frequenza (Hz)');zlabel('Angolo di fase(deg)')
% Plottaggio autospettro y-y figure(9);clf;hold on;grid on;
%j=0;
for i=1:N_spettri %j=N_spettri-i+1;
sig_vett=sigma_spettri(i)*ones(1,((N+L)/2));
plot3(sig_vett,freq_vett(1:(N+L)/2),S_yy(i,1:(N+L)/2));
end;
xlabel('sigma');ylabel('frequenza (Hz)');zlabel('Ampiezza S_y_y');
% Plottaggio funzione di coerenza x-y figure(10);clf;
subplot(211);hold on;grid on;
for i=1:N_spettri
sig_vett=sigma_spettri(i)*ones(1,((N+L)/2));
plot3(sig_vett,freq_vett(1:(N+L)/2),gamma2_xy(i,1:(N+L)/2));hold on;grid on;
end;
% Plottaggio funzione di coerenza y-x
xlabel('sigma');ylabel('frequenza (Hz)');zlabel('Coerenza_x_y');
subplot(212);hold on;grid on;
for i=1:N_spettri
sig_vett=sigma_spettri(i)*ones(1,((N+L)/2));
plot3(sig_vett,freq_vett(1:(N+L)/2),gamma2_yx(i,1:(N+L)/2));hold on;grid on;
end;
xlabel('sigma');ylabel('frequenza (Hz)');zlabel('Coerenza_y_x');
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% GRAFICI PER SIGMA FISSATO
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
606 flag=1;
while flag==1
per=input('inserisci % sigma') %la sigma si sceglie inserendola come percentuale del suo valore max
a=length(sigma_spettri);
zz=ceil(a*per/100);
sigma=sigma_spettri(zz)
freque=input('frequenza studiata(Hz)');
a1=freque-120;
if a1<0 a1=0 end
a2=freque+120;
if a2>f_Nyq a2=f_Nyq;
end
% Raggruppamento di tutti i grafici in uno solo figure
title(sprintf('\sigma=%f',sigma))
plot(freq_vett(1:(N+L)/2),S_xx(zz,1:(N+L)/2));
hold on
plot(freq_vett(1:(N+L)/2),S_xy_mod(zz,1:(N+L)/2),'c');
plot(freq_vett(1:(N+L)/2),S_xy_fase(zz,1:(N+L)/2),'r');
plot(freq_vett(1:(N+L)/2),gamma2_xy(zz,1:(N+L)/2).*100,'g') legend('Sxx','Sxy mod','Sxy fase','Coerenza x-y')
axis([a1 a2 -200 200]) grid
xlabel('frequenza (Hz)')
ylabel('Sxx Sxy mod Sxy fase Coerenza x-y') for ss=1:(N+L)/2
if abs((freque-freq_vett(ss)))<((1/T_L)+0.00001*(1/T_L)) frequenza=freque
fasee=S_xy_fase(zz,ss) gammaa=gamma2_xy(zz,ss) break
end end
plot(frequenza,fasee,'or')
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Grafici separati per la singola frequenza che si analizza
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
figure
subplot(3,1,1);
plot(freq_vett(1:(N+L)/2),S_xx(zz,1:(N+L)/2));
%plot(freq_vett(1:(N+L)/2),S_xx(zz,1:(N+L)/2)./50);
hold on
line([frequenza frequenza],[0 400000000],'color',[0 0 0],'LineWidth',1.5);
xlabel('frequenza (Hz)') ylabel('Ampiezza S_x_x');
grid on
mmm=max(S_xx(zz,1:(N+L)/2));
%axis([a1 a2 0 400]) axis([a1 a2 0 4000]) subplot(3,1,2)
plot(freq_vett(1:(N+L)/2),S_xy_fase(zz,1:(N+L)/2),'r');
hold on
line([frequenza frequenza],[-200 200],'color',[0 0 0],'LineWidth',1.5);
xlabel('frequenza (Hz)') ylabel('Angolo di fase(deg)') grid on
axis([a1 a2 -150 150]) subplot(3,1,3)
plot(freq_vett(1:(N+L)/2),gamma2_xy(zz,1:(N+L)/2),'g') hold on
line([frequenza frequenza],[0 1],'color',[0 0 0],'LineWidth',1.5);
xlabel('frequenza (Hz)') ylabel('Coerenza_y_x') grid on
axis([a1 a2 0 1])
flag=input('1 per continuare') end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Eliminazione frequenze passaggio pale
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
for pippo=50:50:499
wo = pippo/500; bw = 0.006; %0.006 [b,a] = iirnotch(wo,bw);
for i=1:(N_spettri*N_av_spec) x_L(:,i)=filtfilt(b,a,x_L(:,i));
end;
end X_DFT=[];
for i=1:(N_spettri*N_av_spec) X_1=x_L(:,i).';
X_DFT(i,:)=fft(X_1);
end;
for i=1:(N_spettri*N_av_spec)
608 S_xx_FILTRATA_mat(i,:)=conj(X_DFT(i,:)).*X_DFT(i,:);
end;
s=0;
for i=1:N_spettri s=(i-1)*N_av_spec+1;
Sxx_FILTRATAmat=S_xx_FILTRATA_mat(s:(s+N_av_spec-1),:);
S_xx_FILTRATA(i,:)=(dt/(N*N_av_spec))*sum(Sxx_FILTRATAmat);
end;
% Plottaggio autospettro x-x FILTRATO figure(11);clf;hold on;grid on;
for i=1:N_spettri
sig_vett=sigma_spettri(i)*ones(1,((N+L)/2));
plot3(sig_vett,freq_vett(1:(N+L)/2),S_xx_FILTRATA(i,1:(N+L)/2));
end;
xlabel('sigma');ylabel('frequenza (Hz)');zlabel('Ampiezza S_x_x_FILTRATA');
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Ampiezza instabilità in Pascal
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
load Ampiezza_massimarisoluzione;
% Studio ampiezze per i vari fenomeni evidenziati
sigmacento=[98:100]'; % valore del numero di Eulero per il quale si è riscontrato il fenomeno sigmapercento=sigmacento*60/100;
sigmapercento=round(sigmapercento);
sigma_freque=sigma_spettri(sigmapercento);
f=264; % frequenza del fenomeno in Hz freque_spettri=freq_vett;
a=min(abs(f-freque_spettri));
ind_freque=find(a==abs(f-freque_spettri));
fr=freque_spettri(ind_freque);
clear S_xx;
for i=1:length(sigmapercento)
Colonna(i,1:3)=Spectral(sigmapercento(i),(ind_freque-1):(ind_freque+1)); % Intervallo di spaziatura delle frequenze pari a 0.5 Hz,attorno alla frequeza studiata
S_xx(i)=max(Colonna(i,:)); %Spectral(sigmapercento(i),fre);
end
% La differenza tra una colonna e l'altra è di 0.1 Hz; qunidi se alla prima
% colonna corrisponde 0.1 Hz, la colonna a cui corrisponde la frequenza di
% 36.2 Hz, per esempio, è la 362esima.
colonna_massimo=f*10;
% Le colonne di massimo corrispondono a ben precisi valori di frequenza Massimo=massimo(:,colonna_massimo);
% Approssimazione della vera pressione (in Pa) sulla base dell'andamento
% parabolico tra S_xx e l'ampiezza della sinusoide nota
% Equazione interpolante dei dati tra ampiezza della S_xx e dell'ampiezza
% della sinusoide: viene effettuata un'aprossimazione dell'interpolazione
% sulla base degli ordini di grandezza dei coefficienti. L'approssimazione
% consiste nel considerare i dati della S_xx proporzionali al quadrato dei
% dati dell'ampiezza della sinusoide.
for j=1:length(S_xx)
aa(j)=min(abs(S_xx(j)-Massimo));
riga_massimo(j)=find(aa(j)==abs(S_xx(j)-Massimo));
Ampiezza(j)=250*(riga_massimo(j)-1)+0.1;
if (S_xx(j)-Massimo(riga_massimo(j)))<0 S_xx_stima(j)=S_xx(j)+aa(j);
disp('Massimo > S_xx') else
S_xx_stima(j)=S_xx(j)-aa(j);
disp('Massimo < S_xx') end
Ampiezza_vera(j)=Ampiezza(j)*sqrt(S_xx(j)/S_xx_stima(j)); % in Pa
End
2. Viene qui presentato il listato matlab per il calcolo della matrice massimo, presentata nel precedente listato, che contiene i picchi della sinusoide impiegata per il calcolo stimato dell’ampiezza effettiva della perturbazione.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Calcolo ampiezza dello spettro di una sinusoide nota
%
% Lucio Torre 2004 Giovanni Pace 2009
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
clear all;
close all;
clc;
% Definizione delle quantità per a stima dello spettro pluto=0;
for f=0.1:.1:500; % Frequenza della sinusoide campione pluto=pluto+1;
pippo=0;
% Scelta delle ampiezze per la sinusoide A_in=0.1;
passo_A=250;
A_fin=100000.1;
for A=A_in:passo_A:A_fin;
pippo=pippo+1;
ampiezza(pippo,pluto)=A; % Vettore delle ampiezze
% Lunghezza record
610 Tr=4 ; % secondi
% Intervallo di campionamento in secondi dt=1/1000; % secondi
% Frequenza di Nyquist f_Nyq=1/(2*dt); % Hz
% Medie per spettro N_av_spec=2;
% Lunghezza sub-record T=Tr/N_av_spec; % secondi
% Numero di punti di campionamento. Viene approssimato per eccesso
% alla potenza di 2 più vicina
N_tot=Tr/dt; % Numero totale di punti di campionamento
N=T/dt; % Numero di punti di campionamento per ogni sub-record
% Calcolo del numero di zeri da aggiungere per effettuare lo zero-padding;
n=log2(N);
n1=ceil(n);
if (n1-n)==0;
L=0;
else
L=2^n1-N;
end
% Spaziatura delle frequenze di stima dello spettro df=1/T; % Hz
% Definizione della matrice dei valori del tempo per il calcolo del segnale
% x(T); il vettore dei valori del tempo è suddiviso in N_av_spec parti
% consecutive, le quali sono disposte secondo le righe della matrice t_mat t_mat=[];
for i=1:N_av_spec
t_mat(i,:)=(((i-1)*(N_tot/N_av_spec)+1)*dt):dt:((i*N_tot/N_av_spec)*dt);
end
% Definizione del vettore delle frequenze per la stima dello spettro sulla
% base della nuova definizione del numero di campionamenti modificato
% dallo zero padding T_L=(N+L)*dt;
df_L=1/T_L;
omega_vett=0:(2*pi/T_L):pi/dt; % rad/s freq_vett=0:df_L:1/(2*dt); % Hz
% Funzione seno nota for i=1:N_av_spec
u_mat(i,:)=A*sin(2*pi*f*t_mat(i,:));
end
% Viene introdotto del rumore di tipo Gaussiano con deviazione standard
% pari a 1 e media nulla rumore=0;
for i=1:N_av_spec
u_N(i,:)=u_mat(i,:)+rumore*randn(size(N_tot/N_av_spec));
end
% Finestratura dei dati mediante la finestra di Hanning for i=1:N_av_spec
u_Hann(i,:)=u_N(i,:).*(0.5-0.5*cos((2*pi/T)*t_mat(i,:)));
end
u_N=((8/3)^0.5)*u_Hann;
% Calcolo della media del segnale da sottrarsi successivamente for i=1:N_av_spec
u_mean(i)=sum(u_N(i,:))/N;
end
% Deinizione della serie x(R) previa eliminazione del valor medio. I valori
% per ciascun sub-record vengono disposti secondo le righe della matrice
% x_N
for i=1:N_av_spec
x_N(i,:)=u_N(i,:)-u_mean(i)*ones(1,N); % vettore di lunghezza N end
% Aggiunta degli zeri x_zero=zeros(1,L);
for i=1:N_av_spec
x_L(i,:)=[x_N(i,:),x_zero]; % vettore di lunghezza N+L end
% Calcolo della DFT for i=1:N_av_spec X_DFT(i,:)=fft(x_L(i,:));
end
% Calcolo autospettro for i=1:N_av_spec
S_xx_mat(i,:)=conj(X_DFT(i,:)).*X_DFT(i,:);
end
% Calcolo dell'autospettro come media degli spettri dei sub-records S_xx=(dt/(N*N_av_spec))*sum(S_xx_mat);
% Calcolo del picco e della matrice
massimo(pippo,pluto)=max(S_xx(1:(N+L)/2));
end
% Costruzione polinomio interpolante
coefficienti(pluto,:)=polyfit(ampiezza,massimo,2);
Matrice_A(pluto,:)=coefficienti(pluto,:);
end
save('Pascal','massimo');
3. Calcolo delle frequenze proprie del circuito.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
612
% Calcolo delle frequenze proprie del circuito nella configurazione del
% DaPaMiTo 3
%
% Giovanni Pace 2009
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
clear all close all clc
% Dimensioni di interesse della linea di aspirazione
% Per il tratto di tubi a monte del flussimetro di aspirazione D_asp_1=0.1643 ; % Diametro tubi in m
A_asp_1=pi*((D_asp_1)^2)/4 ; % Area tubi in m^2 L_asp_1=0.665 ; % Lunghezza tubi in m
% Tubo subito a monte del flussimetro di aspirazione D_asp_2=0.1444 ; % Diametro tubi in m A_asp_2=pi*((D_asp_2)^2)/4 ; % Area tubi in m^2 L_asp_2=0.3 ; % Lunghezza tubi in m
% Flussimetro di aspirazione
D_flux=0.1444 ; % Diametro flussimetro in m A_flux=pi*((D_flux)^2)/4 ; % Area flussimetro in m^2 L_flux=0.332 ; % Lunghezza flussimetro in m
% Tubo subito a valle del flussimetro di aspirazione (TAV) D_asp_3=0.1444 ; % Diametro tubo in m A_asp_3=pi*((D_asp_3)^2)/4 ; % Area tubo in m^2 L_asp_3=0.3 ; % Lunghezza tubo in m
% Tubo subito a monte del plexiglas in aspirazione
% Sono presenti due valori per il diametro e per l'area poiché tale elemento
% ha forma tronco-conica (TOWER)
D1_asp_4=0.1444 ; % Diametro tubo in m
A1_asp_4=pi*((D1_asp_4)^2)/4 ; % Area di ingresso tubo in m^2 D2_asp_4=0.166 ; % Diametro tubo in m
A2_asp_4=pi*((D2_asp_4)^2)/4 ; % Area di uscita tubo in m^2 L_asp_4=0.825 ; % Lunghezza tubo in m
A_asp_4=(A1_asp_4+A2_asp_4)/2; % Valor medio dell'area di passaggio D_asp_4=(D1_asp_4+D2_asp_4)/2; % Valor medio del diametro del tubo
% Pompa
r=0.081 ; % Raggio di tip dell'induttore DaPaMiTo 3 in m
% Dimensioni di interesse della linea di mandata
D_sca_1=0.1 ; % Diametro dei tubi del condotto di mandata in m A_sca_1=pi*((D_sca_1)^2)/4 ; % Area tubi in m^2
L_sca_1=2.85 ; % Lunghezza tubi in m, fatta esclusione per la silent throttle valve
% Dimensioni della Silent Throttle Valve (S.T.V.) D_sca_2=0.1 ; % Diametro S.T.V. in m A_sca_2=pi*((D_sca_2)^2)/4 ; % Area S.T.V. in m^2 L_sca_2=1 ; % Lunghezza S.T.V. in m
% Dimensioni di interesse per l'honeycomb nella mandata
D_honey=0.005 ; % Diametro tubicini dell'honeycomb in m L_honey=0.05 ; % Lunghezza honeycomb in m
A_honey=pi*((D_honey)^2)/4 ; % Area tubicini honeycomb in m^2
% Rugosità dei tubi e dell'honeycomb in m eps=0.0002 ;
eps_honey=0.0001;
% Velocità angolare dell'induttore nelle prove di instabilità omega_1=3000 ; % [rpm]
% Conversione della velocità angolare, espressa in rpm, in rad/s omega=(omega_1*2*pi)/60 ; % [rad/s]
load 'Frequenze_proprie' ; % Viene caricato il vettore che contiene tutti i salti di % pressione realizzati dall'induttore durante le varie prove % per caratterizzarne il comportamento non cavitante
% Portata phi=phi_2500;
Q=phi.*omega*pi*(r^3) ; % Portata in m^3/s
% Si importa la temperatura in °C
T=[25]'; % Vettore contenente le temperaure in gradi °C
% Vettore colonna che raggruppa le densità alle temperature raggruppate nel
% vettore T + 273.15 poiché la funzione density ha come input la tempratura
% in gradi Kelvin
rho=density(T+273.15);
% Viscosità dell'acqua alla temperatura di T=25 °C ( temperatura non molto
% dissimile da quella che risulta essere la tempertaura media di tutte le
% prove)
ni=1.0040*10^(-6); % in m^2/s
% Andamento analitico della curva phi-psi della pompa
% tramite interpolazione polinomiale con un polinomio di 3° grado p = polyfit(phi_2500,psi_2500,3);
phi=phi_2500;
psi=polyval(p,phi);
% Espressione della derivata del polinomio interpolante la funzione
% psi(phi)
d_psi=3.*p(1).*(phi.^2)+2.*p(2).*(phi)+p(3);
figure('Name','Curva caratteristica della pompa') plot(phi,psi,'-r')
hold on
plot(phi,psi_2500,'*b')
legend('Curva interpolante: cubica','Curva sperimentale') xlabel('\phi')
ylabel('\psi')
% Calcolo del numero di Reynolds nei vari tratti del circuito ( verrà
% utilizzato il modo di indicare le varie parti del circuito come
% fatto sopra)
u_asp_1=Q./A_asp_1;
614 Re_asp_1=(u_asp_1.*D_asp_1)./ni;
u_asp_2=Q./A_asp_2;
Re_asp_2=(u_asp_2.*D_asp_2)./ni;
u_flux=Q./A_flux;
Re_flux=(u_flux.*D_flux)./ni;
u_asp_3=Q./(A_asp_3);
Re_asp_3=(u_asp_3.*D_asp_3)./ni;
% Si calcola un valor medio della velocità per il tubo a sezione
% tronco-conica
u_asp_4=Q./((A1_asp_4+A2_asp_4)/2);
Re_asp_4=(u_asp_4.*D_asp_4)./ni;
u_sca_1=Q./A_sca_1;
Re_sca_1=(u_sca_1.*D_sca_1)./ni;
u_honey=u_sca_1;
Re_honey=(u_honey.*D_honey)./ni;
u_sca_2=Q./A_sca_2;
Re_sca_2=(u_sca_2.*D_sca_2)./ni;
% CALCOLO DEI VALORI DEL COEFFICIENTE DI ATTRITO PER I VARI COMPONENTI
% Si è fatto uso dell'equazione di Churchill per tubi Re = Re_asp_1;
for i=1:length(Q)
eps_D(i) = eps/D_asp_1;
end;
A=(2.457*log(1./((7./Re).^0.9+0.27*(eps_D')))).^16;
B=(37530./Re).^16;
f_asp_1 = 8*((8./Re).^12+(1./(A+B).^(3/2))).^(1/12);
%%%%%%
Re = Re_asp_2;
for i=1:length(Q)
eps_D(i) = eps/D_asp_2;
end;
A=(2.457*log(1./((7./Re).^0.9+0.27*(eps_D')))).^16;
B=(37530./Re).^16;
f_asp_2 = 8*((8./Re).^12+(1./(A+B).^(3/2))).^(1/12);
%%%%%%
Re = Re_flux;
for i=1:length(Q)
eps_D(i) = eps/D_flux;
end;
A=(2.457*log(1./((7./Re).^0.9+0.27*(eps_D')))).^16;
B=(37530./Re).^16;
f_flux = 8*((8./Re).^12+(1./(A+B).^(3/2))).^(1/12);
%%%%%%%
Re = Re_asp_3;
for i=1:length(Q)
eps_D(i) = eps/D_asp_3;
end;
A=(2.457*log(1./((7./Re).^0.9+0.27*(eps_D')))).^16;
B=(37530./Re).^16;
f_asp_3 = 8*((8./Re).^12+(1./(A+B).^(3/2))).^(1/12);
%%%%%%
Re = Re_asp_4;
for i=1:length(Q)
eps_D = eps/((D1_asp_4+D2_asp_4)/2);
end;
A=(2.457*log(1./((7./Re).^0.9+0.27*(eps_D')))).^16;
B=(37530./Re).^16;
f_asp_4 = 8*((8./Re).^12+(1./(A+B).^(3/2))).^(1/12);
%%%%%%
Re = Re_sca_1;
for i=1:length(Q)
eps_D(i) = eps/D_sca_1;
end;
A=(2.457*log(1./((7./Re).^0.9+0.27*(eps_D')))).^16;
B=(37530./Re).^16;
f_sca_1 = 8*((8./Re).^12+(1./(A+B).^(3/2))).^(1/12);
%%%%%%
Re = Re_honey;
for i=1:length(Q)
eps_D(i) = eps_honey/D_honey;
end;
A=(2.457*log(1./((7./Re).^0.9+0.27*(eps_D')))).^16;
B=(37530./Re).^16;
f_honey = 8*((8./Re).^12+(1./(A+B).^(3/2))).^(1/12);
%%%%%%
Re = Re_sca_2;
for i=1:length(Q)
eps_D(i) = eps/D_sca_2;
end;
A=(2.457*log(1./((7./Re).^0.9+0.27*(eps_D')))).^16;
B=(37530./Re).^16;
f_sca_2 = 8*((8./Re).^12+(1./(A+B).^(3/2))).^(1/12);
%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%
% Calcolo del coefficiente di perdita per i vari raccordi presenti nel
% circuito
% Calcolo del fattore di frizione e del coefficiente di perdita per il
% raccordo nel condotto di aspirazione, subito fuori dal serbatoio Re=Re_asp_1;
for i=1:length(Q)
eps_D(i)=eps/D_asp_1;
616 end;
A=(2.457*log(1./((7./Re).^0.9+0.27*(eps_D')))).^16;
B=(37530./Re).^16;
f_c_asp_1 = 8*((8./Re).^12+(1./(A+B).^(3/2))).^(1/12);
% Nel condotto di aspirazione c'è un solo raccordo; il fattore 30
% fornisce il valore del rapporto tra lunghezza e diametro equivalenti per
% il tubo con una curvatura di 90°
K_c_asp_1=f_c_asp_1.*(30); % equivalente per un raccordo a gomito di 90°
%%%%%%%%%%%%%
% Calcolo del fattore di perdita per la variazione di diametro
% che si riscontra nell'aspirazione nel tubo prima del flussimetro xi_salto_asp=0.07; % equivalente per un rapporto tra area di uscita % ed area di ingresso pari a 0.8
%%%%%%%%%%%%%
% Calcolo del fattore di frizione e del coefficiente di perdita per
% le curvature nel condotto di scarico Re=Re_sca_1;
for i=1:length(Q) eps_D=eps/D_sca_1;
end;
A=(2.457*log(1./((7./Re).^0.9+0.27*(eps_D')))).^16;
B=(37530./Re).^16;
f_c_sca = 8*((8./Re).^12+(1./(A+B).^(3/2))).^(1/12);
% Nel condotto di scarico ci sono 3 gomiti; il coefficiente di perdita
% calcolato tiene conto della presenza di tutti e tre i gomiti;il fattore 30
% fornisce il valore del rapporto tra lunghezza e diamtero equivalenti per
% il tubo con una curvatura di 90°
K_c_sca=3.*f_c_sca.*(30);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Calcolo delle resistenze delle varie parti del circuito e conseguenti
% salti di pressione
R_asp_1=(rho.*((f_asp_1.*L_asp_1)./D_asp_1)./((A_asp_1)^2)).*(Q) ; delta_pressione_asp_1=0.5*R_asp_1.*Q;
%%%%%%%
R_asp_2=(rho.*((f_asp_2.*L_asp_2)./D_asp_2)./((A_asp_2)^2)).*(Q) ; delta_pressione_asp_2=0.5*R_asp_2.*Q;
% Resistenza dovuta al flussimetro nel condotto di aspirazione R_flux=(rho.*((f_flux.*L_flux)./D_flux)./((A_flux)^2)).*(Q) ; delta_pressione_flux=0.5*R_flux.*Q;
% Resistenza dovuta al tubo (TAV) subito a valle del flussimetro di
% aspirazione
R_asp_3=(rho.*((f_asp_3.*L_asp_3)./D_asp_3)./((A_asp_3)^2)).*(Q) ; delta_pressione_asp_3=0.5*R_asp_3.*Q;
% Resistenza dovuta al tubo (Tower) subito prima dell'induttore
R_asp_4=((rho.*((f_asp_4.*L_asp_4)./D_asp_4)/((A_asp_4)^2))-rho.*((1/(A2_asp_4)^2)- (1/(A1_asp_4)^2))).*(Q) ;
delta_pressione_asp_4=rho.*(((f_asp_4.*10.6631)./(4.*pi))+0.5*((1./(A2_asp_4)^2)- (1./(A1_asp_4)^2))).*(Q.^2);
% Resistenza dovuta alla pompa R_pompa=-
((rho.*omega*r)./(pi*(r.^2))).*(d_psi)+((1/(pi*(r.^2))^2)+(1/(A_sca_1)^2)).*rho.*(Q);
% Resistenza dovuta al condotto di mandata escludendo tutte le perdite
% concentrate ed il contributo della S.T.V.
R_sca_1=(rho.*((f_sca_1.*L_sca_1)./D_sca_1)./((A_sca_1)^2)).*(Q) ;
% Resistenza dovuta alla presenza del raddrizzatore di flusso nel condotto
% di mandata
R_honey=(rho.*((f_honey.*L_honey)./D_honey)./((A_sca_1)^2)).*(Q) ;
% Resistenza dovuta allla curvatura subito fuori il serbatoio R_c_asp_1=(rho.*K_c_asp_1./((A_asp_1)^2)).*(Q) ; delta_c_asp_1=0.5*R_c_asp_1.*Q;
% Perdita concentrata dovuta alla variazione di diametro nel condotto di
% aspirazione
R_c_asp_2=(rho.*xi_salto_asp./((A_asp_2)^2)).*(Q) ; delta_c_asp_2=0.5*R_c_asp_2.*Q;
% Resistenza dovuta alle curvature presenti nel condotto di scarico R_c_sca=(rho.*K_c_sca./((A_sca_2)^2)).*(Q) ;
delta_c_sca_2=0.5*R_c_sca.*Q;
% Resistenza dovuta all'uscita del flusso dal serbatoio R_boll_1=rho.*0.5.*Q./((A_asp_1).^2);
delta_boll_1=0.5*R_boll_1.*Q;
% Resistenza dovuta all'ingresso del flusso nel serbatoio R_boll_2=rho.*1.*Q./((A_sca_2).^2);
delta_boll_2=0.5*R_boll_2.*Q;
% CALCOLO DI K_Silent (Coefficiente di perdita per la S.T.V.) e del salto
% di pressione realizzato nella Silent Throttle Valve
% Salto di pressione nella pompa in Pa
Delta_Pressione_Pompa=rho.*(psi).*((omega*r).^2);
% Salto di pressione dovuta alle curvature a 90° presenti nel circuito
% Perdite dovute alle 3 curvature a 90° nel condotto di scarico; qui viene
% calcolato il contributo della singola curvatura.
%Delta_Pressione_concentrata_sca=0.5*rho.*K_c_sca.*(Q./A_sca_2).^2;
% Perdite dovute al passaggio del flusso per il raddrizatore di flusso in
% honeycomb
Delta_Pressione_Honey=0.5.*R_honey.*(Q);
% Perdite dovute all'uscita dal bollitore per variazione improvvisa di area
% che incontra il flusso nell'uscire dal serbatoio e nell'entrare nel tubo
% di aspirazione
%Delta_pressione_boll1 = 0.5*0.5*rho.*(Q./A_asp_1).^2; % Fattore di perdita per improvvisa contrazione pari a 0.5
618
% Perdite dovute all'ingresso al bollitore per variazione improvvisa di area
% che incontra il flusso nell'entrare nel bollitore
%Delta_pressione_boll2 = 0.5*1*rho.*(Q./A_sca_2).^2; % Fattore di perdita per improvvisa contrazione pari a 1
% Perdite dovute alla Silent Throttle Valve (dalla conoscenza di tutti gli
% altri salti di pressione nel condotto)
Delta_pressione_Silent=Delta_Pressione_Pompa-delta_pressione_asp_1- delta_pressione_asp_2...
-delta_pressione_flux-delta_pressione_asp_3-delta_pressione_asp_4-delta_c_asp_1...
-delta_c_asp_2-delta_c_sca_2-delta_boll_1-delta_boll_2-Delta_Pressione_Honey ;
% Coefficiente di perdita per la Silent Throttle Valve
% Per il calcolo della resistenza della S.T.V. bisogna tener di conto che
% essa varia in funzione della strizione apportata alla sezione di
% passaggio del fluido nella valvola stessa e che consente di modificare la
% portata
Q_max=33.75*(10^-3);
PERC=Q./(Q_max);
% La lunghezza della valvola varia in funzione della strizione apportata,
% così come il diametro e di conseguenza l'area di passaggio per il flusso;
% le variazioni di suddette grandezze sono sotto riportate L_D_v=(-21.5.*PERC+36.5);
D_v=0.6.*L_sca_2./L_D_v;
A_v=(pi/4).*D_v.^2;
K_Silent = Delta_pressione_Silent./(0.5*rho.*(Q./A_v).^2);
if min(K_Silent)<0
disp('ATTENZIONE-PERDITE ECCESSIVE-(Delta_pressione_Silent<0!!)');
end;
R_S_T_V=rho.*K_Silent.*((Q./(A_v).^2));
% Calcolo delle inertanze delle varie parti del circuito I_asp_1=rho*(L_asp_1/A_asp_1);
I_asp_2=rho*(L_asp_2/A_asp_2);
I_flux=rho*(L_flux/A_flux);
I_asp_3=rho*(L_asp_3/A_asp_3);
I_asp_4=rho*(L_asp_4/A_asp_4);
I_sca_1=rho*(L_sca_1/A_sca_1);
I_honey=rho*(L_honey/A_sca_2);
I_Silent=rho*0.6*L_sca_2./A_v;
% Si fa l'ipotesi che la pompa abbia inertanza nulla
pulsazioneomega=(R_asp_1+R_asp_2+R_c_asp_1+R_c_asp_2+R_flux+R_asp_3+R_asp_4+R_po mpa+R_sca_1+R_S_T_V+R_honey+R_c_sca+R_boll_1+R_boll_2)./(I_asp_1+I_asp_2+I_flux+I_as p_3+I_honey+I_asp_4+I_sca_1+I_Silent);
figure
plot(phi,pulsazioneomega./(2*pi));
title('Frequenze proprie per 3000 rpm');
xlabel('\phi');
ylabel('Frequenza naturale [Hz]');
grid on
disp('La frequenze naturali sono');
disp(omega./(2*pi));
620