Балтийский государственный технический университет «Военмех» им. Д.Ф. Устинова
Домашнее задание №1
Вариант № 13б
Выполнил: студент группы М-171
Колосов Дмитрий
Проверил:
Орлов А.И.
Санкт-Петербург
2011
Задание:
Разбить расчётную область, в центре которой вырезано треугольное отверстие, на линейные треугольные элементы. Пронумеровать узлы с учётом создания минимальной ширины матрицы жесткости и вычислить её ширину. Число степеней свободы в каждом узле z=3.
Координаты точек: 1. (0;0); 2. (200;0); 3. (200;200); 4. (0;200); 5. (120;80); 6. (120;120); 7. (80;120).
Решение данной задачи производилось в пакете MatLab.
Листинг программы:
clear all
outfile = fopen('XY.txt', 'wt');
% Заданиекоординат
fprintf(outfile, 'Координаты узлов \n');
fprintf(outfile, ' \n');
x = 0; y = 0; n = 1; d = 1; m = 11;
while n <= 121
if n <= m
X(n) = x;
Y(n) = y;
x = x + 20;
n = n + 1;
fprintf(outfile, ' %10u %10u %10u \n', d, X(d), Y(d));
d = d + 1;
elseif n > m
m = n + 10;
x = 0;
y = y + 20;
end
uzel = [X;Y];
end
uzel = uzel';
fprintf(outfile, ' \n');
% Соотношение между глобальными и локальными номерами узлов
fprintf(outfile, 'Соотношение между глобальными и локальными номерами узлов \n');
fprintf(outfile, ' \n');
IJK = [];
l = 196; % Число элементов
h = 1; max1 = 3; max2 = 2; elem = 2; st = 20; str = 0; st1 = 0;
i(h) = 1; j(h) = 2; k(h) = 12; ok = 91; z = 1; w = 99; ok1 = 108;
IJK = [IJK;i,j,k];
fprintf(outfile, ' %10u %10u %10u %10u \n', z, i(1), j(1), k(1));
while elem <= l
h = h + 1;
if elem < max2 % нижние элементы
i(h) = i(h - 2 + str1) + 1 + str;
j(h) = j(h - 2 + str1) + 1 + str;
k(h) = k(h - 2 + str1) + 1 + str;
max1 = max1 + 2;
elseif elem < max1 % верхние элементы
i(h) = k(h - 1) + str;
j(h) = j(h - 1) + str;
k(h) = k(h - 1) + 1 + str;
max2 = max2 + 2;
end
elem = elem + 1;
str = 0; str1 = 0;
if elem > w && elem < (w + 2)
str = 1;
st = st + 19;
end
if elem > (w + 17) && elem < (w + 19)
str = 1;
st = st + 17;
st1 = 0;
end
if elem > st
str = 1;
st = st + 20 + st1;
st1 = 0;
end
if elem > ok
str1 = 1;
max2 = max1;
max1 = max1 - 1;
ok = 1000;
end
if elem > ok1
str = 1;
ok1 = ok;
max2 = max1;
str1 = 1;
end
IJK = [i;j;k];
z = z + 1;
fprintf(outfile, ' %10u %10u %10u %10u \n', z, i(h), j(h), k(h));
end
IJK = IJK';
fprintf(outfile, ' \n');
% Координатыузловкаждогоэлемента
outfile1 = fopen('qw.txt','wt');
n = 1:1:l;
I = [uzel(IJK(n,1),1), uzel(IJK(n,1),2)];
J = [uzel(IJK(n,2),1), uzel(IJK(n,2),2)];
K = [uzel(IJK(n,3),1), uzel(IJK(n,3),2)];
ijk = [n',I,J,K];
ijk = ijk';
fprintf(outfile1, 'Координаты каждого узла каждого элемента \n');
fprintf(outfile1, ' \n');
fprintf(outfile1, ' %10u %10u %10u %10u %10u %10u %10u \n', ijk);
fprintf(outfile1, ' \n');
% Рисование графика пластинки, разбитой на конечные элементы
v = 0;
for n = 1:1:l
XX = [I(n,1); J(n,1); K(n,1); I(n,1)];
YY = [I(n,2); J(n,2); K(n,2); I(n,2)];
hold on;
axis([0 200 0 200]);
line(XX,YY); % Вывод графика на экран
v = v + 1;
text((I(n,1)+J(n,1)+K(n,1))/3, (I(n,2)+J(n,2)+K(n,2))/3, num2str(v));
text(I(n,1),I(n,2),num2str((IJK(n,1))));
text(J(n,1),J(n,2),num2str((IJK(n,2))));
text(K(n,1),K(n,2),num2str((IJK(n,3))));
end
print -dbitmap graf % Печать графика в файл graf.bmp
% Ширина ленты матрицы жесткости вычисляется следующим образом:
fprintf(outfile1, ' Ширина ленты матрицы жёсткости \n');
fprintf(outfile1, ' \n');
Q = 3; % Количество степеней свободы в каждом узле
R = 11; % Максимальная разница между max и min значениями узлов в элементе
B = (R + 1)*Q; % Ширина ленты матрицы жестксоти
fprintf(outfile1, ' %1u \n', B);
fprintf(outfile1, ' \n');
% Размер матрицы жесткости:
fprintf(outfile1, ' Размер матрицы жёсткости \n');
fprintf(outfile1, ' \n');
u = size(uzel,1); % Количество узлов
KK = u*Q; % Размерность матрицы жёсткости
fprintf(outfile1, ' %1u \n', KK);
fclose (outfile);
fclose (outfile1);
Результаты:
Координаты узлов
1 0 0
2 20 0
3 40 0
4 60 0
5 80 0
6 100 0
7 120 0
8 140 0
9 160 0
10 180 0
11 200 0
12 0 20
13 20 20
14 40 20
15 60 20
16 80 20
17 100 20
18 120 20
19 140 20
20 160 20
21 180 20
22 200 20
23 0 40
24 20 40
25 40 40
26 60 40
27 80 40
28 100 40
29 120 40
30 140 40
31 160 40
32 180 40
33 200 40
34 0 60
35 20 60
36 40 60
37 60 60
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.