Как я могу исключить внешние строки и столбцы глобальной матрицы, чтобы получить правильные граничные условия для просто поддерживаемой (скажем, pin-pin) панели? - PullRequest
0 голосов
/ 27 мая 2019

Я пытаюсь собрать локальные матрицы для просто поддерживаемого стержня (используя метод конечных элементов), чтобы создать глобальные матрицы массы и жесткости, а затем я хочу найти 4 наименьших собственных частот этих колебаний по сравнению с количеством элементов N. Так чтоЯ хочу найти w1, w2, w3, w4 как функцию N, количество элементов, которое является общей длиной стержня (1 метр), деленное на длину элемента (зависит от количества элементов N), а затем графиксо значением x в качестве N и осью y в качестве частоты (w).Это простая проблема конечных элементов, но я не могу правильно понять граничные условия и не уверен, правильно ли я собираю локальные матрицы в глобальные.

Я также пытался поместить график в цикл for, но это было просто сбросом точек.Основная проблема здесь - получить правильные граничные условия для просто поддерживаемого бара (смещение при x = 0 и x = L равно нулю (я думаю, это внешние строки и столбцы), а затем правильно собрать глобальные матрицы.

for N = 1:10^4;

%  Now compute 4 lowest eigenfrequencies
E = 60*10^9; % Young's Modulus
m = 4.259; % Mass per unit length
L= 1; % length of bar = 1 m
A = pi*R^2; % Area of the bar

%Re-writing matrices from above in answer
l = L./N;
Ke = E*A.*[1, -1;-1, 1]./L; % Stiffness matrix
Me = m.*l.*[2, 1; 1, 2]./6;
% Localization Operator: the boolean matrix for picking the nodal
% displacements qe of an element out of the global set of degrees of
% freedom q. 
Le= [0 : N-1; 1 : N];

% Need to input global matrices (assembled ones from page 367 of      textbook)
K = zeros(N);
M = zeros(N);
% N is not given (must be summed from e=1 to whatever N)
for e = 1:N
    Struct_load_vector =  Le(:,e);
    Iden_matrix = (Struct_load_vector ~= 0);
    Struct_load_vector = Struct_load_vector(Iden_matrix);
    K(Struct_load_vector, Struct_load_vector) =     K(Struct_load_vector, Struct_load_vector) + Ke(Iden_matrix,     Iden_matrix);
    M(Struct_load_vector, Struct_load_vector) =     M(Struct_load_vector, Struct_load_vector) + Me(Iden_matrix, Iden_matrix);
end
squared_freq=eig(K,M);
frequency = sqrt(squared_freq(1))
end
...