Подчеркните концентрацию в пластине с круговым отверстием

Выполните 2D анализ эластичности плоского напряжения.

Тонкая прямоугольная пластина под одноосной силой имеет универсальное распределение напряжения. Представление кругового отверстия в пластине нарушает универсальное распределение напряжения около отверстия, приводящего к значительно более высокому, чем среднее напряжение. Такая тонкая пластина согласно загрузке в плоскости, может анализироваться как 2D проблема эластичности плоского напряжения. В теории, если пластина бесконечна, то напряжение около отверстия в три раза выше, чем среднее напряжение. Для прямоугольной пластины конечной ширины фактором концентрации напряжения является функция отношения диаметра отверстия к ширине пластины. Этот пример аппроксимирует фактор концентрации напряжения использование пластины конечной ширины.

Создайте структурную модель и включайте геометрию

Создайте структурную модель для статического плоского расчета напряжений.

model = createpde('structural','static-planestress');

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

radius = 20.0;
width = 50.0;
totalLength = 4*width;

Задайте матрицу описания геометрии (GDM) для прямоугольника и круга.

R1 = [3 4 -totalLength  totalLength ...
           totalLength -totalLength ...
          -width -width width width]'; 
C1 = [1 0 0 radius 0 0 0 0 0 0]';

Задайте объединенный GDM, матрицу пространства имен, и установите формулу создавать анализируемую геометрию с помощью decsg.

gdm = [R1 C1];
ns = char('R1','C1');
g = decsg(gdm,'R1 - C1',ns');

Создайте геометрию и включайте ее в структурную модель.

geometryFromEdges(model,g);

Постройте геометрию, отображающую метки ребра.

figure
pdegplot(model,'EdgeLabel','on');
axis([-1.2*totalLength 1.2*totalLength -1.2*width 1.2*width])
title 'Geometry with Edge Labels';

Figure contains an axes. The axes with title Geometry with Edge Labels contains 9 objects of type line, text.

Постройте геометрию, отображающую метки вершины.

figure
pdegplot(model,'VertexLabels','on');
axis([-1.2*totalLength 1.2*totalLength -1.2*width 1.2*width])
title 'Geometry with Vertex Labels';

Figure contains an axes. The axes with title Geometry with Vertex Labels contains 9 objects of type line, text.

Задайте параметры модели

Задайте модуль Молодежи и отношение Пуассона, чтобы смоделировать линейное эластичное существенное поведение. Не забудьте задавать физические свойства в сопоставимых модулях.

structuralProperties(model,'YoungsModulus',200E3,'PoissonsRatio',0.25);

Ограничьте все движения твердого тела пластины путем определения достаточных ограничений. Для статического анализа ограничения должны также сопротивляться движению, вызванному прикладной загрузкой.

Установите x- компонент смещения на левом крае (ребро 3), чтобы обнулить, чтобы сопротивляться прикладной загрузке. Установите y- компонент смещения в левом нижнем углу (вершина 3), чтобы обнулить к сдержанности движение твердого тела.

structuralBC(model,'Edge',3,'XDisplacement',0);
structuralBC(model,'Vertex',3,'YDisplacement',0);

Примените поверхностную тягу с ненулевым x- компонент на правом краю пластины.

structuralBoundaryLoad(model,'Edge',1,'SurfaceTraction',[100;0]);

Сгенерируйте Mesh и решите

Чтобы получить градацию в решении точно, используйте мелкую сетку. Сгенерируйте mesh, с помощью Hmax управлять размером mesh.

generateMesh(model,'Hmax',radius/6);

Постройте mesh.

figure
pdemesh(model)

Figure contains an axes. The axes contains 2 objects of type line.

Решите модель эластичности плоского напряжения.

R = solve(model);

Постройте контуры напряжения

Постройте x- компонент нормального распределения напряжения. Напряжение равно прикладной силе далеко от кругового контура. Максимальное значение напряжения происходит около кругового контура.

figure
pdeplot(model,'XYData',R.Stress.sxx,'ColorMap','jet')
axis equal
title 'Normal Stress Along x-Direction';

Figure contains an axes. The axes with title Normal Stress Along x-Direction contains an object of type patch.

Интерполируйте напряжение

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

thetaHole = linspace(0,2*pi,200);
xr = radius*cos(thetaHole);
yr = radius*sin(thetaHole);
CircleCoordinates = [xr;yr];

Затем интерполируйте значения напряжений в этих точках при помощи interpolateStress. Эта функция возвращает массив структур со своими полями, содержащими интерполированные значения напряжений.

stressHole = interpolateStress(R,CircleCoordinates);

Постройте нормальное напряжение направления по сравнению с угловым положением точек интерполяции.

figure
plot(thetaHole,stressHole.sxx)
xlabel('\theta')
ylabel('\sigma_{xx}')
title 'Normal Stress Around Circular Boundary';

Figure contains an axes. The axes with title Normal Stress Around Circular Boundary contains an object of type line.

Решите ту же задачу Используя симметричную модель

Пластина с моделью отверстия имеет две оси симметрии. Поэтому можно смоделировать четверть геометрии. Следующая модель решает квадрант полной модели с соответствующими граничными условиями.

Создайте структурную модель для статического плоского расчета напряжений.

symModel = createpde('structural','static-planestress');

Создайте геометрию, которая представляет один квадрант исходной модели. Вы не должны создавать дополнительные ребра, чтобы ограничить модель правильно.

R1 = [3 4 0 totalLength/2 totalLength/2 ...
      0 0 0 width width]';
C1 = [1 0 0 radius 0 0 0 0 0 0]'; 
gm = [R1 C1];
sf = 'R1-C1';
ns = char('R1','C1');
g = decsg(gm,sf,ns');
geometryFromEdges(symModel,g);

Постройте геометрию, отображающую метки ребра.

figure
pdegplot(symModel,'EdgeLabel','on');
axis equal
title 'Symmetric Quadrant with Edge Labels';

Figure contains an axes. The axes with title Symmetric Quadrant with Edge Labels contains 6 objects of type line, text.

Задайте структурные свойства материала.

structuralProperties(symModel,'YoungsModulus',200E3, ...
                              'PoissonsRatio',0.25);

Примените симметричные ограничения на ребра 3 и 4.

structuralBC(symModel,'Edge',[3 4],'Constraint','symmetric');

Примените поверхностную тягу на ребро 1.

structuralBoundaryLoad(symModel,'Edge',1,'SurfaceTraction',[100;0]);

Сгенерируйте mesh и решите симметричную модель плоского напряжения.

generateMesh(symModel,'Hmax',radius/6);
Rsym = solve(symModel);

Постройте x- компонент нормального распределения напряжения. Результаты идентичны первому квадранту полной модели.

figure
pdeplot(symModel,'XYData',Rsym.Stress.sxx,'ColorMap','jet');
axis equal
title 'Normal Stress Along x-Direction for Symmetric Model';

Figure contains an axes. The axes with title Normal Stress Along x-Direction for Symmetric Model contains an object of type patch.