Appendice D
D.1 Introduzione
Nel paragrafo seguente sono riportati i listati dei file MATLAB che fanno parte
della procedura integrata, in ambiente CATIA V5-MATLAB.
D.2 Listati dei file MATLAB
Principale
% PRINCIPALE
%Questo file serve per leggere i parametri variabili per il nostro studio parametrico %che portano ad una modifica del dimensionamento %dei vari componenti strutturali. I %parametri variabili sono quelli contenuti nei seguenti file di input:
%"Dati.txt", "Pd.txt", "Pl.txt", Pv.txt".
clear all; clc;
format short; tempo=clock;
disp('Controllare che nel Set Path siano state salvate le seguenti directory:'); disp('-..\Tesi\InputProgramma;');
disp('-..\Tesi\Programma;'); disp('-..\Tesi\InputCATIA;'); disp('-..\Tesi\Post-Processing;');
disp('Per continuare digitare: return e premere INVIO.'); keyboard; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % INPUT INIZIALI % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% DatiIniziali; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % INPUT FISSI % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% pallet;
factrad=57.29578;%[adimensionale] fattore di conversione da radianti a gradi %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % TRAVE DI PAVIMENTO % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% DimensionamentoTraveDiPavimento;
spessoreTP=spessore; %[mm] spessore della trave di pavimento
flangiaTP=round(larghezza); %[mm] larghezza della flangia della trave % di pavimento
animaTP=altezza; %[mm] altezza dell'anima della trave di % pavimento
lunghezzaTP=round(L*1000); %[mm] lunghezza della trave di pavimento % misurata sulla flangia superiore
alfaTP=alfa; %[gradi] angolo di rastremazione della % trave di pavimento
hTP=round(h*1000); %[mm] distanza flangia superiore trave di % pavimento - asse orizz. di riferimento %delta1TP; %[gradi] angolo che individua il punto di % intersezione della flangia sup. con lo skin e l’asse verticale %delta2TP; %[gradi] angolo che individua il punto di % intersezione della flangia inf. con lo skin e l'asse verticale
%runout1TP; %[gradi] run-out delle semiflangie sup. % ed inf. della sezione a C trave di pavimento %runout2TP; %[gradi] run-out delle semiflangie sup. % ed inf. contigue trave di pavimento
%xrunoutTP; %[mm] distanza tra il punto di intersezione tra la % flangia superiore ed inferiore della trave e l'ordinata %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % TRAVE DI STIVA % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% DimensionamentoTraveDiStiva;
spessoreTS=spessore; %[mm] spessore della trave di stiva
flangiaTS=round(larghezza); %[mm] larghezza della flangia della trave di stiva
xrunoutTSsup=round(xrunoutTSsup*1000); %[mm] distanza tra il punto di intersezione % tra la flangia superiore ed inferiore della trave e l'ordinata
xrunoutTSinf=round(xrunoutTSinf*1000); %[mm] distanza tra il punto di intersezione % tra la flangia inferiore ed inferiore della trave e l'ordinata %alfaTS; %[gradi] angolo di rastremazione della trave di stiva hTS=round(hTS); %[mm] distanza flangia superiore - asse orizzontale
%delta1TS; %[gradi] angolo che individua il punto di intersezione della flangia % superiore con lo skin e l'asse verticale
%runout1TS; %[gradi] run-out delle semiflangie superiore ed inferiore della sezione a C
%runout2TS; %[gradi] run-out delle semiflangie superiore ed inferiore contigue
%lunghezzaTS; %[mm] lunghezza della trave di stiva misurata sulla flangia superiore %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % MONTANTE PASSEGGERI % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% DimensionamentoMontantiPas;
spessoreMP=spessore; %[mm] spessore del montante passeggeri
latoMP=larghezza; %[mm] larghezza del montante passeggeri (sezione quadrata) %alfaintMP; %[gradi] angolo tra l'asse oriz. e la la retta che unisce il % centro con il punto d'intersezione tra la flangia interna del montante e l'ordinata %alfaextMP; %[gradi] angolo tra l'asse oriz. e la la retta che unisce il % centro con il punto d'intersezione tra la flangia esterna del montante e l'ordinata %alfamedMP; %[gradi] angolo tra l'asse oriz. e la la retta che unisce il % centro con il punto d'intersezione tra la mediana del montante e l'ordinata %DMP; %[mm] diametro interno dell'ordinata inferiore
%hMP; %[mm] distanza del montante passeggeri dall'asse orizzontale %distanzaMP; %[mm] distanza dall'asse di simm. della flangia int. del montante %LCMP; %[mm] lunghezza montante a sezione costante
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % MONTANTE STIVA % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% DimensionamentoMontantiDiStiva;
spessoreMS=spessore; %[mm] spessore del montante di stiva
latoMS=larghezza; %[mm] larghezza del montante di stiva (sezione quadrata) %alfaintMS; %[gradi] angolo tra l'asse orizz. e la la retta che unisce il % centro con il punto d'intersezione tra la flangia interna del montante e l'ordinata %alfaextMS; %[gradi] angolo tra l'asse orizz. e la la retta che unisce il % centro con il punto d'intersezione tra la flangia esterna del montante e l'ordinata %alfamedMS; %[gradi] angolo tra l'asse orizz. e la la retta che unisce il % centro con il punto d'intersezione tra la mediana del montante e l'ordinata
%DMS; %[mm] diametro interno dell'ordinata inferiore
%hMS; %[mm] distanza del montante di stiva dall'asse orizzontale %distanzaMS; %[mm] distanza dall'asse di simm. della flangia int. del montante %LCMS; %[mm] lunghezza montante a sezione costante
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % PANNELLI % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Pannelli;
spessorePD=round(td*10)/10; %[mm] spessore del pannello dorsale
semiangoloPD=alfa4; %[gradi] semiangolo del pannello dorsale
spessorePL=round(tl*10)/10; %[mm] spessore del pannello laterale
semiangoloPLD=alfad; %[gradi] semiangolo del pannello laterale superiore
semiangoloPLV=alfav; %[gradi] semiangolo del pannello laterale inferiore
spessorePV=round(tv*10)/10; %[mm] spessore del pannello ventrale
semiangoloPV=alfa1; %[gradi] semiangolo del pannello ventrale %DfusPD; %[mm] diametro pannello dorsale 3D %DfusPL; %[mm] diametro pannello laterale 3D %DfusPV; %[mm] diametro pannello ventrale 3D %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %
% CORRENTI %
% %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
spessoreCD=round(tsd*10)/10; %[mm] spessore del corrente dorsale
animaCD=round(hd); %[mm] altezza dell'anima del corrente dorsale
flangiaCD=round(fd); %[mm] lunghezza della flangia del corrente dorsale baseCD=round(dd); %[mm] lunghezza della base del corrente dorsale
raccordoCD=raccordoD; %[mm] raggio di raccordo del corrente dorsale
%BD1angle; %[gradi] spaziatura angolare primaria del pannello dorsale
%BD2angle; %[gradi] spaziatura angolare secondaria del pannello dorsale
ND2=nd1; %[adimensionale] numero correnti secondari semipannello dorsale
spessoreCL=round(tsl*10)/10; %[mm] spessore del corrente laterale
animaCL=round(hl); %[mm] altezza dell'anima del corrente laterale
flangiaCL=round(fl); %[mm] lunghezza della flangia del corrente laterale
baseCL=round(dl); %[mm] lunghezza della base del corrente laterale
raccordoCL=raccordoL; %[mm] raggio di raccordo del corrente laterale
%BL1angle; %[gradi] spaziatura angolare primaria del pannello laterale
%BLDangle; %[gradi] spaziatura angolare sec. del pannello laterale verso il dorsale
%BLVangle; %[gradi] spaziatura angolare sec. del pannello laterale verso il ventrale
NL1D=nl0d; %[adimensionale] numero correnti primari semipan .laterale verso dorsale
NL2D=nl1d; %[adimensionale] numero correnti secondari semipann. laterale verso dorsale
NL1V=nl0v; %[adimensionale] numero correnti primari semipann. laterale verso ventrale
NL2V=nl1v; %[adimensionale] numero correnti secondari semipann. laterale verso ventrale
Naux=naux; %[adimensionale] num. correnti tra mediana e serie di correnti nel dettaglio
spessoreCV=round(tsv*10)/10; %[mm] spessore del corrente ventrale
animaCV=round(hv); %[mm] altezza dell'anima del corrente ventrale
flangiaCV=round(fv); %[mm] lunghezza della flangia del corrente ventrale baseCV=round(dv); %[mm] lunghezza della base del corrente ventrale
raccordoCV=raccordoV; %[mm] raggio di raccordo del corrente ventrale
%BV1angle; %[gradi] spaziatura angolare primaria del pannello ventrale
%BV2angle; %[gradi] spaziatura angolare secondaria del pannello ventrale
NV1=nv0l; %[adimensionale] numero correnti primari semipannello ventrale
NV2=nv1; %[adimensionale] numero correnti secondari semipannello ventrale
AllineaPannelli;
%DfusCD; %[mm] diametro correnti dorsali 3D %DfusCL; %[mm] diametro correnti laterali 3D %DfusCV; %[mm] diametro correnti ventrali 3D %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % ORDINATA % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Ordinata;
Tordsup=round(tordsup*10)/10; %[mm] spessore ordinata superiore
Tordinf=round(tordinf*10)/10; %[mm] spessore ordinata inferiore
Hordsup=round(hordsup*1000); %[mm] anima ordinata superiore
Hordinf=round(hordinf*1000); %[mm] anima ordinata inferiore
Fordsup=round(fordsup*1000); %[mm] flangia ordinata superiore
Fordinf=round(fordinf*1000); %[mm] flangia ordinata inferiore
Bordsup=round(bordsup*1000); %[mm] base ordinata superiore
Bordinf=round(bordinf*1000); %[mm] base ordinata inferiore
%gamma1; %[gradi] angolo tra l'asse orizzontale e inizio transizione inferiore %gamma2; %[gradi] angolo tra l'asse orizzontale e inizio transizione superiore
gamma3=semiangoloPLD+semiangoloPD; %[gradi] angolo tra l'asse verticale e la linea di % riferimento del laterale
%LarghezzaD; %[mm] larghezza delle aperture per i correnti dorsali %LarghezzaL; %[mm] larghezza delle aperture per i correnti laterali %LarghezzaV; %[mm] larghezza delle aperture per i correnti ventrali %AltezzaD; %[mm] altezza delle aperture per i correnti dorsali %AltezzaL; %[mm] altezza delle aperture per i correnti laterali %AltezzaV; %[mm] altezza delle aperture per i correnti ventrali
AllineaOrdinata;
%Tordlat; %[mm] spessore ordinata laterale 3D
%OffsetOD; %[mm] distanza diametro fusoliera flangia ordinata dorsale 3D %OffesetOL; %[mm] distanza diametro fusoliera flangia ordinata laterale 3D %OffsetOV; %[mm] distanza diametro fusoliera flangia ordinata ventrale 3D %OffsetODFS; %[mm] spostamento bordo esterno flangia fail-safe dorsale 3D %raccordoOD; %[mm] raggio di raccordo delle aperture per i correnti dorsali %raccordoOL; %[mm] raggio di raccordo delle aperture per i correnti laterali %raccordoOV; %[mm] raggio di raccordo delle aperture per i correnti ventrali
FfailsafeD=round(fFailSafeD*1000); %[mm] Flangia di Fail-Safe dorsale
FfailsafeL=round(fFailSafeL*1000); %[mm] Flangia di Fail-Safe laterale
FfailsafeV=round(fFailSafeV*1000); %[mm] Flangia di Fail-Safe ventrale
TfailsafeD=round(tFailSafeD*10)/10; %[mm] Spessore Flangia di Fail-Safe dorsale
TfailsafeL=round(tFailSafeL*10)/10; %[mm] Spessore Flangia di Fail-Safe laterale
TfailsafeV=round(tFailSafeV*10)/10; %[mm] Spessore Flangia di Fail-Safe ventrale %runoutFSd; %[gradi] Run-Out della flangia di Fail-Safe dorsale %runoutFSl; %[gradi] Run-Out della flangia di Fail-Safe laterale %runoutFSv; %[gradi] Run-Out della flangia di Fail-Safe ventrale %DFailSafeV; %[mm] diametro della flangia di fail-safe ventrale %tetaV; %[gradi] angolo tra l'asse vert. e la fine della flangia di fail-safe vent. %DFailSafeL; %[mm] diametro della flangia di fail-safe laterale
%tetaLsup; %[gradi] angolo tra l'asse orizz. e la parte sup. della flangia di fail-safe % laterale
%tetaLinf; %[gradi] angolo tra l'asse orizzontale e la parte inferiore della flangia di % fail-safe laterale
%DFailSafeD; %[mm] diametro della flangia di fail-safe dorsale
%tetaD; [gradi] angolo tra l'asse orizz. e la fine della flangia di fail-safe dorsale
HordR=hordR*1000; %[mm] altezza anima ordinata rigida
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %
% FUSOLIERA %
% %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%lunghezzafus; %[mm] lunghezza fusoliera %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % MESH % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Mesh; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % PROPRIETA' % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Proprieta; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % CARICHI % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Carichi; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % OUTPUT % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Visualizza; %Salvataggio Workspace save store.mat; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % POST-PROCESSING % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% disp(' ');
disp('Si vuole procedere alla fase di post-processing?'); post=input('SI (Digitare 1) - NO (Digitare 2): ');
%controllo inserimento dati if post==1 %ok elseif post==2 %ok else disp(' '); disp(' ');
disp('Errore: inserito numero di scelta errato.'); disp(' ');
disp(' '); end
if post==1
PostProcessing; else %non fai niente end
disp(' '); disp(' ');
disp('Fine procedura.');
disp(sprintf('Tempo impiegato (minuti): %d',etime(clock,tempo)/60)); disp(' ');
DatiIniziali
% DATI INIZIALI
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %
% INPUT DELLA PROCEDURA %
% %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Dati [matrice] matrice di dati che si carica dalla directory ..\tesi\inputprogramma %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %
% OUTPUT DELLA PROCEDURA %
% %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % D [m] Diametro fusoliera
% h [m] Distanza pavimento passeggeri dall'asse di simmetria orizzontale % hordinf [m] altezza ordinata inferiore
% hordsup [m] altezza ordinata superiore % fordinf [m] flangia ordinata inferiore % fordsup [m] flangia ordinata superiore % tordinf [mm] spessore ordinata inferiore % tordsup [mm] spessore ordinata superiore % bordsup [m] base ordinata superiore % bordinf [m] base ordinata inferiore
% gord [mm] gioco tra il corrente e l'apertura del corrente % MTP [mm^4] momento di inerzia trave di pavimento
% MTS [mm^4] momento di inerzia trave di stiva
% NMP [N] carico di esercizio sulla trave di pavimento % NMS [N] carico di esercizio sulla trave di stiva % fFailSafeD [m] Flangia di Fail-Safe dorsale
% fFailSafeL [m] Flangia di Fail-Safe laterale % fFailSafeV [m] Flangia di Fail-Safe ventrale
% tFailSafeD [mm] Spessore Flangia di Fail-Safe dorsale % tFailSafeL [mm] Spessore Flangia di Fail-Safe laterale % tFailSafeV [mm] Spessore Flangia di Fail-Safe ventrale
% distaFS [mm] Distanza tra l'apertura del corrente e la flangia di Fail-Safe % distaTP [mm] Distanza tra la trave di pavimento e lo skin
% distaTS [mm] Distanza tra la trave di stiva e l'apertura del corrente
% runout1TP [gradi] Run-Out delle semifla. sup. ed inf. della sez. a C trave di pavim. % runout2TP [gradi] Run-Out delle semifla. Sup. ed inf. contigue trave di pavimento % runout1TS [gradi] Run-Out delle semifla. Sup. ed inf. della sez. a C trave di stiva % runout2TS [gradi] Run-Out delle semifla. Sup. ed inf. contigue trave di stiva % runoutFSd [gradi] Run-Out della flangia di Fail-Safe dorsale
% runoutFSl [gradi] Run-Out della flangia di Fail-Safe laterale % runoutFSv [gradi] Run-Out della flangia di Fail-Safe ventrale % EMP [Pa] Modulo di Young del montante passeggeri % EMS [Pa] Modulo di Young del montante di stiva % lunghezzafus [mm] Lunghezza fusoliera
% g [m] Gioco tra pareti di containers e struttura(small e large) % hpav [m] Altezza massima pavimento passeggeri
% PrecMesh [intero]Grado di precisione della mesh del modello
% Tdim [N] Taglio dimensionante agente sulla sezione di verifica
% Mdim [N*mm] Momento flettente dimensionante agente sulla sezione di verifica % Dfus [mm] Diametro fusoliera
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %Questo file serve per fornire i dati iniziali dell'ordinata, del diametro di fusoliera %e dell'altezza massime della trave di pavimento, oltre alle specifiche di momento %d'inerzia della trave di pavimento e della trave di stiva.
%NOTA BENE: con flangia ordinata si intende la flangia dell'ordinata(a zeta) che è a %contatto con lo skin della fusoliera, mentre con base ordinata si intende la flangia %dell'ordinata più interna.
load Dati.txt;
%Assegnamento dei dati
D=Dati(1); %[m] Diametro fusoliera
h=Dati(2); %[m] Distanza pavimento passeggeri dall'asse di simmetria orizz.le
hordinf=Dati(3); %[m] altezza ordinata inferiore
hordsup=Dati(4); %[m] altezza ordinata superiore
fordinf=Dati(5); %[m] flangia ordinata inferiore
fordsup=Dati(6); %[m] flangia ordinata superiore
tordinf=Dati(7); %[mm] spessore ordinata inferiore
bordsup=Dati(9); %[m] base ordinata superiore
bordinf=Dati(10); %[m] base ordinata inferiore
gord=Dati(11); %[mm] gioco tra il corrente e l'apertura del corrente
MTP=Dati(12); %[mm^4] momento di inerzia trave di pavimento
MTS=Dati(13); %[mm^4] momento di inerzia trave di stiva
NMP=Dati(14); %[N] carico di esercizio sulla trave di pavimento
NMS=Dati(15); %[N] carico di esercizio sulla trave di stiva
fFailSafeD=Dati(16); %[m] Flangia di Fail-Safe dorsale
fFailSafeL=Dati(17); %[m] Flangia di Fail-Safe laterale
fFailSafeV=Dati(18); %[m] Flangia di Fail-Safe ventrale
tFailSafeD=Dati(19); %[mm] Spessore Flangia di Fail-Safe dorsale
tFailSafeL=Dati(20); %[mm] Spessore Flangia di Fail-Safe laterale
tFailSafeV=Dati(21); %[mm] Spessore Flangia di Fail-Safe ventrale
distaFS=Dati(22); %[mm] Distanza tra l'apertura del corr. e la flangia di Fail-Safe
distaTP=Dati(23); %[mm] Distanza tra la trave di pavimento e lo skin
distaTS=Dati(24); %[mm] Distanza tra la trave di stiva e l'apertura del corrente
runout1TP=Dati(25); %[gradi] Run-Out delle semiflangie superiore ed inferiore della % sezione a C trave di pavimento
runout2TP=Dati(26); %[gradi] Run-Out delle semiflangie superiore ed inferiore % contigue trave di pavimento
runout1TS=Dati(27); %[gradi] Run-Out delle semiflangie superiore ed inferiore della % sezione a C trave di stiva
runout2TS=Dati(28); %[gradi] Run-Out delle semiflangie superiore ed inferiore % contigue trave di stiva
runoutFSd=Dati(29); %[gradi] Run-Out della flangia di Fail-Safe dorsale
runoutFSl=Dati(30); %[gradi] Run-Out della flangia di Fail-Safe laterale
runoutFSv=Dati(31); %[gradi] Run-Out della flangia di Fail-Safe ventrale
EMP=Dati(32); %[Pa] Modulo di Young del montante passeggeri
EMS=Dati(33); %[Pa] Modulo di Young del montante di stiva
lunghezzafus=Dati(34); %[mm] Lunghezza fusoliera
g=Dati(35); %[m] Gioco tra pareti di containers e struttura(small e large)
hpav=Dati(36); %[m] Altezza massima pavimento passeggeri
PrecMesh=Dati(37); %[intero]Grado di precisione della mesh del modello
Tdim=Dati(38); %[N] Taglio dimensionante agente sulla sezione di verifica
Mdim=Dati(39); %[N*mm] Momento flettente dimensionante agente sulla sezione di verifica
Pallet
% PALLET
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %
% INPUT DELLA PROCEDURA %
% %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % D [m] Diametro fusoliera
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %
% OUTPUT DELLA PROCEDURA %
% %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% hip [m] altezza lato interno pallet Tipo LD3 (small e large) % hep [m] altezza lato esterno pallet Tipo LD3 (small e large) % lsp [m] larghezza base superiore pallet Tipo LD3 (small e large) % lip [m] larghezza base inferiore pallet Tipo LD3 (small e large)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %Questo file contiene i dati di due tipi di pallet di uso piu' frequente, uno nella %versione large ed un altro nella versione small. Il tipo di pallet da utilizzare e' %funzione del diametro della fusoliera.
%Controllo sul diametro della fusoliera
if D>4.5 %[m]
hip=1.626; %[m] altezza lato interno pallet Tipo LD3 large
hep=1.128; %[m] altezza lato esterno pallet Tipo LD3 large
lsp=2.007; %[m] larghezza base superiore pallet Tipo LD3 large
lip=1.562; %[m] larghezza base inferiore pallet Tipo LD3 large
else hip=1.170; %[m] altezza lato interno pallet Tipo LD3 small
hep=0.660; %[m] altezza lato esterno pallet Tipo LD3 small
lsp=1.225; %[m] larghezza base superiore pallet Tipo LD3 small
lip=0.780; %[m] larghezza base inferiore pallet Tipo LD3 small
DimensionamentoTraveDiPavimento
% DIMENSIONAMENTO SEZIONE TRAVE DI PAVIMENTO
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %
% INPUT DELLA PROCEDURA %
% %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % MTP [mm^4] momento di inerzia trave di pavimento % D [m] diametro fusoliera
% h [m] distanza pavimento passeggeri dall'asse di simmetria orizzontale % distaTP [mm] distanza tra lo skin e la trave di pavimento
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %
% OUTPUT DELLA PROCEDURA %
% %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % spessore [mm] spessore della trave di pavimento
% larghezza [mm] larghezza della flangia della trave di pavimento % altezza [mm] altezza dell'anima della trave di pavimento
% L [mm] lunghezza della trave di pavimento misurata sulla flangia superiore % alfa [gradi] angolo di rastremazione della trave di pavimento
% delta1TP [gradi] angolo che individua il punto di intersezione della flangia % superiore con lo skin e l'asse verticale
% delta2TP [gradi] angolo che individua il punto di intersezione della flangia % inferiore con lo skin e l'asse verticale
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %Specifica richiesta: Momento di inerzia della trave di pavimento = 1.35*10^7 [mm^4] %Ciclo iterativo
M=MTP; %[mm^4]
Store=[]; StoreS=[];
for i=180:1:240 %ciclo h [mm]
for j=0.5:0.1:0.7 %ciclo d/h [adimensionale]
for k=1:0.1:3 %ciclo t (spessore) [mm]
d=i; %altezza anima trave di pavimento
b=i*j; %larghezza flangia trave di pavimento
t=k; %spessore trave di pavimento
J=4*t*(b/2)*(d/2-t/2)^2+(1/12)*t*(d-2*t)^3; %mom. d’inerzia della trave di pav. Area=2*b*t+(d-t)*t; %sezione della trave di pavimento
Store=[Store
J Area d b t]; end
end end
%Ora di tutte le configurazioni che sopravvivono al controllo inertia<M
temp=size(Store); for i=1:temp(1) if Store(i,1)>M StoreS=[StoreS
Store(i,1) Store(i,2) Store(i,3) Store(i,4) Store(i,5)]; else %non fare niente
end end
%Ottimizzazione in base al peso( e quindi in base all'area della sezione)
[x,y]=min(StoreS(:,2)); spessore=StoreS(y,5); larghezza=StoreS(y,4); altezza=StoreS(y,3); peso=StoreS(y,2); inertia=StoreS(y,1); %DIMENSIONAMENTO LUNGHEZZA
%La trave di pavimento non la faccio arrivare fino a battuta (anche se nella realtà più %o meno è così), perchè altrimenti anche a causa del fatto che non la faccio terminare %con un arco di circonferenza ma con una retta, si creerebbe uno spicchio, nel quale si %genererebbero degli elementi finiti troppo piccoli e distorti. Per questo motivo %impongo che vi siano almeno 15 mm di spazio vuoto tra il rivestimento e la trave di %pavimento
L=2*((D/2-distaTP/1000)^2-h^2)^0.5; %[m] lung. trave di pav. misurata sulla flangia sup.
alfarad=atan((x*1000)/altezza);
alfa=alfarad*factrad; %[gradi] angolo di rastremazione della trave di pavimento
delta1TPrad=acos(h/(D/2));
delta1TP=delta1TPrad*factrad; %[gradi] angolo che individua il punto di intersezione % della flangia superiore con lo skin e l'asse verticale
delta2TPrad=acos((h+altezza/1000)/(D/2));
delta2TP=delta2TPrad*factrad; %[gradi] angolo che individua il punto di intersezione % della flangia inferiore con lo skin e l'asse verticale
DimensionamentoTraveDiStiva
% DIMENSIONAMENTO SEZIONE TRAVE DI STIVA
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %
% INPUT DELLA PROCEDURA %
% %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % MTS [mm^4] momento di inerzia trave di stiva % D [m] diametro fusoliera
% animaTP [mm] altezza dell'anima della trave di pavimento
% h [m] distanza pavimento passeggeri dall'asse di simmetria orizzontale % hip [m] altezza lato interno pallet Tipo LD3 (small e large)
% g [m] gioco tra pareti di containers e struttura(small e large) % hordinf [m] altezza ordinata inferiore
% lip [m] larghezza base inferiore pallet Tipo LD3 (small e large) % hep [m] altezza lato esterno pallet Tipo LD3 (small e large) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %
% OUTPUT DELLA PROCEDURA %
% %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % spessore [mm] spessore della trave di stiva
% larghezza [mm] larghezza della flangia della trave di stiva % altezza [mm] altezza dell'anima della trave di stiva
% L [mm] lunghezza della trave di stiva misurata sulla flangia superiore % delta1TS [gradi] angolo che individua il punto di intersezione della flangia % superiore con lo skin e l'asse verticale
% delta2TS [gradi] angolo che individua il punto di intersezione della flangia % inferiore con lo skin e l'asse verticale
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %Specifica richiesta: Momento di inerzia della trave di stiva = 4.45*10^6 [mm^4] %Ciclo iterativo M=MTS; %[mm^4] Store=[]; StoreS=[]; StoreSS=[]; svuoto0=(D*1000)/2-((h*1000)+animaTP+(hip*1000)+2*g*1000+hordinf*1000); %[mm] altezza % trave di stiva + spazio vuoto
for i=150:1:240 %ciclo h [mm]
for j=0.5:0.1:0.7 %ciclo d/h [adimensionale]
for k=1:0.1:3 %ciclo t (spessore) [mm]
d=i; %altezza anima trave di stiva
b=i*j; %larghezza flangia trave di stiva
t=k; %spessore trave di stiva
J=4*t*(b/2)*(d/2-t/2)^2+(1/12)*t*(d-2*t)^3; %mom. d’inerzia trave di stiva
Area=2*b*t+(d-t)*t; %sezione della trave di stiva
svuoto=svuoto0-i; %freccia massima di vuoto tra la trave di stiva e l'ordinata
Store=[Store
J Area d b t svuoto]; end
end end
%Ora di tutte le configurazioni che sopravvivono al controllo inertia>M
temp=size(Store); for i=1:temp(1) if Store(i,1)>M StoreS=[StoreS
Store(i,1) Store(i,2) Store(i,3) Store(i,4) Store(i,5) Store(i,6)]; else %non fare niente
end end
%Ottimizzazione in base al peso( e quindi in base all'area della sezione)
[x,y]=min(StoreS(:,2)); temp1=size(StoreS); for i=1:temp1(1)
if StoreS(i,2)<x*1.1 StoreSS=[StoreSS
StoreS(i,1) StoreS(i,2) StoreS(i,3) StoreS(i,4) StoreS(i,5) StoreS(i,6)]; else %non fai niente
end end [x,y]=max(StoreSS(:,6)); spessore=StoreSS(y,5); %[mm] larghezza=StoreSS(y,4); %[mm] altezza=StoreSS(y,3); %[mm] peso=StoreSS(y,2); %[mm^2] inertia=StoreSS(y,1); %[mm^4] spaziovuoto=StoreSS(y,6); %[mm]
%DIMENSIONAMENTO LUNGHEZZA TRAVE DI STIVA
Lmin=lip+g; %[m] semilunghezza trave di stiva minima basata sulla dimensione del % container misurata sulla flangia superiore
L1=((D/2-hordinf)^2-(h+animaTP/1000+2*g+hip)^2)^0.5; %[m] semilunghezza di controllo %CONTROLLO SULLA LUNGHEZZA MINIMA DELLA TRAVE DI STIVA
if L1<Lmin
%manda un messaggio di verifica non superata
disp('Il container non entra. Problema di lunghezza minima di trave di stiva.'); else %manda un messaggio di verifica superata
disp('Controllo di lunghezza minima di trave di stiva superato'); end
%CONTROLLO SUGLI INGOMBRI DEL CONTAINER E ALTRO
x1=((h+animaTP/1000+g+hep)^2+(g+lsp)^2)^0.5; x2=D/2-hordinf;
if x1>x2
%manda un messaggio di verifica non superata
disp('Il container non entra. Problema di ingombro relativo ad hep.'); else %manda un messaggio di verifica superata
disp('Controllo di ingombro relativo ad hep superato'); end
spaziovuotominimo=hordinf*0.8*1000; %spazio vuoto minimo tra la trave di stiva e l'ordinata inferiore
if spaziovuoto<spaziovuotominimo
%manda un messaggio di verifica non superata
disp('Distanza max trave di stiva - ordinata inferiore non sufficiente.'); else %manda un messaggio di verifica superata
disp('Distanza max trave di stiva - ordinata inferiore sufficiente'); end
hTS=(h+animaTP/1000+2*g+hip)*1000; %[mm] posizionamento verticale della trave di stiva %RUN-OUT DELLE FLANGIE
xrunoutTSsup=((D/2-hordinf)^2-(hTS/1000)^2)^0.5-0.007; %[m] punto di intersezione tra %la flangia superiore e ordinata
xrunoutTSinf=((D/2-hordinf)^2-(hTS/1000+altezza/1000)^2)^0.5-0.006; %[m] punto di %intersezione tra la flangia inferiore e ordinata
delta1TSrad=acos(hTS/(Dfus/2));
delta1TS=delta1TSrad*factrad; %[gradi] angolo che individua il punto di intersezione % della flangia superiore con lo skin e l'asse verticale
delta2TSrad=acos((hTS+altezza)/(Dfus/2));
delta2TS=delta2TSrad*factrad; %[gradi] angolo che individua il punto di intersezione % della flangia inferiore con lo skin e l'asse verticale
DimensionamentoMontantiPasseggeri
%DIMENSIONAMENTO MONTANTI PASSEGGERI
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %
% INPUT DELLA PROCEDURA %
% %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % NMP [N] carico di esercizio sulla trave di pavimento % hordsup [m] altezza ordinata superiore
% lsp [m] larghezza base superiore pallet Tipo LD3 (small e large)
% h [m] distanza pavimento passeggeri dall'asse di simmetria orizzontale % animaTP [mm] altezza dell'anima della trave di pavimento
% g [m] gioco tra pareti di containers e struttura(small e large) % hip [m] altezza lato interno pallet Tipo LD3 (small e large) % D [m] diametro fusoliera
% Dfus [mm] diametro fusoliera
% hTP [mm] distanza flangia superiore - asse orizzontale % EMP [Pa] modulo di Young del montante passeggeri %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %
% OUTPUT DELLA PROCEDURA %
% %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % spessore [mm] spessore del montante passeggeri
% larghezza [mm] larghezza del montante passeggeri (sezione quadrata)
% alfaintMP [gradi] angolo tra l'asse orizzontale e la la retta che unisce il centro % con il punto d'intersezione tra la flangia interna del montante e l'ordinata % alfaextMP [gradi] angolo tra l'asse orizzontale e la la retta che unisce il centro % con il punto d'intersezione tra la flangia esterna del montante e l'ordinata % alfamedMP [gradi] angolo tra l'asse orizzontale e la la retta che unisce il centro % con il punto d'intersezione tra la mediana del montante e l'ordinata % DMP [mm] diametro interno dell'ordinata inferiore
% hMP [mm] distanza del montante passeggeri dall'asse orizzontale
% distanzaMP [mm] distanza dall'asse di simmetria della flangia interna del montante % LCMP [mm] lunghezza montante a sezione costante
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %Il dimensionamento si basa sull'ipotesi che il carico distribuito applicato alla trave %di pavimento si scarica in maniera simmetrica sui due montanti (5000 N per montante)+un %sovraccarico del 25 dovuto all'ordinata, e sotto tale carico l'accorciamento totale del %montante (è compresso) non deve superare 0,4 mm. Inoltre la sigma di esercizio non deve %superare la sigma critica euleriana/(il fattore di carico ultimo*1.1) (data
%dall'instabilità euleriana delle travi caricate di punta). A quel punto si fa %un'ottimizzazione in base al peso.
N=NMP*0.75; %[N] carico di esercizio
E=EMP; %[Pa] modulo di Young del montante passeggeri %CALCOLO DISTANZA DALL'ASSE DI SIMMETRIA
%E' la distanza tra l'asse di simmetria e la flangia del montante più vicina al medesimo
dsegnato=(D-2*hordsup)*(3/8); %[m] distanza di controllo media
dmonpas=2*g+lsp; %[m] posizionamento orizzontale del montante passeggeri %Controllo sul posizionamento orizzontale
if and(dmonpas<1.1*dsegnato,dmonpas>0.9*dsegnato) %messaggio di verifica superata
disp('Verifica di posizionamento orizzontale del montante passeggeri superata'); else %messaggio di verifica non superata
disp('Verifica di posizionamento orizzontale del montante passeggeri non superata'); end
x1=((D/2-hordinf)^2-(2*g+lsp)^2)^0.5;
L=x1-h-animaTP/1000; %[m] lunghezza del montante (distanza tra la trave di pavimento e % l'intersezione tra la flangia interna e l'ordinata inferiore)
deltamax=0.0004; %[m] massima deformazione montante
Ks=1/(3.75*1.1); %coefficiente di sicurezza rispetto al carico critico sigmaes<sigmacr/(3.75*1.1)
Store=[]; StoreS=[];
for i=0.010:0.001:0.100 % [m]ciclo sul lato l della sezione quadrata del montante
for j=0.0005:0.0001:0.0035 %[m]ciclo sullo spessore t
t=j; l=i;
Area=4*t*(l-t); %[m^2] area della sezione del montante
Pcr=((3.14)^2*(E*Jy))/(L^2); %[N] carico critico di instabilità euleriana
sigmacr=Pcr/Area; %[N/m^2] sigma critica
sigma=N/Area; %[N/m^2] sigma di esercizio
eps=sigma/E; %[adimensionale] epsilon
Lf=L/(1+eps); %[m] lunghezza finale del montante (è più piccola perchè compresso)
delta=L-Lf; %[m] variazione di lunghezza del montante, se minore di 0.0005 m OK!
Store=[Store
l t Area delta sigma sigmacr ]; end end %verifiche temp=size(Store); for i=1:temp(1) if Store(i,4)<deltamax if Store(i,5)<Store(i,6)*Ks StoreS=[StoreS
Store(i,1) Store(i,2) Store(i,3) Store(i,4) Store(i,5) Store(i,6)]; else %non fai niente
end
else %non fai niente
end end
%Ottimizzazione rispetto al peso [x,y]=min(StoreS(:,3));
spessore=StoreS(y,2)*1000; %[mm]
larghezza=StoreS(y,1)*1000; %[mm]
delta=StoreS(y,4)*1000; %[mm]
distanzaMP=round(dmonpas*1000); %[mm] dist. dell'asse vert. della fla. int. del montante
alfaintMPrad=acos(distanzaMP/(Dfus/2-hordinf*1000));
alfaintMP=alfaintMPrad*factrad; %[gradi] angolo tra l'asse orizz. e la retta che %unisce il centro con il punto d'inters.ne tra la flangia int. del montante e l'ordinata
alfaextMPrad=acos((distanzaMP+larghezza)/(Dfus/2-hordinf*1000));
alfaextMP=alfaextMPrad*factrad; %[gradi] angolo tra l'asse orizz. e la la retta che unisce il centro con il punto d'inters.ne tra la flangia est. del montante e l'ordinata
alfamedMPrad=acos((distanzaMP+larghezza/2)/(Dfus/2));
alfamedMP=alfamedMPrad*factrad; %[gradi] angolo tra l'asse orizzontale e la retta che unisce il centro con il punto d'inters.ne tra la mediana del montante e l'ordinata
hMP=animaTP+hTP; %[mm] distanza del montante passeggeri dall'asse orizzontale
DMP=Dfus-2*hordinf*1000; %[mm] diametro interno dell'ordinata inferiore
LCMP=0.5*DMP*sin(alfaextMPrad)-3*larghezza-hMP; %[mm] lunghezza montante a sezione % costante
DimensionamentoMontantiDiStiva
% DIMENSIONAMENTO MONTANTI DI STIVA
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %
% INPUT DELLA PROCEDURA %
% %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % NMS [N] carico di esercizio sulla trave di stiva % hordinf [m] altezza ordinata inferiore
% h [m] distanza pavimento passeggeri dall'asse di simmetria orizzontale % animaTP [mm] altezza dell'anima della trave di pavimento
% g [m] gioco tra pareti di containers e struttura(small e large) % hip [m] altezza lato interno pallet Tipo LD3 (small e large) % D [m] diametro fusoliera
% Dfus [mm] diametro fusoliera
% animaTS [mm] altezza dell'anima della trave di stiva % hTS [mm] distanza flangia superiore - asse orizzontale % EMS [Pa] modulo di Young per il montante di stiva %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %
% OUTPUT DELLA PROCEDURA %
% %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % spessore [mm] spessore del montante di stiva
% larghezza [mm] larghezza del montante di stiva (sezione quadrata)
% alfaintMS [gradi] angolo tra l'asse orizzontale e la la retta che unisce il centro % con il punto d'intersezione tra la flangia interna del montante e l'ordinata % alfaextMS [gradi] angolo tra l'asse orizzontale e la la retta che unisce il centro % con il punto d'intersezione tra la flangia esterna del montante e l'ordinata % alfamedMS [gradi] angolo tra l'asse orizzontale e la la retta che unisce il centro % con il punto d'intersezione tra la mediana del montante e l'ordinata % DMS [mm] diametro interno dell'ordinata inferiore
% hMS [mm] distanza del montante di stiva dall'asse orizzontale
% distanzaMS [mm] distanza dall'asse di simmetria della flangia interna del montante % LCMS [mm] lunghezza montante a sezione costante
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %Il dimensionamento si basa sull'ipotesi che il carico distribuito applicato alla trave % di stiva si scarica in maniera simmetrica sui due montanti (2500 N per montante)+ un % sovraccarico del 25% dovuto all'ordinata, e sotto tale carico l'accorciamento totale % del montante (è compresso) non deve superare 0,1 mm. Inoltre la sigma di esercizio non %deve superare la sigma critica euleriana/(il fattore di carico ultimo*1.1) (data
%dall'instabilità euleriana delle travi%caricate di punta). A quel punto si fa %un'ottimizzazione in base al peso.
N=NMS*0.75; %[N] carico di esercizio
E=EMS; %[Pa] modulo di Young per il montante di stiva
%Calcolo distanza dall'asse di simmetria della flangia interna del montante di stiva
lps=2*((D/2-hordinf)^2-(h+animaTP/1000+2*g+hip)^2)^0.5;
d=lps/4; %[m] distanza asse di simmetria-flangia interna %Calcolo della lunghezza del montante di stiva
x1=(D/2-hordinf)-((D/2-hordinf)^2-d^2)^0.5; L=spaziovuoto/1000-x1; %[m]
deltamax=0.0001; %[m] massima deformazione montante
Ks=1/(3.75*1.1); %coefficiente di sicurezza rispetto al carico critico sigmaes<sigmacr/(3.75*1.1)
Store=[]; StoreS=[];
for i=0.005:0.001:0.100 % [m]ciclo sul lato l della sezione quadrata del montante for j=0.0005:0.0001:0.0035 %[m]ciclo sullo spessore t
t=j; l=i;
Area=4*t*(l-t); %[m^2] area della sezione del montante
Jy=t*l*(l-t)^2+(1/6)*t*(l-t)^3; %[m^4] momento di inerzia flessionale del montante
Pcr=((3.14)^2*(E*Jy))/(L^2); %[N] carico critico di instabilità euleriana
sigmacr=Pcr/Area; %[N/m^2] sigma critica
sigma=N/Area; %[N/m^2] sigma di esercizio
eps=sigma/E; %[adimensionale] epsilon
Lf=L/(1+eps); %[m] lunghezza finale del montante (è più piccola perchè compresso)
delta=L-Lf; %[m] variazione di lunghezza del montante, se minore di 0.0005 m OK!
Store=[Store
end end %verifiche temp=size(Store); for i=1:temp(1) if Store(i,4)<deltamax if Store(i,5)<Store(i,6)*Ks StoreS=[StoreS
Store(i,1) Store(i,2) Store(i,3) Store(i,4) Store(i,5) Store(i,6)]; else %non fai niente
end
else %non fai niente
end end
%Ottimizzazione rispetto al peso
[x,y]=min(StoreS(:,3));
spessore=StoreS(y,2)*1000; %[mm]
larghezza=StoreS(y,1)*1000; %[mm]
delta=StoreS(y,4)*1000; %[mm]
distanzaMS=round(d*1000); %[mm] distanza dell'asse vert. della flangia int. del montante
alfaintMSrad=acos(distanzaMS/(Dfus/2-hordinf*1000));
alfaintMS=alfaintMSrad*factrad; %[gradi] angolo tra l'asse orizz. e la retta che %unisce il centro con il punto d'inters.ne tra la flangia int. del montante e l'ordinata
alfaextMSrad=acos((distanzaMS+larghezza)/(Dfus/2-hordinf*1000));
alfaextMS=alfaextMSrad*factrad; %[gradi] angolo tra l'asse orizz. e la retta che %unisce il centro con il punto d'inters.ne tra la flangia est. del montante e l'ordinata
alfamedMSrad=acos((distanzaMS+larghezza/2)/(Dfus/2));
alfamedMS=alfamedMSrad*factrad; %[gradi] angolo tra l'asse orizz. e la retta che %unisce il centro con il punto d'intersezione tra la mediana del montante e l'ordinata
hMS=animaTS+hTS; %[mm] distanza del montante passeggeri dall'asse orizzontale
DMS=Dfus-2*hordinf*1000; %[mm] diametro interno dell'ordinata inferiore
LCMS=0.5*DMS*sin(alfaextMSrad)-3*larghezza-hMS; %[mm] lungh. montante a sez.ne costante LCMS=round(LCMS);
Pannelli
% PANNELLI
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %
% INPUT DELLA PROCEDURA %
% %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% h [m] distanza pavimento passeggeri dall'asse di simmetria orizzontale % animaTP [mm] altezza dell'anima della trave di pavimento
% g [m] gioco tra pareti di containers e struttura(small e large) % hip [m] altezza lato interno pallet Tipo LD3 (small e large) % hordinf [m] altezza ordinata inferiore
% D [m] diametro fusoliera
% hordsup [m] altezza ordinata superiore
% Pd [matrice] dati pannello dorsale (...\tesi\inputprogramma) % Pl [matrice] dati pannello laterale (...\tesi\inputprogramma) % Pv [matrice] dati pannello ventrale (...\tesi\inputprogramma) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %
% OUTPUT DELLA PROCEDURA %
% %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % td [mm] spessore pannello dorsale
% tl [mm] spessore pannello laterale % tv [mm] spessore pannello ventrale % alfa1 [gradi] angolo del semipannello ventrale
% alfav [gradi] angolo del semipannello laterale inferiore % alfal [gradi] angolo del semipannello laterale superiore % alfa4 [gradi] angolo del semipannello dorsale
% tsd [mm] spessore corrente dorsale % hd [mm] altezza corrente dorsale % dd [mm] lunghezza base corrente dorsale % fd [mm] lunghezza flangia corrente dorsale % tsl [mm] spessore corrente laterale
% hl [mm] altezza corrente laterale
% dl [mm] lunghezza base corrente laterale % fl [mm] lunghezza flangia corrente laterale % tsv [mm] spessore corrente ventrale
% hv [mm] altezza corrente ventrale
% dv [mm] lunghezza base corrente ventrale % fv [mm] lunghezza flangia corrente ventrale % raccordoD [mm] raggio di raccordo del corrente dorsale % raccordoL [mm] raggio di raccordo del corrente laterale % raccordoV [mm] raggio di raccordo del corrente ventrale
% BD1angle [gradi] spaziatura angolare primaria del pannello dorsale % BD2angle [gradi] spaziatura angolare secondaria del pannello dorsale % BL1angle [gradi] spaziatura angolare primaria del pannello laterale
% BLDangle [gradi] spaziatura angolare secondaria del pannello laterale superiore % BLVangle [gradi] spaziatura angolare secondaria del pannello laterale inferiore % BV1angle [gradi] spaziatura angolare primaria del pannello ventrale
% BV2angle [gradi] spaziatura angolare secondaria del pannello ventrale % nd0l [intero] numero correnti primari semipannello dorsale
% nd1 [intero] numero correnti secondari semipannello dorsale
% nl0d [intero] numero correnti primari semipannello laterale verso dorsale % nl1d [intero] numero correnti secondari semipannello laterale verso dorsale % nl0v [intero] numero correnti primari semipannello laterale verso ventrale % nl1v [intero] numero correnti secondari semipannello laterale verso ventrale % naux [intero] numero correnti tra mediana e serie di correnti nel dettaglio % nv0l [intero] numero correnti primari semipannello ventrale
% nv1 [intero] numero correnti secondari semipannello ventrale
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %Questo file serve per dimensionare le dimensioni dei tre tipi di pannelli (1 dorsale, %2 laterali ed 1 ventrale). Successivamente elabora i dati di ingresso sul
%dimensionamento del pannello irrigidito e fornisce in uscita il corretto posizionamento %e numero di correnti.
factpan=0.00872665; factpan2=114.59156;
%CALCOLO DEGLI ANGOLI DEI PANNELLI
alfa1rad=acos((h+animaTP/1000+2*g+hip)/(D/2-hordinf));
alfa2=90-alfa1; %[gradi] angolo inferiore del pannello laterale
alfa3rad=asin(1/(D/2-hordsup));
alfa3=alfa3rad*factrad; %angolo superiore del pannello laterale
alfa4=90-alfa3; %semiangolo del pannello dorsale %Caricamento dei dati dei pannelli irrigiditi
%La struttura è stata scritta pensando ad un corrente ad omega, ma è facilmente
%adattabile ad un corrente a zeta, simmetrico e non simmetrico,ma a flangie rettilinee, %considerando la base del corrente ad omega (d) come se fosse la flangia inferiore di %quello a zeta
load Pd.txt;
w=Pd(1); %[mm] spessore generalizzato del pannello irrigidito
ts_t=Pd(2); %ts/t
h_b=Pd(3); %h/b rapporto tra l'altezza del corrente e il passo tra i correnti
d_h=Pd(4); %d/h rapporto tra la base e l'altezza del corrente
As_bt=Pd(5); %As/bt
b=Pd(6); %b [mm] passo tra i correnti
f_h=Pd(7); %f/h rapporto tra la flangia e l'altezza del corrente
tipod=Pd(8); %identifica se è un corrente a zeta("2") oppure ad omega ("1")
calcola1;
td=t; %[mm] spessore pannello dorsale
tsd=ts; %[mm] spessore corrente dorsale
hd=H; %[mm] altezza corrente dorsale
dd=d; %[mm] lunghezza base corrente dorsale
fd=f; %[mm] lunghezza flangia corrente dorsale
bd=b; %[mm] passo tra i correnti
raccordoD=rac; %[mm] raggio di raccordo del corrente dorsale
load Pl.txt;
w=Pl(1); %[mm] spessore generalizzato del pannello irrigidito
ts_t=Pl(2); %ts/t
h_b=Pl(3); %h/b rapporto tra l'altezza del corrente e il passo tra i correnti
d_h=Pl(4); %d/h rapporto tra la base e l'altezza del corrente
As_bt=Pl(5); %As/bt
b=Pl(6); %b [mm] passo tra i correnti
f_h=Pl(7); %f/h rapporto tra la flangia e l'altezza del corrente
tipol=Pl(8); %identifica se è un corrente a zeta ("2") oppure ad omega ("1")
calcola1;
tl=t; %[mm] spessore pannello laterale
tsl=ts; %[mm] spessore corrente laterale
hl=H; %[mm] altezza corrente laterale
dl=d; %[mm] lunghezza base corrente laterale
fl=f; %[mm] lunghezza flangia corrente laterale
bl=b; %[mm] passo tra i correnti
raccordoL=rac; %[mm] raggio di raccordo del corrente laterale
load Pv.txt;
w=Pv(1); %[mm] spessore generalizzato del pannello irrigidito
ts_t=Pv(2); %ts/t
h_b=Pv(3); %h/b rapporto tra l'altezza del corrente e il passo tra i correnti
d_h=Pv(4); %d/h rapporto tra la base e l'altezza del corrente
As_bt=Pv(5); %As/bt
b=Pv(6); %b [mm] passo tra i correnti
f_h=Pv(7); %f/h rapporto tra la flangia e l'altezza del corrente
tipov=Pv(8); %identifica se è un corrente a zeta ("2") oppure ad omega ("1")
calcola1;
tv=t; %[mm] spessore pannello ventrale
tsv=ts; %[mm] spessore corrente ventrale
hv=H; %[mm] altezza corrente ventrale
dv=d; %[mm] lunghezza base corrente ventrale
fv=f; %[mm] lunghezza flangia corrente ventrale
bv=b; %[mm] passo tra i correnti
raccordoV=rac; %[mm] raggio di raccordo del corrente ventrale %PASSO DEI CORRENTI
%Pannello Dorsale
%Si posiziona un corrente nella posizione di mezzeria del pannello e poi gli altri %vengono intervallati con passo costante fissato.
x=factpan*D*1000*alfa4; %[mm] lunghezza di metà pannello dorsale
nd0=floor(x/bd); %[adimensionale] numero dei correnti sul semipannello escluso % quello posizionato in mezzeria
restod=x-nd0*bd; %[mm] resto del semipannello
nd=2*nd0+1; %numero dei correnti sul pannello dorsale %Pannello Laterale
%Fissiamo l'origine nel punto medio dell'arco sotteso dalla trave di pavimento (e di %conseguenza i due semipannelli non sono più simmetrici) e nell'origine non mettiamo il %corrente (non si può praticare un'apertura)
beta2rad=asin((h+animaTP/1000)/(D/2)); beta2=beta2rad*factrad;
beta1=beta1rad*factrad;
betax=beta1/2+beta2/2; %[gradi] angolo tra l'asse orizzontale di riferimento e il % punto medio dell'arco della T.d.P
alfad=betax+alfa3; %[gradi] angolo del semipannello laterale adiacente al % pannello dorsale
alfav=alfa2-betax; %[gradi] angolo del semipannello laterale adiacente al % pannello ventrale
xd=factpan*D*1000*alfad; %[mm] lunghezza del semipannello superiore
nl0d0=floor(xd/bl); %[adimensionale] numero dei correnti sul semipannello % superiore escluso quello posizionato in mezzeria
restold=xd-nl0d0*bl; %[mm] resto del semipannello superiore
xv=factpan*D*1000*alfav; %[mm] lunghezza del semipannello inferiore
nl0v0=floor(xv/bl); %[adimensionale] numero dei correnti sul semipannello % inferiore escluso quello posizionato in mezzeria
restolv=xv-nl0v0*bl; %[mm] resto del semipannello inferiore
nl=nl0d0+nl0v0; %numero dei correnti sul pannello laterale %Pannello Ventrale
%Si posiziona un corrente nella posizione di mezzeria del pannello e poi gli altri %vengono intervallati con passo costante fissato
x=factpan*D*1000*alfa1; %[mm] lunghezza di metà pannello ventrale
nv0=floor(x/bv); %[adimensionale] numero dei correnti sul semipannello % escluso quello posizionato in mezzeria
restov=x-nv0*bv; %[mm] resto del semipannello
nv=2*nv0+1; %numero dei correnti sul pannello ventrale %CORREZIONE DEI PASSI
%Pannello dorsale - pannello laterale %LEGENDA ricorda1
% ricorda1=1 => pari (vuol dire che pannello dorsale e laterale hanno lo stesso passo) % ricorda1=2 => dorsale (vuol dire che il pannello dorsale ha il passo più grande) % ricorda1=3 => laterale (vuol dire che il pannello laterale ha il passo più grande)
if bd-bl>0
ricorda1=2; %il passo + grande è quello del pannello dorsale
elseif bd-bl==0
ricorda1=1; %stesso passo tra dorsale e laterale
else ricorda1=3; %il passo + grande è quello del pannello laterale
end if ricorda1==1 %pari b2=bd; b1=bl; a2=restod; a1=restold; n20=nd0; n10=nl0d0;
elseif ricorda1==2 %dorsale
b2=bd; b1=bl; a2=restod; a1=restold; n20=nd0; n10=nl0d0;
elseif ricorda==3 %laterale b2=bl; b1=bd; a2=restold; a1=restod; n20=nl0d0; n10=nd0; else %non fai niente
disp('Errore nella procedura Pannelli'); end
CorreggiPassi; controllo1=controllo; if ricorda1==1 %pari
nd0l=n20;
nl0d=n10; %numero di correnti a passo costante nel semipannello laterale che è %adiacente al dorsale
bd1=b21;
bl1d=b11; %passo secondario nel semipannello laterale che è adiacente al dorsale
nd1=n21;
nl1d=n11; %numero dei correnti nel semipannello lat. che è adiacente al dorsale
elseif ricorda1==2 %dorsale
nd0l=n20; nl0d=n10; bd1=b21; bl1d=b11; nd1=n21;
nl1d=n11;
elseif ricorda1==3 %laterale nl0d=n20; nd0l=n10; bl1d=b21; bd1=b11; nl1d=n21; nd1=n11; else %non fai niente
disp('Errore nella procedura Pannelli'); end
%Pannello ventrale - pannello laterale %LEGENDA ricorda2
% ricorda2=1 => pari (vuol dire che pannello ventrale e laterale hanno lo stesso passo) % ricorda2=2 => ventrale (vuol dire che il pannello ventrale ha il passo più grande) % ricorda2=3 => laterale (vuol dire che il pannello laterale ha il passo più grande)
if bv-bl>0
ricorda2=2; %il passo + grande è quello del pannello ventrale
elseif bv-bl==0
ricorda2=1; %stesso passo tra ventrale e laterale
else ricorda2=3; %il passo + grande è quello del pannello laterale
end if ricorda2==1 %pari b2=bv; b1=bl; a2=restov; a1=restolv; n20=nv0; n10=nl0v0;
elseif ricorda2==2 %ventrale
b2=bv; b1=bl; a2=restov; a1=restolv; n20=nv0; n10=nl0v0;
elseif ricorda2==3 %laterale b2=bl; b1=bv; a2=restolv; a1=restov; n20=nl0v0; n10=nv0; else %non fai niente
disp('Errore nella procedura Pannelli'); end
CorreggiPassi; controllo2=controllo; if ricorda2==1 %pari
nv0l=n20;
nl0v=n10; %numero di correnti a passo costante nel semipannello laterale che è %adiacente al ventrale
bv1=b21;
bl1v=b11; %passo secondario nel semipannello laterale che è adiacente al ventrale nv1=n21;
nl1v=n11; %numero dei correnti nel semipannello lat. che è adiacente al ventrale
elseif ricorda2==2 %ventrale
nv0l=n20; nl0v=n10; bv1=b21; bl1v=b11; nv1=n21; nl1v=n11;
elseif ricorda2==3 %laterale nl0v=n20; nv0l=n10; bl1v=b21; bv1=b11; nl1v=n21; nv1=n11; else %non fai niente
disp('Errore nella procedura Pannelli'); end
%Numero totale dei correnti
ndt=1+2*nd0l+2*nd1; %numero dei correnti sul pannello dorsale
naux=round((nl0v-5)/2); %numero di correnti che separano la linea di riferimento (in % mezzo alla trave di pavimento) dalla serie di 5 correnti da studiare nel dettaglio
nlt=nl0v+nl1v+nl0d+nl1d; %numero dei correnti sul pannello laterale
ntotale=ndt+nvt+2*nlt; %numero totale dei correnti della fusoliera %CONVERSIONE ANGOLARE DEI PASSI DEI CORRENTI
%Questa operazione è necessaria perchè il CATIA per le matrici circolari, necessita %di una spaziatura angolare e non lineare.
%Pannello Dorsale
BD1angle=factpan2*(1/(D*1000))*bd; %[gradi] spaziatura ang. pri. del pannello dorsale
BD2angle=factpan2*(1/(D*1000))*bd1; %[gradi] spaziatura ang. sec. del pannello dorsale
BL1angle=factpan2*(1/(D*1000))*bl; %[gradi] spaziatura ang. pri. del pannello laterale
BLDangle=factpan2*(1/(D*1000))*bl1d; %[gradi] spaziatura ang. sec. del pannello laterale % verso il dorsale
BLVangle=factpan2*(1/(D*1000))*bl1v; %[gradi] spaziatura angolare secondaria del % pannello laterale verso il ventrale
BV1angle=factpan2*(1/(D*1000))*bv; %[gradi] spaziatura ang. pri. del pannello ventrale
Calcola1
%CALCOLA1
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %
% INPUT DELLA PROCEDURA %
% %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% w [mm] spessore generalizzato del pannello irrigidito % ts_t [adimensionale] rapporto spessore corrente - spessore skin
% h_b [adimensionale] rapporto tra l'altezza del corrente e il passo tra i correnti % d_h [adimensionale] rapporto tra la base e l'altezza del corrente
% As_bt [adimensionale] rapporto area corrente - area skin % b [mm] passo tra i correnti
% f_h [mm] rapporto tra la flangia e l'altezza del corrente %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %
% OUTPUT DELLA PROCEDURA %
% %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % t [mm] spessore dello skin
% ts [mm] spessore del corrente % H [mm] altezza del corrente
% d [mm] lunghezza della base del corrente % f [mm] lunghezza della flangia del corrente % rac [mm] raggio di raccordo del corrente
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
t=w/(1+As_bt); %[mm] spessore dello skin
ts=t*ts_t; %[mm] spessore del corrente
H=b*h_b; %[mm] altezza del corrente
d=H*d_h; %[mm] lunghezza della base del corrente
f=H*f_h; %[mm] lunghezza della flangia del corrente
rac=(1/6)*max(H,d);
rac=round(rac); %[mm] raggio di raccordo del corrente
if rac<4 rac=4; elseif rac>14 rac=14;
else %non fai niente
CorreggiPassi
% CORREGGI PASSI
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %
% INPUT DELLA PROCEDURA %
% %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% b2 [mm] passo tra correnti del secondo semipannello (passo più grande) % b1 [mm] passo tra correnti del primo semipannello (passo più piccolo) % a2 [mm] lunghezza estremità libera secondo semipannello
% a1 [mm] lunghezza estremità libera primo semipannello
% n20 [adimensionale] numero correnti a passo costante secondo semipannello % n10 [adimensionale] numero correnti a passo costante primo semipannello %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %
% OUTPUT DELLA PROCEDURA %
% %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% n20 [adimensionale] numero correnti a passo costante nel secondo semipannello % n10 [adimensionale] numero correnti a passo costante nel primo semipannello % b21 [mm] passo secondario nel secondo semipannello
% b11 [mm] passo secondario nel primo semipannello
% n21 [adimensionale] numero correnti perturbati nel secondo semipannello % n11 [adimensionale] numero correnti perturbati nel primo semipannello
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %In entrata abbiamo il valore dei due passi e dei due resti dei pannelli adiacenti. %La funzione CORREGGIPASSI modifica la parte terminale dei due pannelli mantenendo per %specifica di non dare passi<0.8*b1 e passi>1.2*b2.
controllo=('Nessuna modifica'); %serve per vedere se la procedura ha modificato i %parametri
n21=0; %numero correnti a passo diverso dai loro fratelli del secondo pannello
n11=0; %numero correnti a passo diverso dai loro fratelli del secondo pannello
b21=0; %passo secondario del secondo pannello
b11=0; %passo secondario del primo pannnello
if a1+a2<1.2*b2
%CASO 1: attuo una procedura senza inserimento di correnti nella baia di a1+a2
if a1+a2+b1<1.2*b2 %CASO1A: tolgo l'ultimo corrente del pannello 1 senza % modificare i passi
%OUTPUT
n10=n10-1; %ho tolto il corrente
controllo=('Modificato 1A');
elseif (b1+b2+a1+a2)/2<1.2*b2 %CAS01B: tolgo gli ultimi correnti di entrambi i % pannelli(1 e 2), e piazzo un corrente nel punto medio della baia che si è
% creata(a1+a2+b1+b2) e poi verifico in quale dei due pannelli è andato a finire
%OUTPUT
n10=n10-1; %tolgo ad entrambi i pannelli un corrente a passo costante
n20=n20-1;
bx=(b1+b2+a1+a2)/2;
controllo=('Modificato 1B');
if bx<b2+a2 %vuol dire che fa parte del secondo pannello
n21=1; b21=bx;
else %vuol dire che fa parte del primo pannello
n11=1; b11=bx; end
elseif and((a1+a2+b1+b2)/3>0.8*b1, (a1+a2+b1+b2)/3<1.2*b2)
%CASO1C: non tolgo nessuno degli ultimi correnti prendo i due correnti e li posiziono %equidistanti all'interno della baia a1+a2+b1+b2 e poi verifico in quali pannelli sono %andati a finire %OUTPUT controllo=('Modificato 1C'); n10=n10-1; n20=n20-1; bx=(a1+a2+b1+b2)/3;
if 2*bx<b2+a2 %vuol dire che tutti e due i correnti sono finiti nel secondo %pannello
n21=2; b21=bx;
% nel secondo pannello
n11=1; n21=1; b21=bx; b11=bx;
else %vuol dire che tutti e due i correnti sono finiti nel primo pannello
n11=2; b11=bx; end
end
else %CASO2: attuo una procedura con inserimento di correnti nella baia di a1+a2
if and((a1+a2)/2>0.8*b1, (a1+a2)/2<1.2*b2)
%CASO2A: inserisco un corrente nel punto medio della baia a1+a2 e non tocco gli ultimi %due correnti dei due pannelli e vado a verificare dove è finito il corrente
%OUTPUT
controllo=('Modificato 2A'); bx=(a1+a2)/2;
if bx<a2 %vuol dire che fa parte del secondo pannello
n21=1; b21=bx;
else %vuol dire che fa parte del primo pannello
n11=1; b11=bx; end
elseif and((a1+a2+b1+b2)/4>0.8*b1, (a1+a2+b1+b2)/4<1.2*b2)
%CASO2B: inserisco un corrente, ma riposiziono questo + gli ultimi correnti dei due %pannelli e li posiziono in maniera equidistante all'interno della baia a1+a2+b1+b2 e %verifico dove vanno a finire i tre correnti
%OUTPUT
controllo=('Modificato 2B'); bx=(a1+a2+b1+b2)/4;
n10=n10-1; n20=n20-1;
if 3*bx<b2+a2 %vuol dire che tutti e tre i correnti sono andati a finire %nel secondo pannello
n21=3; b21=bx;
elseif 2*bx<b2+a2 %vuol dire che due correnti sono andati a finire nel %secondo ed un corrente nel primo pannello
n21=2; n11=1; b21=bx; b11=bx;
elseif bx<b2+a2 %vuol dire che un corrente è finito nel secondo pannello e %due nel primo pannello
n21=1; n11=2; b21=bx; b11=bx;
else %vuol dire che tutti e tre i correnti sono andati a finire nel primo %pannello
n11=2; b11=bx; end
elseif and((a1+a2)/3>0.8*b1, (a1+a2)/3<1.2*b2)
%CASO2C1: inserisco due correnti, e li posiziono in maniera equidistante nella baia %a1+a2 e poi verifico dove sono andati a finire i due correnti
%OUTPUT
controllo=('Modificato 2C1'); bx=(a1+a2)/3;
if 2*bx<a2 %vuol dire che i due correnti sono finiti nel secondo pannello
n21=2; b21=bx;
elseif bx<a2 %vuol dire che un corrente è finito nel secondo pannello e %l'altro nel primo
n21=1; n11=1; b21=bx; b11=bx;
else %vuol dire che sono finiti tutti e due nel primo pannello
n11=2; b11=bx; end
%CASO2C2: inserisco due correnti, ma riposiziono questi due + gli ultimi dei due %pannelli, e li riposiziono in maniera equidistante e vado a verificare che pannello %sono finiti %OUTPUT controllo=('Modificato 2C2'); n10=n10-1; n20=n20-1; bx=(a1+a2+b1+b2)/5;
if 4*bx<b2+a2 %vuol dire che tutti e quattro sono finiti nel secondo %pannello
n21=4; b21=bx;
elseif 3*bx<b2+a2 %vuol dire che tre correnti sono sul secondo pannello ed %uno sul primo
n21=3; n11=1; b21=bx; b11=bx;
elseif 2*bx<b2+a2 %vuol dire che due correnti sono sul secondo pannello e %due sul primo
n21=2; n11=2; b21=bx; b11=bx;
elseif bx<b2+a2 %vuol dire che un corrente è sul secondo pannello e tre %sul primo
n21=1; n11=3; b21=bx; b11=bx;
else %vuol dire che tutti e quattro i correnti sono sul primo
n11=4; b11=bx; end
end end
AllineaPannelli
% ALLINEAPANNELLI
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %
% INPUT DELLA PROCEDURA %
% %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % spessorePD %[mm] spessore del pannello dorsale % spessorePL %[mm] spessore del pannello laterale % spessorePV %[mm] spessore del pannello ventrale % spessoreCD %[mm] spessore correnti dorsali % spessoreCL %[mm] spessore correnti laterali % spessoreCV %[mm] spessore correnti ventrali % D %[m] diametro fusoliera
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %
% OUTPUT DELLA PROCEDURA %
% %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % DfusPD %[mm] diametro pannello dorsale 3D % DfusPL %[mm] diametro pannello laterale 3D % DfusPV %[mm] diametro pannello ventrale 3D % DfusCD %[mm] diametro correnti dorsali 3D % DfusCL %[mm] diametro correnti laterali 3D % DfusCV %[mm] diametro correnti ventrali 3D
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %Questo file serve per fornire i dati che servono ad allineare i pannelli della %fusoliera nello spirito di voler lasciare la parete esterna liscia (aerodinamica). %I diametri sia dei correnti, sia dei pannelli sono riferiti ai rispettivi piani medi.
vect1=[spessorePD spessorePL spessorePV]; tmax=max(vect1);
%PANNELLI
DfusPD=round(10000*D+tmax*10-spessorePD*10)/10; %[mm] diametro pannello dorsale 3D
DfusPL=round(10000*D+tmax*10-spessorePL*10)/10; %[mm] diametro pannello laterale 3D
DfusPV=round(10000*D+tmax*10-spessorePV*10)/10; %[mm] diametro pannello ventrale 3D
%CORRENTI
DfusCD=DfusPD-spessorePD-spessoreCD; %[mm] diametro correnti dorsali 3D
DfusCL=DfusPL-spessorePL-spessoreCL; %[mm] diametro correnti laterali 3D