Note sull'algoritmo di analisi modale
È necessario sostituire il comando "assemblaMatrici_M_K_lumped" con "assemblaMatrici_M_K_1piano", ovvero l'altro algoritmo che potete scaricare sempre da me, che consente di assemblare le matrici di rigidezza e massa per un portale 1 piano. Quando caricate questo algoritmo in Matlab, dovrete salvarlo con il nome di "assemblaMatrici_M_K_1piano", così che questo algoritmo possa richiamarlo e fare l'analisi modale piana.
Algoritmo
close all
clear all
clc
Analisi modale
Rendo il sistema di ED delle equazioni di equilibrio, tutto disaccoppiato
assemblaMatrici_M_K_lumped % cambiare nel caso in cui si usa Mconsistent
Equazione del moto Ma+Ku=-M l ag(t)
Vettore di spostamento pseudostatico, il sisma non agisce sulle rotazioni quindi zerol=[1 1 1];
Fattori di eccitazione modale
for yy=1:length(freq)
eccit_mod(yy).L=modo(yy).n'*M_tt*l';
end
Masse modali
for yy=1:length(freq)
masse_mod(yy).M=modo(yy).n'* M_tt *modo(yy).n;
end
Fattori di partecipazione modale
(quantizza il grado di partecipazione modo nel totale)
for yy=1:length(freq)
gamma(yy).g=eccit_mod(yy).L/ masse_mod(yy).M;
end
Espansione modale del vettore di eccitazione
--> s, peff(t)=s*p(t)=M l ag(t) s=M_tt*l';
for yy=1:length(freq)
esp_s(yy).sn=gamma(yy).g*M_tt * modo(yy).n;
end
Risposte statiche modali
for yy=1:length(freq)
mod=modo(yy).n; % ricavo l'autovettore corrispondente
Lh=0; % inizializzazione
Lteta=0;
for k=1:length(ut)
Lh= Lh + M_tt(k,k)*mod(k);
Lteta=Lteta + k*L*M_tt(k,k)*mod(k);
end
Lh_n(yy)=Lh;
Lteta_n(yy)=Lteta;
end
for yy=1:length(freq)
h_star(yy)= Lteta_n(yy)/ Lh_n(yy); % altezza modale effettiva
M_star(yy)=gamma(yy).g*Lh_n(yy); % massa modale effettiva
Taglio alla base statico
Vb_st(yy)=M_star(yy); % Kg
Taglio ad ogni piano
V_piano_st(yy).piano(1)=Vb_st(yy);
for s=1:length(ut)-1
V_piano_st(yy).piano(s+1)=V_piano_st(yy).piano(s) - esp_s(yy).sn(s);
% kg
end
Momento alla base statico
Mb_st(yy)=M_star(yy)*h_star(yy); % Kgm
Spostamenti degli impalcati
u_piani_st(yy).piano=(gamma(yy).g/(freq(yy)^2))*modo(yy).n;
Drift
for h=1:(length(ut)-1)
drift_st(yy).piani(h)=(gamma(yy).g/(freq(yy)^2))*(modo(yy).n(h+1)-modo(yy).n(h));
end
Risposte dinamiche - Sistema lineare - Metodo numerico dell'interpolazione della forzante
Ricavo le risposte di ogni SDOF
Accelerogramma
load Laquila_NS_AQA.txt
-
Algoritmo Matlab assemblaggio Matrici K M
-
Algoritmo Matlab spettri Risposta metodoNewmark
-
Algoritmo Matlab costruzione spettri NTC08
-
Algoritmo Matlab assemblaggio Matrici K M portale1piano