Создание минимальной ширины матрицы жесткости и вычисление её ширины

Страницы работы

Содержание работы

Балтийский государственный технический университет «Военмех» им. Д.Ф. Устинова

Домашнее задание №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

Похожие материалы

Информация о работе