Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
vuoi
o PayPal
tutte le volte che vuoi
Danneggiamento Non Lineare
E:\Esercitazioni CC...\F_Danneggiamento_Non_Lineare.m 1 of 21 function [DNL]=F_Danneggiamento_Non_Lineare (Sr,a,m,mu,K,nfig)2 %Funzione che restituisce il danneggiamento cumulato secondo il3 %criterio non lineare di Manson e Halford, inserendo:4 %La sigma di rottura (Sr);5 %Il vettore delle ampiezze (a);6 %Il vettore delle ampiezze medie (m);7 %"mu" e "K" della curva di Wholer del materiale;8 %il numero della figura (se si vuole).91011 %Considero solo quelle positive12 m(m<0)=0;1314 %Ampiezze di Goodman:15 ag=a./(1-m/Sr);1617 %Determino l'esponente:18 aref=max(ag);19 r=(aref./ag).^(0.4*mu);20 %(L'ampiezza di riferimento da considerare è quella più alta21 %perchè deve dare origine al ncr più basso).2223 %inizializzo il vettore del danneggiamento:24 DNL=zeros(size(ag));2526 %Inizio del ciclo while: eseguito fino al raggiungimento di "DNL"= 1= "rottura"27 %con l'ulteriore
[DNLd]=F_Danneggiamento_Non_Lineare (Sr,ad,m,mu,K,0);
nNLd=length(DNLd);
%-----------------------RAPPRESENTAZIONE RISULTATI-----------------------%
figure; plot(1:nLr,DLr,'k', 1:nLc,DLc,'g', 1:nLd,DLd,'r', 1:nNLr,DNLr,'k--', 1:nNLc,DNLc,'g--', 1:nNLd,DNLd,'r--', 'Linewidth',1.5);
grid on; ylim([0,1.2*max([DLr, DLc, DLd, DNLr, DNLc, DNLd])]);
title('Confronto Criteri');E:\Esercitazioni CCM ...\Applicazione_Funzioni_ccm6.m 2 of 25
xlabel('Numero di cicli n'); ylabel('Danneggiamento');
legend('Random Miner (L)', 'Crescente Miner (L)', 'Decrescente Miner(L)','Random Manson (NL)', 'Crescente Manson (NL)', 'Decrescente Manson (NL)','location', 'best');
E:\Esercitazioni CCM (30L)\es 7\F_RainflowF.m 1 of 21 function [A,M,E]=F_RainflowF(E,nfig)2 % Esegue il conteggio rainflow3 %Il testo formattato con i tag HTML è il seguente:
<p>E=estremi;nfig=numero figura (porre 0 per non produrre figure)4 % A,M=ampiezze e medie cicli Rainflow; E=estremi residui5 % [A,M,E]=F_RainflowF(E,nfig)67 nE=length(E); % N. estremi8 L2=round(nE/2+1);A=zeros(1,L2);M=A; % inizializza i vettori A,M9 if nfig;n0=1:nE;ki=0;end % posizioni degli estremi per il tracciamento deigrafici1011 N=0; % n. cicli12 while nE>213 % semicicli14 r=abs(diff(E));1516 % condizione rainflow rk<rk+117 k=r(1:end-1)<=r(2:end);1819 l=length(k);for j=2:l;if k(j);if k(j-1);k(j)=0;end;end;end % elimina iconsecutivi20 k=find(k); % indici2122 if k23 % memorizza A ed M24 Nk=length(k);i=N+(1:Nk);25 A(i)=r(k);M(i)=E(k)+E(k+1);2627 if nfig;Ev=E;nv=n0;n0([k k+1])=[];ki=ki+1;end % memorizza gli estremidel passo precedente per i grafici di confronto2829 % elimina i picchi30 E([k k+1])=[];3132 % aggiorna nE ed N33 nE=length(E);N=N+Nk;3435 if nfig36 figure(nfig+ki-1);plot(nv,Ev,n0,E, ':',nv(k),Ev(k),'ro',nv(k+1),Ev(k+1),'ro');grid on;37
</code>
</pre>Iterazione n.ki
38 if ki==1;
legend('Storia iniziale','Storia residua','Estremi da eliminare','Location','Best');
ax=axis;
39 else;
axis(ax);
40 end
41 end
42 else
break
43 end
44 end
45 % elimina i cicli con ampiezza nulla
E:\Esercitazioni CCM (30L)\es 7\F_RainflowF.m 2 of 24
i=A==0;A(i)=[];M(i)=[];
50
51 % divide per due medie e ampiezze
52 A=A/2;M=M/2;
53
E:\Esercitazioni CCM (30L)\es 7\F_PSD_Infittimento.m 1 of 11
function [wf,Sxf,dt,dw,N]=F_PSD_Infittimento(w,Sx,T,nws,nfig)
2 % Infittimento PSD in base a T ed nws
3 % w,Sx=omega e PSD da infittire
4 % T=durata campione; nws=fattore delta t (se nws=0, nws=8)
5 % wf,Sxf=omega e PSD infittite
6 % dt=delta t;dw=delta omega;N=N;
7
8 % delta w
9 dw=2*pi/T;
10
11 % estensione di w a wmax e determinazione di N
12 if nws==0;nws=8;end
13
14 ws=w(end);
15 if nws==1
16 wmax=ws*2;N=round(wmax/dw)-1;
17 else
18 wmax=ws*nws;
19 n=ceil(log2(wmax/dw));
20 N=2^n;
21 end
22
23 % vettore wf
24
N1=N-1;
25 wf=(0:N1)*dw;
2627 % wmax effettiva
28 wmax=wf(end);
29
30 % dt
31 dt=2*pi/wmax;
32
33 % interpolazione PSD
34 [~,iw]=min(abs(wf-ws));
35 Sxf=zeros(size(wf));
36 Sxf(1:iw)=interp1(w,Sx,wf(1:iw),'linear');
37
38 if nfig
39 figure(nfig);
40 subplot(2,1,1);
41 plot(wf,Sxf,'.',w,Sx,'r.');
42 grid on
43 title(['N=' num2str(N) ' dw=' num2str(dw) ' dt=' num2str(dt) ' wmax='num2str(wmax)])
44 subplot(2,1,2);
45 plot(wf,Sxf,'.',w,Sx,'r.');
46 grid on;
47 xlim([0 w(end)]);
48 end
E:\Esercitazioni CCM (30L)\es 7\F_MaxMin.m 1 of 11 function E=F_MaxMin(y)
2 % estrae gli estremi di y
3 % E=F_MaxMin(y);
4
5 d=diff(y);
6
7 da=d.*[d(1) d(1:(end-1))];
8
9 E=y(da<0);
10
E:\Esercitazioni...\EsercitazioneRandomFatigue_ccm7.m 1 of 71 clear;clc;close all
23 load PSD_materiale
45 %Obiettivo: Calcolare il danneggiamento del materiale di un
6 %componente soggetto a fatica aleatoria monoassiale.
7 %Nel caso di processo aleatorio a banda larga (BL), si simulano
I campioni del processo a partire dalla PSD, si determinano gli estremi (max e min), si opera il conteggio utilizzando il metodo Rainflow determinando i valori di ampiezza e v. medi (m(m<0)=0).
Per ogni campione che si genera, detemineremo un n. cicli e quindi la tensione eq. di Miner elevata a mu.
Da questa, otterremo il danneggiamento dovuto al singolo campione.
Generiamo campioni fino a quando il Dtot=1 (cedimento). Dal numero di campioni e dalla loro singola durata (3600s), determiniamo la durata a fatica del componente.
Periodo e frequenza massima (della PSD):
Durata temporale dei campioni:
T=3600;
Frequenza massima considerata sulla base della massima per cui la PSD del processo assume valori significativi: