Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
COSTRUZIONE DI MACCHINE
Esercitazioni del corso
a.a. 2013-2014
Alfredo Patrizi
matr. 194329 - Ing. Meccanica
email: alfredo.patrizi@gmail.com
27 febbraio 2014
Indice
1 Dischi di spessore costante 1
1.1 Introduzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.1.1 Oggetto e scopo . . . . . . . . . . . . . . . . . . . . . . 1
1.1.2 Geometria, materiale, condizioni di carico . . . . . . . 1
1.1.3 Metodologia e riferimenti . . . . . . . . . . . . . . . . . 2
1.2 Calcolo dello stato di tensione nel disco centrale . . . . . . . . 2
1.2.1 Risoluzione analitica . . . . . . . . . . . . . . . . . . . 2
1.2.2 Risoluzione numerica (FEM) . . . . . . . . . . . . . . . 6
1.3 Studio dellaccoppiamento albero-mozzo . . . . . . . . . . . . 8
3 Duomo sferico 23
3.1 Introduzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
3.1.1 Oggetto e scopo . . . . . . . . . . . . . . . . . . . . . . 23
3.1.2 Geometria, materiale, condizioni di carico . . . . . . . 24
3.1.3 Metodologia e riferimenti . . . . . . . . . . . . . . . . 24
3.2 Problema 3a: duomo con chiusura a lanterna . . . . . . . . . . 26
3.2.1 Dimensionamento del guscio . . . . . . . . . . . . . . . 26
3.2.2 Dimensionamento dellanello di rinforzo . . . . . . . . . 29
3.3 Problema 3b: duomo a sesto pieno . . . . . . . . . . . . . . . . 31
3.3.1 Dimensionamento del guscio . . . . . . . . . . . . . . . 31
3.3.2 Dimensionamento dellanello di rinforzo . . . . . . . . . 35
Bibliografia 37
Esercitazione 1
Dischi di spessore costante
1.1 Introduzione
1.1.1 Oggetto e scopo
Si richiede di eseguire il calcolo delle tensioni vigenti nel disco centrale di
spessore costante del rotore in acciaio di cui si riporta una vista in sezione in
Figura 1.1. Il rotore e soggetto a sollecitazioni da campo centrifugo dovuto
alla rotazione e a distribuzioni di carico di superficie al raggio interno del
mozzo e al raggio esterno della corona. Deve compiersi la verifica di resistenza
rispetto alla tensione di snervamento del materiale.
Si richiede inoltre il calcolo dellinterferenza di calettamento tra albe-
ro e mozzo necessaria a garantire, in condizioni desercizio, la distribuzio-
ne di pressione agente al raggio interno del disco, nonche della velocita di
scioglimento dellaccoppiamento.
ri = 110 mm
re = 300 mm
rc = 400 mm
a = 100 mm
b = 140 mm h
rc
h = 25 mm
re
= 0.3
= 7.85 kg/dm3 b
Condizioni di carico:
velocita di rotazione: n = 5400 rpm
D
Alfredo Patrizi Costruzione di Macchine a.a. 2013-14
Calcolo e risultati
Dalle equazioni di equilibrio alle interfacce mozzo-disco e disco-corona si
ricavano
m d
r,r i
= r,ri
h/b
c d
r,re = r,re h/a
e imponendo le condizioni al contorno
r = rm per r = rm
r = rc per r = rc
e infine possibile impostare la risoluzione del sistema delle equazioni di con-
gruenza alle medesime interfaccia nelle sole incognite. Valgono2 :
- uri ,m = uri ,d , con
2
ri h 1 2 2m
uri ,m = r,ri 2
(1 + (1 + ) m ) rm 2
+
E b 1 m 1 m
1 2
3+ 2 2
+ 0,m (1 + m ) (1 ) + m (1 + )
8 3+
2
re 2 d (1 + )
uri ,d = d r,re r,ri 1+ +
E 1 d2 1 d2 d2
1 2 2
3+ 2
+ 0,d (1 + d ) (1 ) + (1 + ) d
8 3+
1
Si e introdotta la variabile adimensionalizzata = r/re ; le costanti C, D valgono
C = 3+
8 0 e D =
1+3
8 0 , essendo 0 = 2 re2 la tensione di riferimento
2
Le tensioni r,ri , r,re si intendono di seguito riferite al disco centrale
2d2
ri 1 2
ure ,d = r,re (1 + (1 + ) d ) r,ri +
E 1 d2 1 d2
1 2
3+ 2 2
+ 0,d (1 + d ) (1 ) + d (1 + )
8 3+
c2
rc 2 h (1 + )
ure ,c = c rc r,re 1+ +
E 1 c2 a 1 c2 c2
1 2 2
3+ 2
+ 0,c (1 + c ) (1 ) + (1 + ) c
8 3+
r,ri = 521.69 M P a
t,ri = 321.87 M P a
Calcolo e risultati
Un primo modello e stato realizzato adottando elementi piani a 4 nodi,
con due g.d.l. per nodo. Condividendo tale schematizzazione il medesimo
livello di approssimazione del metodo di risoluzione analitico di cui al para-
grafo precedente, si ha una pressoche rigorosa corrispondenza dei rispettivi
risultati, entrambi riportati in Figura 1.4.
Per poter indagare riguardo allo stato di tensione agente alle interfacce
tra i tratti a diverso spessore, e stato dunque realizzato un modello con ele-
menti solidi, preparando una Hex-Mesh strutturata di elementi esaedrici a 8
r e ri Kt
4 797.3 1.75
6 750.5 1.65
8 562.8 1.23
10 558.8 1.23
2 pf rm ri2
i = uri ,m uri ,a = = 0.0081 mm
E (ri2 rm2 )
i = i() + i(rc )
= u(,
ri ,m
rc )
u()
ri ,a
Esercitazione 2
Disco iperbolico:
Risoluzione analitica e numerica
2.1 Introduzione
2.1.1 Oggetto e scopo
Si richiede di eseguire il calcolo delle tensioni vigenti nel disco centra-
le di profilo iperbolico del rotore in acciaio di cui si riporta una vista in
sezione in Figura 2.1. Il disco suddetto presenta spessore variabile definito
dallequazione di Stodola:
h = C ra
con C, a costanti. Il rotore e soggetto a sollecitazioni da campo centrifugo
dovuto alla rotazione e a distribuzioni di carico di superficie al raggio interno
del mozzo e al raggio esterno della corona. Deve compiersi una verifica di
resistenza della suddetta struttura rispetto alla tensione di snervamento del
materiale.
Si richiede inoltre di realizzare il suddetto calcolo anche secondo i metodi
numerici di Timoshenko-Grammel e di Manson, nelle formulazioni proposte
in Vullo e Vivio 2013, con lobiettivo di determinare il numero minimo di
tronchi discreti sufficiente a garantire un errore inferiore all 1 % nelle tensioni
radiale e circonferenziale.
11
Alfredo Patrizi Costruzione di Macchine a.a. 2013-14
rc
he = 20 mm hi
re
Caratteristiche del materiale:
E = 210 GP a rm
ri
rm
= 0.3
= 7.85 kg/dm3 b
Condizioni di carico:
velocita di rotazione: n = 3000 rpm
forza di superficie al raggio interno del mozzo: rm = 10 M P a
forza di superficie al raggio esterno della corona: rm = 50 M P a
Calcolo e risultati
r = rm per r = rm
r = rc per r = rc
r,re = 559.04 M P a
t,re = 492.83 M P a
e,re = 529.05 M P a
sEDmax = sn /e = 1.32
Calcolo e risultati
Calcolo e risultati
Si riportano, a titolo di esempio, i risultati ottenuti discretizzando il disco
in n = 20 tronchi di spessore costante, nei termini delle tensioni radiale,
circonferenziale ed equivalente secondo il criterio della massima energia di
distorsione agenti nel disco centrale di profilo iperbolico.
I primi due e gli ultimi due valori dei raggi della discretizzazione proposta
definiscono rispettivamente lestensione del mozzo e della corona, entrambi a
spessore costante anche nella struttura reale. Linterfaccia tra mozzo e disco
centrale e stata computata due volte, sia con lo spessore del primo tratto, sia
con lo spessore interno del disco iperbolico; analogamente per linterfaccia tra
questultimo e la corona. Il massimo errore percentuale rispetto ai risultati
analitici e del 4.53 %.
Lo script mansonOriginal.m ha un tempo di esecuzione di 0.008 s, men-
tre lo script manson.m termina in 0.017 s: la matrice quadrata associata al
sistema e ancora sparsa ed e stata riscritta in forma bandata, ma la banda
in questo caso risulta pari a 5.
Calcolo e risultati
Dopo una prima analisi condotta a partire dalla sezione originale del
rotore come da Figura 2.1, la geometria e stata ripreparata introducendo
un raccordo in corrispondenza delle interfacce mozzo-disco e disco-corona;
il raggio di raccordo e stato dimensionato per successivi tentativi calcolan-
do di volta in volta il corrispondente fattore di concentrazione delle tensioni
rispetto alla tensione nominale calcolata in ipotesi di stato piano di tensio-
ne (e,re = 529.05 M P a): come si evince dalla tabella sotto riportata, un
raccordo di raggio pari a 16 mm e necessario per evitare di raggiungere le
condizioni di snervamento.
r e re Kt
4 866.9 1.64
6 719.9 1.36
8 659.9 1.25
10 615.1 1.16
Esercitazione 3
Duomo sferico
3.1 Introduzione
3.1.1 Oggetto e scopo
Si richiede di eseguire il dimensionamento dei due gusci sferici rappresen-
tati in sezione meridiana nella Figura 3.1 e dei rispettivi anelli di rinforzo,
in entrambi i casi tenendo in considerazione il peso proprio delle strutture;
il calcolo deve contemplare la variazione dellangolo su cui insistono gli archi
delle rispettive curve meridiane entro un intervallo definito. Il duomo di Fi-
gura 3.1(b) e sottoposto inoltre a un carico da neve sinusoidale, mentre nel
guscio di Figura 3.1(a) e presente una luce con un secondo anello di rinforzo,
sul quale insiste un carico esterno concentrato.
Si richiede inoltre di discutere la possibilita di evitare effetti flessionali
locali in corrispondenza delle giunzioni con gli anelli di rinforzo, ancora al
variare dellangolo sotteso dalle curve meridiane.
P P
q
0
R
R
23
Alfredo Patrizi Costruzione di Macchine a.a. 2013-14
Condizioni di carico:
carico concentrato:
P = 1 kN/m
carico da 1 m di neve:
40 6 6 90:
/2
q = q cos
90 6 6 120 :
3.1. Introduzione 25
Alfredo Patrizi Costruzione di Macchine a.a. 2013-14
Calcolo e risultati
Risolvendo le equazioni di equilibrio, si ha:
cos 0 cos sin 0
N = pR 2 P 2
sin sin
cos 0 cos sin 0
N = pR 2 cos + P 2
sin sin
La Figura 3.2 mostra gli andamenti delle funzioni:
cos 0 cos
fa () =
sin2
cos 0 cos
fb () = cos
sin2
sin 0
fc () =
sin2
2
Si pone di seguito p = s, essendo s lo spessore del guscio.
s = 0.1109 mm
Introduzione
H
sr =
E,shell
q
! H
1 16 Es r
r = max R H
1 ,R q
1 sn sr 1 12 16 Es H
r
Calcolo e risultati
- 40 6 < 90 :
q = q cos
2
Z = p cos q cos cos
Z 2
Q= p + q cos (2R sin ) (R d) =
0 2
= 2R2 p(1 cos )+
2R2 q h i
+ 2 1 cos cos sin sin
1 2 2 2
2
- 90 6 6 120 :
per il tratto con [0 , 90 ], valgono
q = q cos
Z = p cos q cos2
Z
Q= (p + q cos ) (2R sin ) (R d) + =
0
2 1 1
= 2R p(1 cos ) + q cos(2)
4 4
Z = p cos
Z
Q= p (2R sin ) (R d) 2RN, =/2 =
/2
h q i
= 2R2 p(1 cos ) +
2
Calcolo e risultati
Risolvendo le equazioni di equilibrio, si ha:
- 40 6 < 90 :
1 1 cos cos 2 2 sin sin 2
N = pR qR h i 2
1 + cos 2
1 2 sin
1
N = pR cos +
1 + cos
1 cos cos sin sin
+ qR h 2 i2 2
cos cos
2 2 2
1 2 sin
- 90 6 6 120 :
per il tratto con [0 , 90 ], valgono
1 qR
N = pR
1 + cos 2
1 1 2
N = pR cos + qR cos
1 + cos 2
In Figura 3.7 sono riportati gli andamenti delle tensioni agenti nel guscio
sferico. In particolare, il calcolo e stato eseguito, a titolo desempio, per tre
valori dellangolo :
- = 40 s = 0.358 mm
- = 90 s = 0.205 mm
- = 120 s = 0.484 mm
H
sr =
E,shell
q
! H
1 16 Es r
r = max R H
1 ,R q
1 sn sr
1
1 2 16 Esr H
Calcolo e risultati
La Figura 3.8 mostra landamento di sr () ottenuto imponendo diret-
tamente le condizioni di compatibilita. Come verificato anche negli esempi
mostrati in Figura 3.7(a), in corrispondenza del parallelo di giunzione tra
duomo sferico e anello si ha sempre Ntheta > 0: il guscio subisce una dilata-
zione radiale e, per < 90 , puo dimensionarsi lanello in modo da garantire
la compatibilita degli spostamenti allinterfaccia. Per > 90 , anche in que-
sto caso, lo script restituisce valori negativi per lo spessore, indice del fatto
che i segni di shell
e ring
sono divenuti discordi. Del resto, come si deduce
sempre dalla Figura 3.7(a), la N risulta negativa (e dunque di compressio-
ne) in tutto il dominio: in = 90 , la componente H della reazione scaricata
sullanello subisce uninversione del segno, cos che questo non risulta piu
sottoposto a trazione, bens a compressione.
La Figura 3.9 mostra infine landamento di r ().
Bibliografia
Flugge, W. (1973). Stresses in Shells. Springer.
Timoshenko, S.P. e S. Woinowsky-Krieger (1959). Theory of Plates and
Shells. McGraw Hill.
Vullo, V. (2014). Circular Cylinders and Pressure Vessels. Springer.
Vullo, V. e F. Vivio (2013). Rotors: Stress Analysis and Design. Springer.
37
Alfredo Patrizi Costruzione di Macchine a.a. 2013-14
Appendice A
Listati in ambiente Matlab
39
19/02/14 9.21 D:\MatLab_Files\CM\CM_Ex_1.m 1 of 2
1 clear all
2 clc
3 close all
4 %format short;
5
6 %% Title
7 % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % %
8 % %
9 % EX 1 - Crown-ring Design: Costant Thickness Disks %
10 % Author: Alfredo Patrizi %
11 % %
12 % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % %
13 sTitle = 'EX 1 - Crown-ring Design: Costant Thickness Disks';
14
15 %% Global Variables
16 global E; global ni; global gamma; global alpha;
17 global steps; global n;
18
19 %% Integration parameters
20 steps = 1000;
21
22 %% Material data
23 E = 2.1 * 10 ^ 5; % [MPa]
24 ni = .3;
25 gamma = 7.85 * 10 ^ (-9); % [Mg/mm^3 = 10^(-12) kg/m^3]
26 alpha = 0;
27 sigmaY = 700; % [MPa]
28
29 %% Geometry and working condition
30 n = 3;
31 omega = 5400 * 2 * pi / 60; % [rad/s]
32 sigmaR_int = - 10; % [MPa]
33 sigmaR_ext = 50; % [MPa]
34 [radii, heights] = Ex_1();
35
36 %% Problem
37 % Stress state in central constant thickness disk
38 [sigmaRI, sigmaRE] = interfacesRadialStresses(@Ex_1, n, radii, heights, sigmaR_int,
sigmaR_ext, omega);
39 disk = classConstantThicknessDisk(gamma, ni, E, radii(2), radii(2 + 1), sigmaRI(2),
sigmaRE(2), omega);
40 shaft = classConstantThicknessDisk(gamma, ni, E, 0, radii(1), 0, sigmaRI(1), omega);
41 hub = classConstantThicknessDisk(gamma, ni, E, radii(1), radii(1 + 1), sigmaRI(1),
sigmaRE(1), omega);
42
43 % Interference-fit assembly calculation
44 [sigmaRI_r, sigmaRE_r] = interfacesRadialStresses(@Ex_1, n, radii, heights, 0,
sigmaR_ext, omega);
45 hub_r = classConstantThicknessDisk(gamma, ni, E, radii(1), radii(1 + 1), sigmaRI_r
(1), sigmaRE_r(1), omega);
46 shaft_r = classConstantThicknessDisk(gamma, ni, E, 0, radii(1), 0, sigmaRI_r(1),
omega);
47 i = - 2 * sigmaR_int * radii(1) * radii(1 + 1) ^ 2 / (E * (radii(1 + 1) ^ 2 - radii
(1) ^ 2));
48 delta_i = u_r(hub_r, hub_r.beta) - u_r(shaft_r, 1);
49 i_0 = i + delta_i;
50 i_tot = u_r(hub, hub.beta) - u_r(shaft, 1);
51 err = (i_0 - i_tot)/i_0;
52 pF_0 = i_0 * E * (radii(1 + 1) ^ 2 - radii(1) ^ 2) / (2 * radii(1) * radii(1 + 1) ^
2); %pF = i * E * (radii(1 + 1) ^ 2 - radii(1) ^ 2) / (2 * radii(1) * radii(1 + 1) ^ 2)
53 hub_pF0 = classConstantThicknessDisk(gamma, ni, E, radii(1), radii(1 + 1), -pF_0, 0,
0);
54 [sigmaR_pf0, sigmaT_pf0] = stresses(hub_pF0, hub_pF0.beta);
55 fprintf(['Calcolo interferenza di calettamento: \n i = ', num2str(i), '\n delta_i =
', num2str(delta_i),...
19/02/14 9.21 D:\MatLab_Files\CM\CM_Ex_1.m 2 of 2
56 '\n i_0 = ', num2str(i_0), '\n pF_0 = ', num2str(pF_0), '\n sigmaT_pf0 = ',
num2str(sigmaT_pf0),...
57 '\n\n i_tot = ', num2str(i_tot), '\n err = ', num2str(err), '\n\n']);
58
59 % Equivalent stresses
60 [sigmaR, sigmaT] = stressesPlot(disk, steps);
61 sigmaE(1, :) = trescaPlot(disk, steps, sigmaR, sigmaT, zeros(steps + 1));
62 sigmaE(2, :) = vonMisesPlot(disk, steps, sigmaR, sigmaT, zeros(steps + 1));
63 u = uPlot(disk, steps);
64
65 %% Plotting
66 rho = (disk.beta : (1 - disk.beta) / steps : 1);
67
68 figure;
69 plot(rho, sigmaR, '-b', rho, sigmaT, '-r', 'LineWidth', 1.5);
70 grid on;
71 axis([disk.beta, 1, 100, 600]);
72 xlabel('\rho', 'FontWeight', 'bold');
73 ylabel('\sigma_r , \sigma_t [MPa]','FontWeight','bold');
74 legend('\sigma_r', '\sigma_t');
75 title('Ex. 1 - Stress state in the central disk', 'FontWeight','bold');
76 hold off;
77
78 figure;
79
80 plot(rho, sigmaE(1, :), '-c', rho, sigmaE(2, :), '-g', 'LineWidth', 1.5);
81 grid on;
82 axis([disk.beta, 1, 100, 600]);
83 xlabel('\rho', 'FontWeight','bold');
84 ylabel('\tau_{max} , \sigma_e [MPa]','FontWeight','bold');
85 legend('\tau_{max}','\sigma_e');
86 title('Ex. 1 - Equivalent stresses', 'FontWeight','bold');
87 %[sTMax,ix] = max(sigmaE(1, :));
88 %[sEDMax,jx] = max(sigmaE(2, :));
89 %text(rho(jx), sEDMax, ' \leftarrow Maximum equivalent stress)',
'HorizontalAlignment','left');
90
91 fid = fopen('Ex1_planeResults_MATLAB.txt', 'wt');
92 fprintf(fid, '%f, %f, %f, %f, %f \n', [rho; sigmaR; sigmaT; sigmaE(1, :); sigmaE(2,
:)]);
93
19/02/14 9.21 D:\MatLab_Files\CM\CM_Ex_2.m 1 of 3
1 clear all
2 clc
3 close all
4 %format short;
5
6 %% Title
7 % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % %
8 % %
9 % EX 2 - Hyperbolic Disk: Analytical and Numerical Results %
10 % Author: Alfredo Patrizi %
11 % %
12 % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % %
13 sTitle = 'EX 2 - Hyperbolic Disk - Analytical and Numerical Results';
14
15 %% Global Variables
16 global E; global ni; global gamma; global alpha;
17 global steps;
18
19 %% Integration parameters
20 steps = 1000;
21 plotWholeDisk = 0;
22
23 %% Material data
24 E = 2.1 * 10 ^ 5; % [MPa]
25 ni = .3;
26 gamma = 7.85 * 10 ^ (-9); % [Mg/mm^3 = 10^(-12) kg/m^3]
27 alpha = 0;
28 sigmaY = 700; % [MPa]
29
30 %% Geometry and working condition
31 n = 3;
32 omega = 3000 * 2 * pi / 60; % [rad/s]
33 sigmaR_int = - 10; % [MPa]
34 sigmaR_ext = 50; % [MPa]
35 gHandle = @Ex_2;
36 [radii, heights] = Ex_2();
37
38 e_tG = 1;
39 e_m = 1;
40 e_max = .01;
41
42 %% Problem
43 % Analitical solution
44 [sigmaRI, sigmaRE] = interfacesRadialStresses(@Ex_2, n, radii, heights, sigmaR_int,
sigmaR_ext, omega);
45 disk = classHyperbolicDisk(gamma, ni, E, radii(2), radii(2 + 1), heights(3),
heights(3 + 1), sigmaRI(2), sigmaRE(2), omega);
46 [sigmaR, sigmaT] = stressesPlot(disk, steps);
47 sigmaE = vonMisesPlot(disk, steps, sigmaR, sigmaT, zeros(steps + 1));
48 rho = (disk.beta : (1 - disk.beta) / steps : 1);
49
50 % Comparison of Timoshenko-Grammel's and Manson's numerical methods
51 fHandle = @timoshenkoGrammel;
52 sE_tG(steps + 1) = 0;
53 sigmaT_int = 10;
54 n_tG = 4;
55 while e_tG > e_max
56 e_tG = 0;
57 [r, h] = discretizedStodola(n_tG, radii, heights, fHandle);
58 [sigmaR_tG, sigmaT_tG] = fHandle(n_tG, r, h, sigmaR_int, sigmaR_ext, omega,
sigmaT_int);
59 for i = 1 : size(sigmaR_tG, 2)
60 sE_tG(i) = vonMises([sigmaR_tG(i), sigmaT_tG(i), 0]);
61 e_tG = max([e_tG, abs((sigmaR(i) - sigmaR_tG(i)) / sigmaR(i)), abs((sigmaT
(i) - sigmaT_tG(i)) / sigmaT(i))] ); % , abs((sigmaE(i) - sE_tG(i)) / sigmaE(i))] );
19/02/14 9.21 D:\MatLab_Files\CM\CM_Ex_2.m 2 of 3
62 end
63 n_tG = n_tG + 1;
64 end
65 n_tG = n_tG - 1;
66 e_tG;
67 fprintf(['Metodo di Timoshenko-Grammel: \n e_TG = ', num2str(e_tG), ' per n_TG = ',
num2str(n_tG), ' tronchi discreti.\n\n']);
68
69 fHandle = @mansonOriginal; %fHandle = @manson;
70 n_m = 6;
71 if plotWholeDisk == 0
72 while e_m > e_max
73 e_m = 0;
74 [r, h] = discretizedStodola(n_m, radii, heights, fHandle);
75 [sigmaR_m, sigmaT_m] = fHandle(n_m, r, h, sigmaR_int, sigmaR_ext, omega,
plotWholeDisk);
76 sE_m(size(sigmaR_m, 2)) = 0;
77 for i = 1 : size(sigmaR_m, 2)
78 [sR, sT] = stresses(disk, r(i + 2) / disk.r_ext);
79 sE = vonMises([sR, sT, 0]);
80 sE_m(i) = vonMises([sigmaR_m(i), sigmaT_m(i), 0]);
81 e_m = max([e_m, abs((sR - sigmaR_m(i)) / sR), abs((sT - sigmaT_m(i)) /
sT)] ); % , abs((sE - sE_m(i)) / sE)] );
82 end
83 n_m = n_m + 1;
84 end
85 rho_m = (disk.beta : (1 - disk.beta) / (n_m - 5) : 1);
86 else
87 rho_m = rho;
88 while e_m > e_max
89 e_m = 0;
90 [r, h] = discretizedStodola(n_m, radii, heights, fHandle);
91 [sigmaR_m, sigmaT_m] = fHandle(n_m, r, h, sigmaR_int, sigmaR_ext, omega,
plotWholeDisk);
92 sE_m(size(sigmaR_m, 2)) = 0;
93 for i = 1 : size(sigmaR_m, 2)
94 sE_m(i) = vonMises([sigmaR_m(i), sigmaT_m(i), 0]);
95 e_m = max([e_m, abs((sigmaR(i) - sigmaR_m(i)) / sigmaR(i)), abs((sigmaT
(i) - sigmaT_m(i)) / sigmaT(i))] ); % , abs((sigmaE(i) - sE_m(i)) / sigmaE(i))] );
96 end
97 n_m = n_m + 1;
98 end
99 end
100 n_m = n_m - 1;
101 e_m;
102 fprintf(['Metodo di Manson: \n e_M = ', num2str(e_m), ' per n_M = ', num2str(n_m),
' tronchi discreti.\n\n']);
103
104 %% Plotting
105 figure;
106 plot(rho, sigmaR, '-b', rho, sigmaT, '-r', rho, sigmaE, '-g', 'LineWidth', 1.2);
107 grid on;
108 axis([disk.beta, 1, 100, 700]);
109 xlabel('\rho', 'FontWeight', 'bold');
110 ylabel('\sigma_r , \sigma_t, \sigma_e [MPa]', 'FontWeight', 'bold');
111 legend('\sigma_r', '\sigma_t', '\sigma_e');
112 title('Ex. 2 - Stress state in the hyperbolic disk, Analitical Results',
'FontWeight', 'bold');
113 hold off;
114
115 figure;
116 plot(rho, sigmaR_tG, '-b', rho, sigmaT_tG, '-r', rho, sE_tG, '-g', 'LineWidth',
1.2);
117 grid on;
118 axis([disk.beta, 1, 100, 700]);
19/02/14 9.21 D:\MatLab_Files\CM\CM_Ex_2.m 3 of 3
1 classdef classConstantThicknessDisk
2 %% Title
3 %
4 % CLASS CONSTANTTHICKNESSDISK
5 % Author: Alfredo Patrizi
6 %
7 % This class defines the generic constant thickness disk subjected to
8 % centrifugal body load due to rotation and surface loads at the inner
9 % and outer radii. The methods allow to determine the stress state and
10 % the radial displacements in the whole disk, according to Vullo and
11 % Vivio 2013 formulation.
12
13 properties
14 ni;
15 E;
16 gamma;
17 r_int;
18 r_ext;
19 sigmaR_int;
20 sigmaR_ext;
21 omega;
22 beta;
23 sigma_0;
24 A;
25 B;
26 C;
27 D;
28 end
29 methods
30 function obj = classConstantThicknessDisk(gamma, ni, E, r_int, r_ext,
sigmaR_int, sigmaR_ext, omega)
31 obj.gamma = gamma;
32 obj.ni = ni;
33 obj.E = E;
34 obj.r_int = r_int;
35 obj.r_ext = r_ext;
36 obj.sigmaR_int = sigmaR_int;
37 obj.sigmaR_ext = sigmaR_ext;
38 obj.omega = omega;
39 obj.beta = r_int / r_ext;
40 obj.sigma_0 = gamma * omega ^ 2 * r_ext ^ 2;
41 obj.A = (sigmaR_ext - sigmaR_int * obj.beta ^ 2) / (1 - obj.beta ^ 2) +
(3 + ni) / 8 * obj.sigma_0 * (1 + obj.beta ^ 2);
42 obj.B = (sigmaR_ext - sigmaR_int) * obj.beta ^ 2 / (1 - obj.beta ^ 2) +
(3 + ni) / 8 * obj.sigma_0 * obj.beta ^ 2;
43 obj.C = (3 + ni) / 8 * obj.sigma_0;
44 obj.D = (1 + 3 * ni) / 8 * obj.sigma_0;
45 end
46 function [sigmaR, sigmaT] = stresses(obj, rho)
47 sigmaR = obj.A - obj.B / rho ^ 2 - obj.C * rho ^ 2;
48 sigmaT = obj.A + obj.B / rho ^ 2 - obj.D * rho ^ 2;
49 end
50 function [sigmaR, sigmaT] = stressesPlot(obj, steps)
51 sigmaR(steps + 1) = 0;
52 sigmaT(steps + 1) = 0;
53 i = 1;
54 for rho = obj.beta : (1 - obj.beta) / steps : 1
55 [sigmaR(i), sigmaT(i)] = stresses(obj, rho);
56 i = i + 1;
57 end
58 end
59 function [sigmaE] = vonMisesPlot(obj, steps, sigmaR, sigmaT, sigmaZ)
60 sigmaE(steps + 1) = 0;
61 i = 1;
62 for rho = obj.beta : (1 - obj.beta) / steps : 1
19/02/14 9.21 D:\MatLab_...\classConstantThicknessDisk.m 2 of 2
43 else
44 N(i) = N(i) + sigmaR_int * 2 * beta(1) ^ 2 / (1 - beta(1) ^ 2) *
radii(i + 1);
45 end
46 B(i, 2) = 1 / (1 - beta(1) ^ 2) * (1 - ni + (1 + ni) * beta(1) ^ 2) *
radii(i + 1) + heights(i) / heights(i + 1) * beta(2) ^ 2 / (1 - beta(2) ^ 2) * (1 - ni
+ (1 + ni) / beta(2) ^ 2) * radii(i + 2) * beta(2); % coefficient for sigmaRE(i)
47 if i < n - 1
48 B(i + 1, 3) = - 2 / (1 - beta(2) ^ 2) * radii(i + 2) * beta(2); %
coefficient for sigmaRE(i + 1)
49 else
50 N(i) = N(i) + sigmaR_ext * 2 / (1 - beta(2) ^ 2) * radii(i + 2) *
beta(2);
51 end
52 end
53 M = spdiags(B, [-1, 0, 1], n - 1, n - 1);
54 sigmaRE = (full(M) \ N')';
55 sigmaRI(n) = 0;
56 for i = 2 : n
57 sigmaRI(i) = sigmaRE(i - 1) * heights(i - 1) / heights(i);
58 end
59 end
60 sigmaRI(1) = sigmaR_int;
61 sigmaRE(n) = sigmaR_ext;
19/02/14 9.22 D:\MatLab_Files\CM\discretizedStodola.m 1 of 1
65 i_end = n - 1;
66 else
67 R_int = radii(1);
68 R_est = radii(n + 1);
69 i_start = 1;
70 i_end = n;
71 end
72 for t = 1 : steps + 1
73 r = R_int + (t - 1) * (R_est - R_int) / steps;
74 for i = i_start : i_end
75 if r >= radii(i) && r <= radii(i + 1)
76 for l = 1 : 2
77 SigmaR(l, t) = A(l, i) - B(l, i) / r ^ 2 - C(l) * r ^ 2;
78 SigmaT(l, t) = A(l, i) + B(l, i) / r ^ 2 - D(l) * r ^ 2;
79 end
80 end
81 end
82 SigmaR(3, t) = SigmaR(1, t) + k * SigmaR(2, t);
83 SigmaT(3, t) = SigmaT(1, t) + k * SigmaT(2, t);
84 end
85 sigmaR = SigmaR(3, :);
86 sigmaT = SigmaT(3, :);
87
19/02/14 9.23 D:\MatLab_Files\CM\manson.m 1 of 3
deltaI)) / steps;
109 for i = 1 : n - 2 * deltaI
110 if r >= radii(i + deltaI) && r <= radii(i + deltaI + 1)
111 sigmaR(t) = SigmaR(i) + (SigmaR(i + 1) - SigmaR(i)) / (radii(i
+ deltaI + 1) - radii(i + deltaI)) * (r - (radii(i + deltaI + 1)));
112 sigmaT(t) = SigmaT(i) + (SigmaT(i + 1) - SigmaT(i)) / (radii(i
+ deltaI + 1) - radii(i + deltaI)) * (r - (radii(i + deltaI + 1)));
113 end
114 end
115 end
116 end
19/02/14 9.23 D:\MatLab_Files\CM\mansonOriginal.m 1 of 2
61 L = - ( D_ * G - D * G_ ) / Z;
62 L_ = - ( C * G_ - C_ * G ) / Z;
63 M = ( D_ * H - D * H_ ) / Z;
64 M_ = ( C * H_ - C_ * H ) / Z;
65
66 Ar(i + 1) = Ar(i) * k + At(i) * L;
67 At(i + 1) = Ar(i) * k_ + At(i) * L_;
68 Br(i + 1) = Br(i) * k + Bt(i) * L + M;
69 Bt(i + 1) = Br(i) * k_ + Bt(i) * L_ + M_;
70 end
71
72 %% Output
73 if plotOnlyDisk == 1
74 deltaI = 2;
75 else
76 deltaI = 0;
77 end
78 % memory allocation
79 SigmaR(n + 1 - deltaI * 2) = 0;
80 SigmaT(n + 1 - deltaI * 2) = 0;
81 SigmaT_1 = ( sigmaR_ext - Br(n + 1) ) / Ar(n + 1);
82 % printing
83 for i = 1 + deltaI : n + 1 - deltaI
84 SigmaR(i - deltaI) = Ar(i) * SigmaT_1 + Br(i);
85 SigmaT(i - deltaI) = At(i) * SigmaT_1 + Bt(i);
86 end
87
88 if plotWholeDisk == 0
89 sigmaR = SigmaR;
90 sigmaT = SigmaT;
91 else
92 sigmaR(steps + 1) = 0;
93 sigmaT(steps + 1) = 0;
94 for t = 1 : steps + 1
95 r = radii(1 + deltaI) + (t - 1) * (radii(n + 1 - deltaI) - radii(1 +
deltaI)) / steps;
96 for i = 1 : n - 2 * deltaI
97 if r >= radii(i + deltaI) && r <= radii(i + deltaI + 1)
98 sigmaR(t) = SigmaR(i) + (SigmaR(i + 1) - SigmaR(i)) / (radii(i
+ deltaI + 1) - radii(i + deltaI)) * (r - (radii(i + deltaI + 1)));
99 sigmaT(t) = SigmaT(i) + (SigmaT(i + 1) - SigmaT(i)) / (radii(i
+ deltaI + 1) - radii(i + deltaI)) * (r - (radii(i + deltaI + 1)));
100 end
101 end
102 end
103 end
19/02/14 9.24 D:\MatLab_File...\constantThicknessDisks.m 1 of 2
54 sigmaRE(n) = sigmaR_ext;
55 sigmaRI(n - 1) = 0;
56
57 % Calculating stresses in the entire disk
58 sigmaR(stepsTot + 1) = 0;
59 sigmaT(stepsTot + 1) = 0;
60 stepsTemp = 0;
61 for i = 1 : n
62 if i > 1
63 sigmaRI(i) = sigmaRE(i - 1) * heights(i - 1) / heights(i);
64 else
65 sigmaRI(i) = sigmaR_int;
66 end
67 steps = round(stepsPark * (radii(i + 1) - radii(i)) / (radii(n + 1) - radii
(1)));
68 stepsTemp = stepsTemp + steps;
69 [sigmaR(stepsTemp - steps + 1 : stepsTemp + 1), sigmaT(stepsTemp - steps + 1
: stepsTemp + 1)] = constantThicknessDisk(1, [radii(i), radii(i + 1)], 0, sigmaRI(i),
sigmaRE(i), omega, 0);
70 if i < n
71 sigmaR(stepsTemp + 1) = [];
72 sigmaT(stepsTemp + 1) = [];
73 end
74 end
75 steps = stepsTot;
19/02/14 9.22 D:\MatLab_Files\CM\Ex_1.m 1 of 1
1 function h = h_Stodola(r, C, a)
2 h = C * r ^ a;
19/02/14 9.23 D:\MatLab_Files\CM\tresca.m 1 of 1
1 clear all
2 clc
3 close all
4 %format short;
5
6 % Title
7 % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % %
8 % %
9 % EX 3 - SHELLS IN THE FORM OF SURFACES OF REVOLUTION, MEMBRANE THEORY %
10 % Author: Alfredo Patrizi %
11 % %
12 % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % %
13 sTitle = 'EX 3 - Shells in the form of surfaces of revolution, membrane theory';
14
15 % Global variables
16 global R; global gamma; global gammaSnow; global sSnow;
17
18 % Integration parameters
19 steps_a = 500;
20 steps = 500;
21
22 % Material data
23 g = 9.80665 * 10 ^ 3; % [mm/s^2 = 10^3 m/s^2]
24 E = 2.1 * 10 ^ 5; % [MPa]
25 ni = .3;
26 gamma = 7.85 * 10 ^ (-9) * g; % [Mg/mm^3 = 10^(-12) kg/m^3] * g
27 gammaSnow = .5 * 10 ^ (-9) * g; % [Mg/mm^3 = 10^(-12) kg/m^3] * g
28 sigmaY = 240; % [MPa]
29 X = 4;
30 sigmaA = sigmaY / X; % [MPa]
31
32 % Geometry and working condition
33 R = 5000; % [mm]
34 phi_0 = 15;
35 P = 1; % [N / mm]
36 sSnow = 1000; % [mm]
37 alphaMin = 40;
38 alphaMAX = 120;
39
40 opening = 0;
41
42 if opening == 1
43 % Functions of sin(phi), cos(phi)
44 f_a = @(phi) ((cos(phi_0 * pi / 180) - cos(phi * pi / 180)) / (sin(phi * pi /
180)) ^ 2);
45 f_b = @(phi) ((cos(phi_0 * pi / 180) - cos(phi * pi / 180)) / (sin(phi * pi /
180)) ^ 2 - cos(phi * pi / 180));
46 f_c = @(phi) (sin(phi_0 * pi / 180) / (sin(phi * pi / 180)) ^ 2);
47 figure;
48 hold on
49 fplot(f_a, [phi_0 alphaMAX], '-b');
50 fplot(f_b, [phi_0 alphaMAX], '-r');
51 fplot(f_c, [phi_0 alphaMAX], '-g');
52 grid on;
53 xlabel('\phi []', 'FontWeight','bold');
54 ylabel('f_a, f_b, f_c','FontWeight','bold');
55 legend('f_a' , 'f_b', 'f_c');
56 title('Ex. 3 - f_a(\phi), f_b(\phi), f_c(\phi)', 'FontWeight','bold');
57 hold off
58
59 % Forces vs phi, s: N_phi(phi, s), N_theta(phi, s)
60 N_phi_s = @(phi, s) ( - gamma * s * R * f_a(phi) - P * f_c(phi) );
61 N_theta_s = @(phi, s) ( gamma * s * R * f_b(phi) + P * f_c(phi) );
62 sigmaE_s = @(phi, s) sqrt( (N_phi_s(phi, s)/ s) ^ 2 + (N_theta_s(phi, s)/ s) ^
2 - N_phi_s(phi, s) * N_theta_s(phi, s) / s ^ 2 );
20/02/14 20.34 D:\MatLab_Files\CM\CM_Ex_3.m 2 of 6
63
64 % Shell and ring thicknesses
65 thickness(steps_a + 1) = 0;
66 eps_theta_1(steps_a + 1) = 0;
67 thicknessRing(steps_a + 1) = 0;
68 delta(steps_a + 1) = 0;
69 i = 1;
70 dalpha = (alphaMAX - alphaMin) / steps_a;
71 for alpha = alphaMin : dalpha : alphaMAX
72 for phi = phi_0 : (alpha - phi_0) / steps : alpha
73 fun_sigmaE = @(s) ( ( (N_phi_s(phi, s)/ s) ^ 2 + (N_theta_s(phi, s)/ s)
^ 2 - N_phi_s(phi, s) * N_theta_s(phi, s) / s ^ 2 ) - sigmaA ^ 2 );
74 thickness(i) = max([thickness(i), fzero(fun_sigmaE, [.001 1000])]);
75 end
76 H = -N_phi_s(alpha, thickness(i)) * cos(alpha * pi / 180);
77 eps_theta_1(i) = 1 / (E * thickness(i)) * (N_theta_s(alpha, thickness(i)) -
ni * N_phi_s(alpha, thickness(i)));
78 thicknessRing(i) = H / (E * eps_theta_1(i));
79 delta(i) = max([R * (1 / (1 - H / thicknessRing(i) / (1.2 * sigmaY)) - 1),
R * (sqrt(16 * H / thicknessRing(i) / E) / (1 - .5 * sqrt(16 * H / thicknessRing(i) /
E)))]);
80 i = i + 1;
81 end
82 s = max(thickness)
83
84 % Forces and stresses
85 N_phi = @(phi) N_phi_s(phi, s);
86 N_theta = @(phi) N_theta_s(phi, s);
87 sigma_phi = @(phi) (N_phi(phi) / s);
88 sigma_theta = @(phi) (N_theta(phi) / s);
89 sigmaE = @(phi) sigmaE_s(phi, s);
90
91 % Constraint check
92 N_phi_halfPi = N_phi(90)
93 V = gamma * R * cos(phi_0 * pi / 180) * s + P * sin(phi_0 * pi / 180)
94
95 % Plot
96 figure;
97 hold on
98 fplot(N_phi, [phi_0 alpha], '-b');
99 fplot(N_theta, [phi_0 alpha], '-r');
100 grid on;
101 xlabel('\phi []', 'FontWeight','bold');
102 ylabel('N_\phi, N_\theta [N/mm]','FontWeight','bold');
103 legend('N_\phi', 'N_\theta');
104 title(['Ex. 3 - N_\phi, N_\theta[MPa], s = ', num2str(s), 'mm'],
'FontWeight','bold');
105 hold off
106
107 figure;
108 hold on
109 fplot(sigma_phi, [phi_0 alpha], '-b');
110 fplot(sigma_theta, [phi_0 alpha], '-r');
111 fplot(sigmaE, [phi_0 alpha], '-g');
112 grid on;
113 xlabel('\phi', 'FontWeight','bold');
114 ylabel('\sigma_\phi, \sigma_\theta, \sigma_e [MPa]','FontWeight','bold');
115 legend('\sigma_\phi', '\sigma_\theta', '\sigma_e');
116 title(['Ex. 3 - \sigma_\phi, \sigma_\theta, \sigma_e, s = ', num2str(s), 'mm'],
'FontWeight','bold');
117 hold off
118
119 figure;
120 hold on
121 plot((alphaMin : dalpha : alphaMAX), thickness, '-b', (alphaMin : dalpha :
20/02/14 20.34 D:\MatLab_Files\CM\CM_Ex_3.m 3 of 6