forked from jhlenes/TMR4167-Prosjekt
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathrammeanalyse.m
118 lines (79 loc) · 3.88 KB
/
rammeanalyse.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
clc % rydder kommandovinduet
clear all % Sletter alle variabler
% ----- Leser input-data -----
[matData, ror, iprof, punkt, elem, last] = lesinput('input_oppgave.txt');
% ----- Beregner treghetsmomenter og avstander til nøytralakser -----
% Regner ut treghetsmomenter for rørtverrsnitt
rorData = treghetsmomentRor(ror);
% Regner ut treghetsmomenter for I-profiler
iprofData = treghetsmomentIprof(iprof);
% Samle data fra rørtverrsnitt og I-profil i 'geometri'. Hver rad
% representerer et tverrsnitt på formen [GeometriID, Treghetsmoment, y_maks]
geometri = [rorData; iprofData];
% ----- Beregner lengder til elementene -----
% ElementID tilsvarer indeks i 'elementlengder'.
elementlengder = lengder(punkt, elem);
% ----- Beregner stivheter (E*I/L) til alle elementer -----
% ElementID tilsvarer indeks i 'stivheter'.
stivheter = elementstivhet(matData, geometri, elem, elementlengder);
% ------ Beregner fastinnspenningsmomentene til alle elementer ------
% ElementID tilsvarer rad i 'fim'.
% fim - matrise der hver rad er på formen [fastinnspeningsmoment_ende_1, fastinnspeningsmoment_ende_2]
fim = fastinnspenningsmoment(elem, last, elementlengder);
% ------ Setter opp lastvektor -------
% PunktID tilsvarer indeks i 'R'.
R = lastvektor(fim, punkt, elem);
% ------ Setter opp systemstivhetsmatrisen -------
K = stivhetsmatrise(stivheter, elem, punkt);
% ------ Innfører randbetingelser på systemstivhetsmatrisen-------
[Kn, Rn] = randbetingelser(punkt, K, R);
% ----- Løser ligningssytemet -------
rot = Kn\Rn;
% ----- Finner endemoment for hvert element -------
endemoment = endemomenter(stivheter, rot, fim, elem);
% ----- Finner moment under punktlaster, eller på midten av bjelker med fordelte laster -----
midtmoment = midtmoment(last, endemoment, elementlengder, elem);
% ----- Finner bøyespenninger i begge ender og under punktlast/på midten av hver bjelke -----
boyespenning = boyespenning(endemoment, midtmoment, elem, geometri);
skjaerkraft = skjaerkraft(elem, endemoment, elementlengder, last);
%----- Skriver ut resultat til 'resultat.txt' -----
% Åpner filen
fid = fopen('resultat.txt', 'w');
% Skriver ut hva rotasjonen ble i de forskjellige nodene
fprintf(fid, 'Rotasjonene i de ulike punktene i grader:\n\n');
for i = 1:length(rot)
fprintf(fid, 'Punkt %2i: %10.4f\n', i, rot(i)*180/pi);
end
fprintf(fid, '\n\n');
% Skriver ut hva skjærkreftene ble for de forskjellige elementene
fprintf(fid, 'Skjærkraft for hvert element [kN] (positiv retning med urviser):\n\n');
fprintf(fid, '%12s%10s %10s\n', ' ', 'Ende 1', 'Ende 2');
[nElem, ~] = size(elem);
for elemID = 1:nElem
fprintf(fid, 'Element %2i: %10.1f %10.1f\n', elemID, ...
skjaerkraft(elemID, 1)*1e-03, skjaerkraft(elemID, 2)*1e-03);
end
fprintf(fid, '\n\n');
% Skriver ut hva momentene ble for de forskjellige elementene
fprintf(fid, 'Momenter for hvert element [kNm]:\n\n');
fprintf(fid, '%12s%10s %10s %10s\n', ' ', 'Ende 1', 'Midten', 'Ende 2');
[nElem, ~] = size(elem);
for elemID = 1:nElem
fprintf(fid, 'Element %2i: %10.1f %10.1f %10.1f\n', elemID, ...
endemoment(elemID, 1)*1e-03, midtmoment(elemID)*1e-03, endemoment(elemID, 2)*1e-03);
end
fprintf(fid, '\n\n');
% Skriver ut bøyespenninger
fprintf(fid, 'Bøyespenninger for hvert element [MPa]:\n\n');
fprintf(fid, '%12s%10s %10s %10s %10s\n', ' ', 'Ende 1', 'Midten', 'Ende 2', '% av fy');
for elemID = 1:nElem
matID = elem(elemID, 3); % material
fy = matData(matID, 3); % flytespenning
maksProsent = max(abs(boyespenning(elemID, :))) / fy * 100; % prosent av flytespenning
fprintf(fid, 'Element %2i: %10.1f %10.1f %10.1f %10.1f\n', elemID, ...
boyespenning(elemID, 1)*1e-06, boyespenning(elemID,2)*1e-06, boyespenning(elemID, 3)*1e-06, maksProsent);
end
% Lukk filen
fclose(fid);
% Skriv til command window
fprintf('Resultatet er lagret i ''resultat.txt''\n\n');