%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%MÉTODO 3%%%%%%%%%%%%%%%%% %%%%%%%%%%%Matriz de flexibilidad%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %FUNCIÓN FLEXIBILIDAD todos=menu('¿Qué desea?','Conocer AF sólo en los puntos donde se ha medido',... 'Conocer AF en todos los puntos de la estructura'); %Extensión antisimétrica de los modos % tam_extension=128; % for i=1:m % matsin3(:,i)=wextend(1,'asymw',matsin(:,i),tam_extension,'b'); %matcon3(:,i)=wextend(1,'asymw',matcon(:,i),tam_extension,'b'); %end %--------- if todos==1 tipo_norm=menu('¿Cómo ha introducido los modos?','Normalizados con la matriz de masa',... 'Otro tipo de normalización'); if tipo_norm==1 clear F;clear Fc; F=matsin*diag(1./wsin.^2)*matsin'; Fc=matcon*diag(1./wcon.^2)*matcon'; AF=Fc-F; max(AF) disp('Los valores calculados de F y Fc corresponden a la matriz de flexibilidad') figure(2) plot([1:1:length(abs(max(AF)))],abs(max(AF))) hold on for p=1:1:length(max(abs(AF))) vect=[0:abs(max(AF(:,p)))/(m-1):abs(max(AF(:,p)))]; plot(p*ones(length(vect)),vect,'r-') title(' Decremento de la matriz de flexibilidad, en cada grado de libertad') end disp('El valor máximo de esta matriz denota el grado de libertad al que quizá esté asociado un daño') xlabel('Coordenada de la línea media');ylabel('Variación de la F'); end if tipo_norm==2 conoce=menu('¿Conoce el factor de escala alfa para escalar los modos?','Si','No'); if conoce==1 clear F;clear Fc; F=(factor_escala*matsin)*diag(1./wsin.^2)*(factor_escala*matsin'); Fc=(factor_escala*matcon)*diag(1./wcon.^2)*(factor_escala*matcon'); AF=F-Fc min(AF) disp('Los valores calculados de F y Fc corresponden a la matriz de flexibilidad') plot([1:1:length(abs(min(AF)))],abs(min(AF))) hold on for p=1:1:length(max(abs(AF))) vect=[0:abs(min(AF(:,p)))/(m-1):abs(min(AF(:,p)))]; plot(p*ones(length(vect)),vect,'r-') title('Decremento de la matriz de flexibilidad, en cada grado de libertad') end xlabel('Coordenada de la línea media');ylabel('Variación de la F'); disp('El valor máximo de esta matriz denota el grado de libertad al que quizá esté asociado un daño') disp('Los valores calculados de F y Fc corresponden a la matriz de flexibilidad multiplicada por un cierto escalar') disp('La grafica denota AF tambien escalada') end if conoce==2 menu('El método de la flexibilidad no funciona en este caso','Seguir') end end end %OBTENEMOS AF PARA TODOS LOS PUNTOS if todos==2 tipo_norm=menu('¿Cómo ha introducido los modos?','Normalizados con la matriz de masa',... 'Otro tipo de normalización'); clear F;clear Fc; %Interpolamos para obtener el valor de los modos en todos los puntos tipo_interp=menu('¿Qué tipo de interpolación desea?','Cúbica','Splines(recomendada)'); [fil,col]=size(matsin); [coord_int,modosin,modocon,sdf]=modos_todo_punto(tipo_interp,matsin,matcon,coord,n_elem,nbarra,n_puntos_barra); if tipo_norm==1 F=(modosin)*diag(1./wsin.^2)*(modosin'); Fc=(modocon)*diag(1./wcon.^2)*(modocon'); AF=F-Fc; %max(abs(AF)); min(AF) [s,d]=max(abs(min(AF))); danado=(d/n_elem)-.5; barra=int8(danado); disp('Probablemente el daño se haya producido en la coordenada') disp(coord_int(d)) disp('De la barra') disp(barra) disp('Los valores calculados de F y Fc corresponden a la matriz de flexibilidad') end if tipo_norm==2 conoce=menu('¿Conoce el factor de escala alfa para escalar los modos?','Si','No'); if conoce==1 F=(factor_escala*modosin)*diag(1./wsin.^2)*(factor_escala*modosin'); Fc=(factor_escala*modocon)*diag(1./wcon.^2)*(factor_escala*modocon'); AF=F-Fc; %max(abs(AF)); min(AF) [s,d]=max(abs(min(AF))); danado=(d/n_elem)-.5; barra=int8(danado); disp('Probablemente el daño se haya producido en la coordenada') disp(coord_int(d)) disp('De la barra') disp(barra) disp('Los valores calculados de F y Fc corresponden a la matriz de flexibilidad') end if conoce==2 menu('El método de la flexibilidad no funciona en este caso','Seguir') end end end %%%%%%%%%%%%%%%%%%%%%%%%%%%%% [minabsAF,posminabsAF]=min(abs(AF)); [maxnabsAF,posmaxabsAF]=max(abs(AF)); [minAF,posminAF]=min((AF)); [maxAF,posmaxAF]=max((AF));