• Non ci sono risultati.

A. APPENDICE AL CAPITOLO 5

N/A
N/A
Protected

Academic year: 2021

Condividi "A. APPENDICE AL CAPITOLO 5"

Copied!
26
0
0

Testo completo

(1)

221

A. APPENDICE AL CAPITOLO 5

In questa appendice verranno riportati i programmi Matlab scritti per la realizzazione dei grafici e la soluzione dei problemi relativi al capitolo 5. Per non appesantire troppo l’appendice, verrà riportato, per ogni tipologia, un solo programma esemplificativo dal quale sarà possibile risalire agli altri semplicemente effettuando le necessarie modifiche nei dati di ingresso.

(2)

222

A.1 Creazione delle curve caratteristiche

Si riporta il programma scritto per il caricamento dei dati campionati e per il plottaggio della curva dell’induttore.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Calcolo delle curve caratteristiche dell'induttore Dapamito 4 % % % % Luca Pecorari 2009 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% close all clear all clc

% PARAMETRI INIZIALI DA IMPOSTARE

omega=3000; % [giri/minuto] velocità di rotazione dell'induttore

cas=200; % campionamenti al secondo

ntot=1000; % n°tot campionamenti per prova trasduttore=3; %scelta trasduttore differenziale

% [2]=seconda colonna (fondo scala 1,10 bar) % [3]=terza colonna (fs=7 bar)

Q=0.001*[30.04,29.41,28.36,27.33,26.31,25.40,24.20,… % [m^3/s]portata 23.27,22.36,21.32,20.20,19.32,18.31,17.24,... 16.20,15.24,14.19,13.22,12.20,11.02,10.15,… 9.13,8.02,7.13,6.10,5.01,4.03,3.02,2.06]; temperatura=[15.7,15.7,15.8,16.0,16.4,16.5,16.7,16.8,… % [°C] temperatura 17.0,17.1,15.4,15.5,15.6,15.7,15.7,15.8,... 16.0,16.0,16.2,16.3,16.5,16.5,16.6,16.7,… 16.8,17.1,17.2,17.1,17.5];

% parametri geometrici induttore

Rt=0.081; % [m] raggio tip induttore

Rh1=0.035; % [m] raggio mozzo inlet

Rh2=0.0585; % [m] raggio mozzo outlet

(3)

223

cle=0.0008; % [m] gioco radiale

batt_idro=0.06; % [bar] Correzione per il trasduttore assoluto di % pressione dovuto al battente idrostatico

% CARICAMENTO DATI Prova1=load('DAP4_1_3000.txt'); Prova1_0=load('DAP4_1_3000_0000.txt'); Prova2=load('DAP4_2_3000.txt'); Prova3=load('DAP4_3_3000.txt'); Prova4=load('DAP4_4_3000.txt'); Prova5=load('DAP4_5_3000.txt'); Prova6=load('DAP4_6_3000.txt'); Prova7=load('DAP4_7_3000.txt'); Prova8=load('DAP4_8_3000.txt'); Prova9=load('DAP4_9_3000.txt'); Prova10=load('DAP4_10_3000.txt'); Prova11=load('DAP4_11_3000.txt'); Prova12=load('DAP4_12_3000.txt'); Prova13=load('DAP4_13_3000.txt'); Prova14=load('DAP4_14_3000.txt'); Prova15=load('DAP4_15_3000.txt'); Prova16=load('DAP4_16_3000.txt'); Prova17=load('DAP4_17_3000.txt'); Prova18=load('DAP4_18_3000.txt'); Prova19=load('DAP4_19_3000.txt'); Prova20=load('DAP4_20_3000.txt'); Prova21=load('DAP4_21_3000.txt'); Prova22=load('DAP4_22_3000.txt'); Prova23=load('DAP4_23_3000.txt'); Prova24=load('DAP4_24_3000.txt'); Prova25=load('DAP4_25_3000.txt'); Prova26=load('DAP4_26_3000.txt'); Prova27=load('DAP4_27_3000.txt'); Prova28=load('DAP4_28_3000.txt'); Prova29=load('DAP4_29_3000.txt'); % OPERAZIONI DA SVOLGERE

% calcolo densità acqua in funzione della temperatura

T_vspec_vett=280:5:475; % [K] v_spec_vett=1e-003+1e-006*[0,1,1,2,4,5,7,9,11,13,… % [m^3/kg] 15,18,21,24,27,30,34,37,41,45,49,53,58,… 62,67,72,77,82,87,93,99,104,110,117,123,130,… 137,144,152,159]; T=273.15+temperatura; % [K] v_spec=interp1(T_vspec_vett,v_spec_vett,T); ro=1./v_spec; % [Kg/m^3]

% calcolo delle aree e della velocità di rotazione

w=omega/60*2*pi; % [rad/s]

R=Rt+cle; % [m] raggio del condotto

(4)

224

A2=pi*(R^2-Rh2^2); % [m^2] sezione d'uscita

% costruzione matrici D=[Prova1(:,trasduttore),Prova2(:,trasduttore),Prova3(:,trasduttore),… Prova4(:,trasduttore),Prova5(:,trasduttore),Prova6(:,trasduttore),… Prova7(:,trasduttore),Prova8(:,trasduttore),Prova9(:,trasduttore),… Prova10(:,trasduttore),Prova11(:,trasduttore),Prova12(:,trasduttore),… Prova13(:,trasduttore),Prova14(:,trasduttore),Prova15(:,trasduttore),… Prova16(:,trasduttore),Prova17(:,trasduttore),Prova18(:,trasduttore),… Prova19(:,trasduttore),Prova20(:,trasduttore),Prova21(:,trasduttore),… Prova22(:,trasduttore),Prova23(:,trasduttore),Prova24(:,trasduttore),… Prova25(:,trasduttore),Prova26(:,trasduttore),Prova27(:,trasduttore),… Prova28(:,trasduttore),Prova29(:,trasduttore)]; D_0=[Prova1_0(:,trasduttore)]; D=mean(D); D_0=mean(D_0);

dp_t=(D-D_0)*10^5; % [Pa]media del segnale epurato della % media a w=0 per trasduttore1

% calcolo parametri adimensionali

fi=Q./(pi*w*Rt^3); % coefficiente di flusso

psi=dp_t./(ro*w^2*Rt^2); % prevalenza

% PLOTTAGGIO DEI RISULTATI

% costruzione della curva caratteristica

plot(fi,psi,'*r'); grid on

title(sprintf('Curva caratteristica DAP4')) xlabel('\phi')

ylabel('\psi')

legend('\omega=3000 rpm') axis([0 0.08 0 0.3])

% costruzione della curva velocità specifica in funzione di fi

(5)

225 figure() plot(fi,w_spec,'pr') xlabel('\phi') ylabel('velocità specifica') legend('\omega=3000 rpm') grid on

% Costruzione curva raggio specifico in funzione della velocità specifica

r_spec=fi.^-0.5.*psi.^(1/4); % definizione raggio specifico figure()

loglog(w_spec,r_spec,'pr') % plottaggio nel diagramma bilogaritmico xlabel('velocità specifica')

ylabel('raggio specifico') legend('\omega=3000 rpm') grid on

% SALVATAGGIO DEI RISULTATI

fi_dap4_3000=fi; psi_dap4_3000=psi

save('Prove_DAP4_3000_nc_risultati','fi_dap4_3000','psi_dap4_3000');

A.2 Creazione delle curve di prestazione cavitante

Si riportano ora i listati utilizzati per la creazione delle curve di prestazione cavitante, in modalità discreta e continua

A.2.1 Modalità discreta

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Calcolo delle curve di cavitazione dell'induttore Dapamito4 (per punti) % % % % Luca Pecorari 2009 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% close all clear all clc

(6)

226

% PARAMETRI INIZIALI DA IMPOSTARE

n_p=15; % numero di prove

omega=3000; % [giri al minuto] velocità di rotazione dell'induttore

cas=1000; % campionamenti al secondo

ntot=5000; % n°tot campionamenti per prova trasduttore=3; % scelta trasduttore differenziale

% [2]=seconda colonna (fondo scala 1,10 bar) % [3]=terza colonna(fs=7 bar)

temperatura=*15.3,15.7,15.8,16.0,16.5,16.7,17.0,16.8,15.6,… % [°C] 16.1,16.7,16.7,16.8,16.9,17.4];

Q=0.001**30.92,30.93,30.95,30.93,30.93,30.94,30.94,30.90,… % [m^3/s] 30.62,30.34,30.04,29.85,29.70,29.25,27.66];

% parametri geometrici induttore

Rt=0.081; % [m] raggio di estremità induttore

Rh1=0.035; % [m] raggio mozzo in ingresso

Rh2=0.0585; % [m] raggio mozzo in uscita

% parametri camera di prova

cle=0.0008; % [m] gioco radiale

batt_idro=0.06; % [bar] Correzione per il trasduttore assoluto di % pressione dovuto al battente idrostatico

% CARICAMENTO DATI P_in_1=load('pin_1_050_Q_30_94.txt'); P_in_2=load('pin_0_890_Q_30_94.txt'); P_in_3=load('pin_0_720_Q_30_94.txt'); P_in_4=load('pin_0_560_Q_30_94.txt'); P_in_5=load('pin_0_500_Q_30_94.txt'); P_in_6=load('pin_0_470_Q_30_94.txt'); P_in_7=load('pin_0_430_Q_30_94.txt'); P_in_8=load('pin_0_400_Q_30_94.txt'); P_in_9=load('pin_0_380_Q_30_94.txt'); P_in_10=load('pin_0_370_Q_30_94.txt'); P_in_11=load('pin_0_340_Q_30_94.txt'); P_in_12=load('pin_0_300_Q_30_94.txt'); P_in_13=load('pin_0_290_Q_30_94.txt'); P_in_14=load('pin_0_270_Q_30_94.txt'); P_in_15=load('pin_0_230_Q_30_94.txt'); dati_motore_fermo=load('pin_1_050_Q_30_94_0000.txt'); dati_motore_fermo_mediati=mean(dati_motore_fermo(:,trasduttore));

(7)

227

% OPERAZIONI DA SVOLGERE

% calcolo densità acqua in funzione della temperatura

T_vspec_vett=280:5:475; % [K] v_spec_vett=1e-003+1e-006*[0 1 1 2 4 5 7 9 11 13 15 18 21 24 … %[ m^3/kg] 27 30 34 37 41 45 49 53 58 62 67 72 77 82 87 … 93 99 104 110 117 123 130 137 144 152 159]; T=273.15+temperatura; % [K] v_spec=interp1(T_vspec_vett,v_spec_vett,T); ro=1./v_spec; % [kg/m^3]

% calcolo pressione di vapore in funzione della temperatura

T_vap_vett=275:5:370; % [K] p_vap_vett=1e+006*[0.0006980 0.0009912 0.001388 … % [Pa] 0.001919 0.002620 0.003536 0.004718 0.006230 … 0.008143 0.01054 0.01353 0.01721 0.02171 0.02718 ... 0.03377 0.04166 0.05105 0.06215 0.07521 0.09047]; pv=interp1(T_vap_vett,p_vap_vett,T); % [Pa]

% calcolo delle aree e della velocità di rotazione

w=omega/60*2*pi; % [rad/s] velocità di rotazione

R=Rt+cle; % [m] raggio del condotto

A1=pi*(R^2-Rh1^2); % [m^2] sezione d'ingresso

A2=pi*(R^2-Rh2^2); % [m^2] sezione d'uscita

dp_din=0.5*ro.*Q.^2.*((A1^2-A2^2)/(A1^2*A2^2)); %[Pa] variazione pressione % dinamica % costruzione matrici DP=[P_in_1(:,trasduttore),P_in_2(:,trasduttore),P_in_3(:,trasduttore),… P_in_4(:,trasduttore),P_in_5(:,trasduttore),P_in_6(:,trasduttore),… P_in_7(:,trasduttore),P_in_8(:,trasduttore),P_in_9(:,trasduttore),… P_in_10(:,trasduttore),P_in_11(:,trasduttore),P_in_12(:,trasduttore),... P_in_13(:,trasduttore),P_in_14(:,trasduttore),P_in_15(:,trasduttore)]; Pin=[P_in_1(:,1),P_in_2(:,1),P_in_3(:,1),P_in_4(:,1),P_in_5(:,1),P_in_6(:,1),… P_in_7(:,1),P_in_8(:,1),P_in_9(:,1),P_in_10(:,1),P_in_11(:,1),P_in_12(:,1),… P_in_13(:,1),P_in_14(:,1),P_in_15(:,1)];

(8)

228

% costruzione matrici dei valori mediati

j=0; g=0; for k=1:n_p g=g+1;

dp=10^5*mean(DP); % [Pa] media del segnale di prova end

for a=1:n_p j=j+1;

p_in=10^5*mean(Pin); % [Pa] pressione in ingresso end

p_motore_fermo=10^5*dati_motore_fermo_mediati;

% calcolo parametri adimensionali

batt_idro_Pa=10^5*batt_idro; dp_def=dp-p_motore_fermo;

fi=Q./(pi*w*Rt^3); % coefficiente di flusso

psi=dp_def./(ro.*w^2*Rt^2); % prevalenza

sigma=((p_in-batt_idro_Pa)-pv)./(0.5*ro.*(w.*Rt)^2); % numero di cavitazione psi_ref=psi(1); % Coefficiente di prevalenza incondizioni non cavitanti psi_per=psi./psi_ref; % Variazione percentuale del coefficiente di prevalenza

% PLOTTAGGIO DEI RISULTATI

load(‘fi_0_059d4_cont_risultati.mat') plot(sigma,psi,'marker','o','MarkerSize',6,'MarkerEdgeColor','k','MarkerFaceColor','r','Lin eStyle','-') hold on plot(sigma_dap4_0_059_cont,psi_dap4_0_059_cont,'marker','o','MarkerSize',6,'Marker EdgeColor','k','MarkerFaceColor','g','LineStyle','none')

title('Prestazioni Cavitanti DAPAMITO4') xlabel('\sigma')

ylabel('\psi')

legend('prova discreta','prova continua') grid on

(9)

229 figure(2)

plot(sigma,psi_per,'pr',sigma,psi_per,'-r') title('Variazione percentuale di \Psi') xlabel('\sigma')

ylabel('\Psi/\Psi_N_C') legend('\phi=0.059 T15') grid on

axis([0 0.6 0.5 1.2])

% SALVATAGGIO DEI RISULTATI

sigma_dap4_0_059_disc=sigma; psi_dap4_0_059_disc=psi; psi_dap4_0_059_disc_per=psi_per;

save('fi_0_059d4_disc_risultati','sigma_dap4_0_059_disc','psi_dap4_0_059_disc',… 'psi_dap4_0_059_disc_per');

A.2.2 Modalità continua

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Calcolo delle curve di cavitazione dell'induttore Dapamito4 (continue) % % % % Luca Pecorari 2009 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% close all clear all clc

% PARAMETRI INIZIALI DA IMPOSTARE

temperatura=15.4; % temperatura in °C

omega=3000; % [giri al minuto] velocità di rotazione dell'induttore n=2400; % numero di campioni per definire un punto

ntot=240000; % n°tot campionamenti per prova

cas=1000; % campionamenti al secondo

trasduttore=3; % scelta trasduttore differenziale

% [2]=seconda colonna (fondo scala 1,10 bar) % [3]=terza colonna(fs=7 bar)

(10)

230

% parametri geometrici induttore

Rt=0.081; % [m] raggio di estremità induttore

Rh1=0.035; % [m] raggio mozzo in ingresso

Rh2=0.0585; % [m] raggio mozzo in uscita

% parametri camera di prova

cle=0.0008; % [m] gioco radiale

batt_idro=0.06; % [bar] Correzione per il trasduttore assoluto di % pressione dovuto al battente idrostatico

% CARICAMENTI DATI dati_motore_fermo=load('phi_0_059_inst_cle_08_0000.txt'); dati_motore_acceso=load('phi_0_059_inst_cle_08.txt'); Q_mamp=load('flussimetro_Q_30_94_cle_08_sincro.txt'); Q_mamp=(10^3)*Q_mamp; dati_motore_fermo_mediati=mean(dati_motore_fermo(:,trasduttore)); % OPERAZIONI DA SVOLGERE

% calcolo densità acqua in funzione della temperatura

T_vspec_vett=280:5:475; % [K] v_spec_vett=1e-003+1e-006**0 1 1 2 4 5 7 9 11 13 15 18 21 24 … %[ m^3/kg] 27 30 34 37 41 45 49 53 58 62 67 72 77 82 87 … 93 99 104 110 117 123 130 137 144 152 159]; T=273.15+temperatura; % [K] v_spec=interp1(T_vspec_vett,v_spec_vett,T); ro=1./v_spec; % [kg/m^3]

% calcolo pressione di vapore in funzione della temperatura

T_vap_vett=275:5:370; % [K] p_vap_vett=1e+006**0.0006980 0.0009912 0.001388 … % [Pa] 0.001919 0.002620 0.003536 0.004718 0.006230 … 0.008143 0.01054 0.01353 0.01721 0.02171 0.02718 ... 0.03377 0.04166 0.05105 0.06215 0.07521 0.09047]; pv=interp1(T_vap_vett,p_vap_vett,T); % [Pa]

(11)

231

% calcolo delle aree e della variazione di pressione dinamica

w=omega/60*2*pi; % [rad/s] velocità di rotazione

R=Rt+cle; % [m] raggio del condotto

A1=pi*(R^2-Rh1^2); % [m^2] sezione d'ingresso

A2=pi*(R^2-Rh2^2); % [m^2] sezione d'uscita

% costruzione matrice della portata

[np,z]=size(Q_mamp); % np=numero di valori acquisiti per la portata rap=ntot/np; Q_mamp_completa=ones(ntot,1); for a=1:np for b=1+((a-1)*rap):a*rap Q_mamp_completa(b,1)=Q_mamp(a); end end m=50/16; c=-(4*m); Q_mamp_completa=10^(-3)*((m*Q_mamp_completa)+c); % [Pa]

% costruzione matrice dei valori mediati (SENZA SOVRAPPOSIZIONE)

for j=1:ntot/n riga=0; for i=(j-1)*n+1:j*n riga=riga+1; ram1(riga,1:3)=dati_motore_acceso(i,1:3); ram2(riga,1)=Q_mamp_completa(i,1); end

dati_mediati(j,1:3)=10^5.*mean(ram1); % [Pa] matrice di tre colonne

% (Pin,Dp1,Dp2) le cui righe sono la % media di ciascun gruppo di Dn punti Q_mediato(j,1)=mean(ram2);

end

p_motore_fermo=10^5*dati_motore_fermo_mediati;

time=ntot/cas; % [sec] durata dell'acquisizione in secondi

(12)

232 vettore_secondi=(time/nv):(n/cas):time;

dp_din=0.5*ro.*Q_mediato.^2.*((A1^2-A2^2)/(A1^2*A2^2)); % [Pa]

% calcolo parametri adimensionali

batt_idro_Pa=10^5*batt_idro; % [Pa] Correzione per il trasduttore assoluto di % pressione dovuto al battente idrostatico fi=Q_mediato./(pi*w*Rt^3); % coefficiente di flusso psi=(dati_mediati(:,trasduttore)-p_motore_fermo)./(ro*w^2*Rt^2);

% prevalenza trascurando differenza di pressione dinamica sigma=((dati_mediati(:,1)-batt_idro_Pa)-pv)./(0.5*ro*(w.*Rt)^2);

% numero di cavitazione

psi_ref=psi(1); % Coefficiente di prevalenza in condizioni non cavitanti psi_per=psi./psiref; % Variazione percentuale del coefficiente di prevalenza

% PLOTTAGGIO DEI RISULTATI

plot(sigma,psi,'pg','MarkerFaceColor','g') title('Prestazioni Cavitanti Dapamito4') xlabel('\sigma') ylabel('\Psi') legend('\phi=0.059 T15') grid on axis([0 0.6 0 0.35]) figure(2) plot(sigma,psi_per,'pr','MarkerFaceColor','r') title('Variazione percentuale di \Psi')

xlabel('\sigma') ylabel('\Psi/\Psi_N_C') legend('\phi=0.059 T15') grid on axis([0 0.6 0.5 1.2]) figure(3) plot(vettore_secondi,fi./0.059,'-k')

title('Variazione percentuale di \Phi nel tempo') xlabel('Durata esperimento [s]')

(13)

233 ylabel('\Phi/\Phi_n_o_m')

grid on figure(4)

plot(vettore_secondi,((dati_mediati(:,1)-batt_idro_Pa)/10^5),'-b') title('Variazione della pressione in ingresso nel tempo')

xlabel('Durata esperimento [s]') ylabel('Pressione in ingresso [bar]') grid on

% SALVATAGGIO DEI RISULTATI

fi_dap4_0_059_cont=fi; sigma_dap4_0_059_cont=sigma; psi_dap4_0_059_cont=psi; psi_dap4_0_059_cont_per=psi_per;

save('fi_0_059d4_cont_risultati','fi_dap4_0_059_cont','sigma_dap4_0_059_cont',… 'psi_dap4_0_059_cont','psi_dap4_0_059_cont_per');

A.3 Creazione dei diagrammi a cascata

Si riportano ora i listati utilizzati per la creazione dei diagrammi a cascata, utilizzati per lo studio delle instabilità.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Studio delle instabilità fluidodinamiche sull'induttore DAPAMITO4 % % % % Lucio Torre 2004 - Piero Miloro 2009 - Luca Pecorari 2009 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% clc close all clear all % OPERAZIONI PRELIMINARI giri=3000; % [rpm] portata=27.85; % [l/s] temperatura=74.45; % [°C] correzione=0.06; % [bar]

(14)

234

cas=1000; % campionamenti al secondo

dati0_mat=load('phi_0_053_inst_cle_08_T75_bis_0000.txt'); dati1_mat=load('phi_0_053_inst_cle_08_T75_bis.txt'); p_dati=[];

Dp_dati=[];

psi_bar=0.0689476; % fattore di conversione 1 psi =0.0689476 bar

% scelta dei trasduttori (ad ogni colonna corrisponde un trasduttore)

p_dati=1e005*dati1_mat(:,1)-(correzione*10^5); % [Pa]

PCB1_dati=psi_bar*1e005*dati1_mat(:,10); % [Pa]

PCB2_dati=psi_bar*1e005*dati1_mat(:,9); % [Pa]

% dati dell'induttore e dell'analisi da impostare

Rt=0.081; % [m] raggio induttore

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

% (ad esempio n_spettri=1000,3000,4000,6000,8000) dt=1/cas; % [s] intervallo di campionamento

N_av_spec=2; % numero di medie per ciascuno spettro (ad esempio 2,3,10) dim1=size(p_dati);

size(Dp_dati); dim_p_dati=dim1(1);

% CALCOLO COEFFICIENTI ADIMENSIONALI

A=pi*Rt^2; % [m^2]

RPM=giri; % [giri/min]

omega=2*pi*RPM/60; % [rad/s]

V=portata*1e-003; % [m^3/sec]

phi=V/(A*omega*Rt); % coefficiente di flusso

% calcolo densità acqua in funzione della temperatura

T_vspec_vett=280:5:475; % [K]

(15)

235 27 30 34 37 41 45 49 53 58 62 67 72 77 82 87 … 93 99 104 110 117 123 130 137 144 152 159]; T=273.15+temperatura; % [K] v_spec=interp1(T_vspec_vett,v_spec_vett,T); ro=1./v_spec; % [kg/m^3]

% calcolo pressione di vapore in funzione della temperatura

T_vap_vett=275:5:370; % [K] p_vap_vett=1e+006**0.0006980 0.0009912 0.001388 … % [Pa] 0.001919 0.002620 0.003536 0.004718 0.006230 … 0.008143 0.01054 0.01353 0.01721 0.02171 0.02718 ... 0.03377 0.04166 0.05105 0.06215 0.07521 0.09047]; pv=interp1(T_vap_vett,p_vap_vett,T); % [Pa] % 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 (N_spettri) colonne size(p_vett_PCB1;

% calcolo dei valori medi di sigma

p_spettri_mean=[];

p_spettri_mean=mean(p_vett_spettri); sigma_spettri=[];

(16)

236

f_Nyq=1/(2*dt); % [Hz] frequenza di Nyquist

Tr=n_spettri/(1/dt); % [s] lunghezza totale registrazione

T=Tr/N_av_spec; % [s] lunghezza del subrecord

% 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 sub record

% (è anche uguale a n_spettri/N_av_spec) L=[]; % calcolo del numero L di zeri da aggiungere 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

df=1/T; % [Hz] spaziatura delle frequenze di stima dello spettro

% definizione del vettore delle frequenze per la stima dello spettro

T_L=(N+L)*dt; df_L=1/T_L;

omega_vett=0:(2*pi/T_L):pi/dt; % [rad/s] pulsazioni

(17)

237

% divisione della matrice dei dati in N_av_spec parti

u1_T=[]; u2_T=[]; for i=1:N_spettri

p1=p_vett_PCB1(:,i); % i dati relativi a ciascuno spettro sono disposti % secondo colonne infatti il vettore di dati % iniziale,es.PCB1_dati, è un vettore colonna e % viene divisa in N_spettri parti,anch'esse vettori % colonna, e organizzata in una matrice,

% p_vett_PCB1, di dimensioni

% [dim(PCB1_dati)]/N_spettri righe e N_spettri % colonne p2=p_vett_PCB2(:,i); for j=1:N_av_spec r=(i-1)*N_av_spec+j; 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

% calcolo della media

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)

x_N(:,i)=u1_T(:,i)-u_mean(i)*ones(N,1); y_N(:,i)=u2_T(:,i)-v_mean(i)*ones(N,1);

(18)

238 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; size(x_Hann)

% aggiunta degli zeri

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]; 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)

(19)

239

% CALCOLO STIME DEGLI AUTOSPETTRI

% calcolo coefficienti {S(k)} degli autospettri e cross_spettri dei 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=[]; 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); 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;

% 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

size(S_yx)

% per i cross-spettri si calcola il modulo e la fase

(20)

240 for i=1:N_spettri S_xy_mod(i,:)=abs(S_xy(i,:)); S_xy_fase(i,:)=angle(S_xy(i,:))*180/pi; % [deg] S_yx_mod(i,:)=abs(S_yx(i,:)); S_yx_fase(i,:)=angle(S_yx(i,:))*180/pi; % [deg] end; size(S_yx_mod) size(S_yx_fase)

% 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 % GRAFICI size(sigma_spettri) size(freq_vett) size(S_xx) size(S_xx(10,1:(N+L)/2)) sigma_ref=1; figure('Name','Waterfall Sxx') clf; hold on;

(21)

241 grid on; for i=1:N_spettri sig_vett=sigma_spettri(i)*ones(1,((N+L)/2)); plot3(sig_vett./sigma_ref,freq_vett(1:(N+L)/2),S_xx(i,1:(N+L)/2)); end; xlabel('\sigma/\sigma_r_e_f'); ylabel('Frequency [Hz]'); zlabel('Amplitude S_x_x [Pa^2 s]'); title('Waterfall plot \phi=0.053');

---

% filtraggio passaggio pale per waterfall

for pippo=50:50:499 % eliminazione frequenze passaggio pale wo = pippo/500; bw = 0.006; % 0.006

[b,a] = iirnotch(wo,bw);

for ww=1:(N_spettri*N_av_spec)

x_L(:,ww)=filtfilt(b,a,x_L(:,ww)); % vettore di lunghezza N+L end

end

% calcolo DFT delle serie {x(r)} e {y(r)} dei singoli subrecord

X_DFT_filtrato=[];

for qq=1:(N_spettri*N_av_spec) X_1_filtrato=x_L(:,qq).';

X_DFT_filtrato(qq,:)=fft(X_1_filtrato); end;

% calcolo coefficienti {S(k)} degli autospettri e cross_spettri dei singoli subrecord

S_xx_mat_filtrato=[];

for rr=1:(N_spettri*N_av_spec)

S_xx_mat_filtrato(rr,:)=conj(X_DFT_filtrato(rr,:)).*X_DFT_filtrato(rr,:); end;

(22)

242 Sxx_mat_filtrato=[]; S_xx_filtrato=[]; s=0; for pp=1:N_spettri s=(pp-1)*N_av_spec+1; Sxx_mat_filtrato=S_xx_mat_filtrato(s:(s+N_av_spec-1),:); S_xx_filtrato(pp,:)=(dt/(N*N_av_spec))*sum(Sxx_mat_filtrato); end; --- figure('Name','Waterfall Sxx (filtered)') clf; hold on; grid on; for i=1:N_spettri sig_vett=sigma_spettri(i)*ones(1,((N+L)/2)); plot3(sig_vett./sigma_ref,freq_vett(1:(N+L)/2),S_xx_filtrato(i,1:(N+L)/2)); end; xlabel('\sigma/\sigma_r_e_f'); ylabel('Frequency [Hz]'); zlabel('Amplitude S_x_x [Pa^2 s]');

title('Waterfall plot \phi=0.053 (filtered)'); figure('Name','Amplitude/Phase Sxy') 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./sigma_ref,freq_vett(1:(N+L)/2),S_xy_mod(i,1:(N+L)/2)); end; xlabel('\sigma/\sigma_r_e_f'); ylabel('Frequency [Hz]');

zlabel('Amplitude S_x_y [Pa^2 s]'); subplot(212);

hold on; grid on;

(23)

243 sig_vett=sigma_spettri(i)*ones(1,((N+L)/2)); plot3(sig_vett./sigma_ref,freq_vett(1:(N+L)/2),S_xy_fase(i,1:(N+L)/2)); end; xlabel('\sigma/\sigma_r_e_f'); ylabel('Frequency [Hz]'); zlabel('Phase [deg]'); figure('Name','Amplitude Sxy') clf; hold on; grid on; for i=1:N_spettri sig_vett=sigma_spettri(i)*ones(1,((N+L)/2)); plot3(sig_vett./sigma_ref,freq_vett(1:(N+L)/2),S_xy_mod(i,1:(N+L)/2)); end; xlabel('\sigma/\sigma_r_e_f'); ylabel('Frequency [Hz]');

zlabel('Amplitude S_x_y [Pa^2 s]'); figure('Name','Phase Sxy') clf; hold on; grid on; for i=1:N_spettri sig_vett=sigma_spettri(i)*ones(1,((N+L)/2)); plot3(sig_vett./sigma_ref,freq_vett(1:(N+L)/2),S_xy_fase(i,1:(N+L)/2)); end; xlabel('\sigma/\sigma_r_e_f'); ylabel('Frequency [Hz]'); zlabel('Phase[deg]'); figure('Name','Amplitude/Phase Syx') 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./sigma_ref,freq_vett(1:(N+L)/2),S_yx_mod(i,1:(N+L)/2)); end; xlabel('\sigma/\sigma_r_e_f');

(24)

244 ylabel('Frequency [Hz]');

zlabel('Amplitude S_y_x [Pa^2 s]'); subplot(212); hold on; grid on; for i=1:N_spettri sig_vett=sigma_spettri(i)*ones(1,((N+L)/2)); plot3(sig_vett./sigma_ref,freq_vett(1:(N+L)/2),S_yx_fase(i,1:(N+L)/2)); end; xlabel('\sigma/\sigma_r_e_f'); ylabel('Frequency [Hz]'); zlabel('Phase [deg]') figure('Name','Waterfall Syy') clf; hold on; grid on; for i=1:N_spettri sig_vett=sigma_spettri(i)*ones(1,((N+L)/2)); plot3(sig_vett./sigma_ref,freq_vett(1:(N+L)/2),S_yy(i,1:(N+L)/2)); end; xlabel('\sigma/\sigma_r_e_f'); ylabel('Frequency [Hz]');

zlabel('Amplitude S_y_y [Pa^2 s]'); figure('Name','Coherence Sxy Syx') 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./sigma_ref,freq_vett(1:(N+L)/2),gamma2_xy(i,1:(N+L)/2)); hold on; grid on; end; xlabel('\sigma/\sigma_r_e_f'); ylabel('Frequency [Hz]'); zlabel('Coherence_x_y'); subplot(212); hold on;

(25)

245 grid on; for i=1:N_spettri sig_vett=sigma_spettri(i)*ones(1,((N+L)/2)); plot3(sig_vett./sigma_ref,freq_vett(1:(N+L)/2),gamma2_yx(i,1:(N+L)/2)); hold on; grid on; end; xlabel('\sigma/\sigma_r_e_f'); ylabel('Frequency [Hz]'); zlabel('Coherence_y_x'); flag=1; while flag==1 per=input('inserisci % sigma') 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

figure('Name','Amplitude Sxx - Amplitude Sxy - Phase Sxy - Coherence Sxy') plot(freq_vett(1:(N+L)/2),S_xx(zz,1:(N+L)/2)./(5*10^2)); hold on plot(freq_vett(1:(N+L)/2),S_xy_mod(zz,1:(N+L)/2)./(5*10^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') axis([a1 a2 -200 200]) grid xlabel('Frequency [Hz]') 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)

(26)

246 gammaa=gamma2_xy(zz,ss) break end end plot(frequenza,fasee,'or')

figure('Name','Amplitude Sxx - Phase Sxy - Coherence Sxy') subplot(3,1,1);

plot(freq_vett(1:(N+L)/2),S_xx(zz,1:(N+L)/2)); hold on

line([frequenza frequenza],[0 10000000000],'color',[0 0 0],'LineWidth',1.5); xlabel('Frequency [Hz]') ylabel('S_x_x [Pa^2/s]'); grid on mmm=max(S_xx(zz,1:(N+L)/2)); axis([a1 a2 0 400000]) 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('Frequency [Hz]') ylabel('Phase [deg]') grid on axis([a1 a2 -180 180]) 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 2],'color',[0 0 0],'LineWidth',1.5); xlabel('Frequency [Hz]')

ylabel('Coherence') grid on

axis([a1 a2 0 1])

flag=input('1 per continuare') end

Riferimenti

Documenti correlati

ma dall’altro lato evidenzia anche la forte differenza con la fattispecie contravvenzionale di cui all’art. Nel compiere questa scelta il legislatore non sembra essere stato

La seconda parte del capitolo tratta il passaggio, avvenuto nel 1942, dalla gestione degli Immobili a quella del neonato Ente Teatrale Italiano (ETI), in seguito alla quale il

Despite the difficulties dyslexic students can find while learning a foreign language, it is important for them and all the people around them (including teachers,

Negli ultimi anni, il settore dell'industria alimentare cinese ha registrato un rapido sviluppo, con un tasso di crescita media annua superiore al 20%, pari al doppio

In Chapter III, the Authors will focus on the risks and trade-offs of the Commission’s choice to support the deployment of an all fibre network, while bearing in mind

Examples of national regulatory instruments used to govern broadcasting markets are the following: restrictions on media ownership limitation of shares in a media company, limitation

Tale teoria, in conclusione, risulta utile per spiegare il processo di istituzionalizzazione delle tecnologie digitali, sempre più presenti nella vita quotidiana

Available Open Access on Cadmus, European University Institute Research Repository.... ‘Teoriat hamekomot a merkazi’im vehageographia halsraelit: Merkhav, Shoah,