Концентрация напряжения в диске с круглым отверстием

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

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

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

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

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. Сгенерируйте mesh, используя Hmax для управления размером сетки.

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.