Все ответы об инженерном анализе

Перед началом работы настоятельно рекомендуем ознакомиться с правилами форума.

Матрица податливости

sertet
Аватар пользователя sertet

Есть КЭ-модель. Синим показаны закрепления в узлах, фиолетовым master-узлы. 

С помощью метода подструктур можно выписать матрицу податливости выбранных узлов (показано фиолетовым), которая описывает податливость всей системы в выбранном направлении. В теории, если умножить эту матрицу с вектором сил, то получим вектор деформаций в выбранных master-узлах.
https://www.cyberforum.ru/cgi-bin/latex.cgi?\bar{u} = \bar{\bar{N}}*\bar{f}

Выписал матрицы податливости, координаты узлов и их эффективные площади для разных сеток (см. files.rar):

  1. линейные элементы 10х10
  2. линейные элементы 20х20
  3. квадратичные элементы 10х10
  4. квадратичные элементы 20х20

В Matlab перемножаю матрицы податливости с соответствующими векторами сил, не забывая учитывать весовые коэффициенты и эффективные площади узлов

clc; close all; clear
 
[Ulin10, philin10, Zlin10] = calc_disp('C_mat_lin10.txt','Node_info1_lin10.txt');
figure
contourf(philin10, Zlin10,Ulin10,40,'EdgeColor','none')
colorbar; colormap jet; ylabel('Y [m]'); xlabel('\phi [°]'); title('linear 10x10')
 
[Ulin20, philin20, Zlin20] = calc_disp('C_mat_lin20.txt','Node_info1_lin20.txt');
figure
contourf(philin20, Zlin20,Ulin20,40,'EdgeColor','none')
colorbar; colormap jet; ylabel('Y [m]'); xlabel('\phi [°]'); title('linear 20x20')
 
[Uq10, phiq10, Zq10] = calc_disp('C_mat_q10.txt','Node_info1_q10.txt','Node_info2_q10.txt');
figure
contourf(phiq10, Zq10,Uq10,40,'EdgeColor','none')
colorbar; colormap jet; ylabel('Y [m]'); xlabel('\phi [°]'); title('quad 10x10')
 
[Uq20, phiq20, Zq20] = calc_disp('C_mat_q20.txt','Node_info1_q20.txt','Node_info2_q20.txt');
figure
contourf(phiq20, Zq20,Uq20,40,'EdgeColor','none')
colorbar; colormap jet; ylabel('Y [m]'); xlabel('\phi [°]'); title('quad 10x10')
 
figure
hold on; grid on
plot(philin10(21,:),Ulin10(21,:),'-ob','LineWidth',1.5,'DisplayName','linear10x10')
plot(philin20(21,:),Ulin20(21,:),'--sr','LineWidth',1.5,'DisplayName','linear20x20')
plot(phiq10(21,:),Uq10(21,:),'-dg','LineWidth',1.5,'DisplayName','quad10x10')
plot(phiq20(21,:),Uq20(21,:),'--^k','LineWidth',1.5,'DisplayName','quad20x20')
legend; xlabel('\phi [°]'); ylabel('U');
 
figure
hold on; grid on
plot(Zlin10(:,21),Ulin10(:,21),'-ob','LineWidth',1.5,'DisplayName','linear10x10')
plot(Zlin20(:,21),Ulin20(:,21),'--sr','LineWidth',1.5,'DisplayName','linear20x20')
plot(Zq10(:,21),Uq10(:,21),'-dg','LineWidth',1.5,'DisplayName','quad10x10')
plot(Zq20(:,21),Uq20(:,21),'--^k','LineWidth',1.5,'DisplayName','quad20x20')
legend; xlabel('Y [m]'); ylabel('U');
 
function [U_int, phi_int, Z_int] = calc_disp(c_mat_filename,nodeinfo1_filename,nodeinfo2_filename)
if nargin == 3
    
    N = readmatrix(c_mat_filename,'DecimalSeparator','.');
    [NID, phi,z,A] = readvars(nodeinfo1_filename,'NumHeaderLines',1,...
        'ExpectedNumVariables',4,'DecimalSeparator','.');
    [NIDeck, ~,~,~,~] = readvars(nodeinfo2_filename,'NumHeaderLines',1,...
        'ExpectedNumVariables',5,'DecimalSeparator','.');
    
    F = ones(length(phi),1);
    for i = 1:length(NIDeck)
        F(NID==NIDeck(i)) = -1/12;
    end
    
    F(F==1) = 1/3;
    F = F.*1000.*A;
    
elseif nargin == 2
    N = readmatrix(c_mat_filename,'DecimalSeparator','.');
    [phi,z,A] = readvars(nodeinfo1_filename,'NumHeaderLines',1,...
        'ExpectedNumVariables',3,'DecimalSeparator','.');
    
    F = ones(length(phi),1)*1e3/4.*A;
end
 
u = N*F;
 
[phi_int, Z_int] = meshgrid(linspace(min(phi),max(phi),41),...
    linspace(min(z),max(z),41));
U_int = griddata(phi,z,u,phi_int,Z_int,'linear');
end

Результат:

В итоге для линейных элементов перемещения выглядят более-менее правдоподобно (учитывая что сетка очень грубая). Но для квадратичных элементов перемещения получаются "зубастыми". И тут вопрос, то ли проблема при экспорте матрицы из ANSYS, то ли в последующей обработке в матлаб?

Результат для полной модели из ANSYS:

ВложениеРазмер
Файл files.rar8.66 МБ
brsv
Аватар пользователя brsv

Добрый день. Проверьте еще раз, пожалуйста, точно ли Вы правильно графики построили? Судя по графику перепатуны линейные и квадратичные элементы (тогда все объяснимо). Для эксперимента сделайте сетку плотнее и сравните результаты, если дело размерности, то нужно мельче делать, если это не так, тогда надо посмотреть особенности экспорта. Не похоже, что есть ошибки на стороне матлаба, но тоже можно перепроверить. Отпишитесь потом и прикрепите проект или в личку скиньте (можно и с матлабовскими файлами) я постараюсь посмотреть

sertet
Аватар пользователя sertet

Перепроверил. Все как и писал ранее для квадратичных элементов решение хуже, чем для линейных. Причем для линейных элементов решение в матлабе для подструктуры почти совпадает с решением в ансис для полной модели. Для квадратичных решения сильно отличаются.

sertet
Аватар пользователя sertet

Кто-то может подтвердить это утверждение или помочь найти документацию?

Скриншот отсюда

brsv
Аватар пользователя brsv

Да, нужно использовать линейные элементы.

Добавить комментарий

Войдите или зарегистрируйтесь, чтобы отправлять комментарии
Приложить файл

Максимальный размер файла: 999 МБ.
Допустимые типы файлов: txt doc docx xls xlsx pdf rar zip 7zip tar.