interpolateDisplacement

Интерполируйте перемещение в произвольных пространственных местах

Описание

пример

intrpDisp = interpolateDisplacement(structuralresults,xq,yq) возвращает интерполированные значения смещения в точках 2-D, заданных в xq и yq. Для структурных моделей с переходной и частотными характеристиками, interpolateDisplacement возвращает интерполированные значения смещения для всех временных или частотных шагов, соответственно.

пример

intrpDisp = interpolateDisplacement(structuralresults,xq,yq,zq) использует 3-D точки, указанные в xq, yq, и zq.

пример

intrpDisp = interpolateDisplacement(structuralresults,querypoints) использует точки, указанные в querypoints.

Примеры

свернуть все

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

structuralmodel = createpde('structural','static-planestrain');

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

geometryFromEdges(structuralmodel,@squareg);
pdegplot(structuralmodel,'EdgeLabels','on')
axis equal

Figure contains an axes. The axes contains 5 objects of type line, text.

Задайте модуль Юнга и коэффициент Пуассона.

structuralProperties(structuralmodel,'PoissonsRatio',0.3, ...
                                     'YoungsModulus',210E3);

Задайте x-компонент принудительного перемещения для ребра 1.

structuralBC(structuralmodel,'XDisplacement',0.001,'Edge',1);

Задайте, что ребро 3 является фиксированным контуром.

structuralBC(structuralmodel,'Constraint','fixed','Edge',3);

Сгенерируйте mesh и решите проблему.

generateMesh(structuralmodel);
structuralresults = solve(structuralmodel);

Создайте сетку и интерполируйте x - и y-компоненты перемещения в сетку.

v = linspace(-1,1,21);
[X,Y] = meshgrid(v);
intrpDisp = interpolateDisplacement(structuralresults,X,Y);

Измените форму компонентов смещения на форму сетки. Постройте график перемещения.

ux = reshape(intrpDisp.ux,size(X));
uy = reshape(intrpDisp.uy,size(Y));
quiver(X,Y,ux,uy)

Figure contains an axes. The axes contains an object of type quiver.

Решить статическую структурную модель, представляющую биметаллический кабель под натяжением, и интерполировать перемещение на поперечном сечении кабеля.

Создайте статическую несущую модель для решения твердотельной (3-D) задачи.

structuralmodel = createpde('structural','static-solid');

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

gm = multicylinder([0.01,0.015],0.05);
structuralmodel.Geometry = gm;
pdegplot(structuralmodel,'FaceLabels','on','CellLabels','on','FaceAlpha',0.5)

Figure contains an axes. The axes contains 3 objects of type quiver, patch, line.

Задайте модуль Янга и коэффициент Пуассона для каждого металла.

structuralProperties(structuralmodel,'Cell',1,'YoungsModulus',110E9, ...
                                              'PoissonsRatio',0.28);
structuralProperties(structuralmodel,'Cell',2,'YoungsModulus',210E9, ...
                                              'PoissonsRatio',0.3);

Задайте, что грани 1 и 4 являются фиксированными контурами.

structuralBC(structuralmodel,'Face',[1,4],'Constraint','fixed');

Задайте поверхностную тягу для граней 2 и 5.

structuralBoundaryLoad(structuralmodel,'Face',[2,5],'SurfaceTraction',[0;0;100]);

Сгенерируйте mesh и решите проблему.

generateMesh(structuralmodel);
structuralresults = solve(structuralmodel)
structuralresults = 
  StaticStructuralResults with properties:

      Displacement: [1x1 FEStruct]
            Strain: [1x1 FEStruct]
            Stress: [1x1 FEStruct]
    VonMisesStress: [22281x1 double]
              Mesh: [1x1 FEMesh]

Задайте координаты поперечного сечения кабеля среднего сечения.

[X,Y] = meshgrid(linspace(-0.015,0.015,50));
Z = ones(size(X))*0.025;

Интерполируйте перемещение и постройте график результата.

intrpDisp = interpolateDisplacement(structuralresults,X,Y,Z);
surf(X,Y,reshape(intrpDisp.uz,size(X)))

Figure contains an axes. The axes contains an object of type surface.

Кроме того, сетку можно задать с помощью матрицы точек запроса.

querypoints = [X(:),Y(:),Z(:)]';
intrpDisp = interpolateDisplacement(structuralresults,querypoints);
surf(X,Y,reshape(intrpDisp.uz,size(X)))

Figure contains an axes. The axes contains an object of type surface.

Интерполируйте перемещение в геометрическом центре луча под гармоническим возбуждением.

Создайте переходную динамическую модель для 3-D задачи.

structuralmodel = createpde('structural','transient-solid');

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

gm = multicuboid(0.06,0.005,0.01);
structuralmodel.Geometry = gm;
pdegplot(structuralmodel,'FaceLabels','on','FaceAlpha',0.5)
view(50,20)

Figure contains an axes. The axes contains 3 objects of type quiver, patch, line.

Задайте модуль Юнга, отношение Пуассона и массовую плотность материала.

structuralProperties(structuralmodel,'YoungsModulus',210E9, ...
                                     'PoissonsRatio',0.3, ...
                                     'MassDensity',7800);

Закрепите один конец балки.

structuralBC(structuralmodel,'Face',5,'Constraint','fixed');

Применить синусоидальное перемещение вдоль y-направление на конец напротив фиксированного конца балки.

structuralBC(structuralmodel,'Face',3,'YDisplacement',1E-4,'Frequency',50);

Сгенерируйте mesh.

generateMesh(structuralmodel,'Hmax',0.01);

Задайте нулевое начальное перемещение и скорость.

structuralIC(structuralmodel,'Displacement',[0;0;0],'Velocity',[0;0;0]);

Решить модель.

tlist = 0:0.002:0.2;
structuralresults = solve(structuralmodel,tlist);

Интерполируйте перемещение в геометрическом центре балки.

coordsMidSpan = [0;0;0.005];
intrpDisp = interpolateDisplacement(structuralresults,coordsMidSpan);

Постройте график y-компонент смещения геометрического центра балки.

figure
plot(structuralresults.SolutionTimes,intrpDisp.uy)
title('y-Displacement of the Geometric Center of the Beam')

Figure contains an axes. The axes with title y-Displacement of the Geometric Center of the Beam contains an object of type line.

Входные параметры

свернуть все

Решение задачи структурного анализа, заданное как StaticStructuralResults, TransientStructuralResults, или FrequencyStructuralResults объект. Создание structuralresults при помощи solve функция. Для TransientStructuralResults и FrequencyStructuralResults объекты, interpolateDisplacement возвращает интерполированные значения смещения для всех временных и частотных шагов, соответственно.

Пример: structuralresults = solve(structuralmodel)

x -согласованные точки запроса, заданные как действительный массив .interpolateDisplacement вычисляет смещения в 2-D координатных точках [xq(i),yq(i)] или в 3-D координатных точках [xq(i),yq(i),zq(i)]. Поэтому xq, yq, и (при наличии) zq должно иметь одинаковое количество записей.

interpolateDisplacement преобразует точки запроса в векторы-столбцы xq(:), yq(:), и (при наличии) zq(:). Функция возвращает смещения как FEStruct объект со свойствами, содержащими вектора одного размера в качестве этих векторов-столбцов. Чтобы убедиться, что размерности возвращенного решения соответствуют размерностям исходных точек запроса, используйте reshape функция. Для примера используйте intrpDisp = reshape(intrpDisp.ux,size(xq)).

Типы данных: double

y -согласованные точки запроса, заданные как действительный массив .interpolateDisplacement вычисляет смещения в 2-D координатных точках [xq(i),yq(i)] или в 3-D координатных точках [xq(i),yq(i),zq(i)]. Поэтому xq, yq, и (при наличии) zq должно иметь одинаковое количество записей. Внутренне, interpolateDisplacement преобразует точки запроса в вектор-столбец yq(:).

Типы данных: double

z -согласованные точки запроса, заданные как действительный массив .interpolateDisplacement вычисляет смещения в 3-D координатных точках [xq(i),yq(i),zq(i)]. Поэтому xq, yq, и zq должно иметь одинаковое количество записей. Внутренне, interpolateDisplacement преобразует точки запроса в вектор-столбец zq(:).

Типы данных: double

Точки запроса, заданные как действительная матрица с двумя строками для 2-D геометрии или тремя строками для 3-D геометрии. interpolateDisplacement вычисляет смещения в координатных точках querypoints(:,i), поэтому каждый столбец querypoints содержит только одну 2-D или 3-D точку запроса.

Пример: Для 2-D геометрии querypoints = [0.5,0.5,0.75,0.75; 1,2,0,0.5]

Типы данных: double

Выходные аргументы

свернуть все

Перемещения в точках запроса, возвращенные как FEStruct объект со свойствами, представляющими пространственные компоненты перемещения в точках запроса. Для точек запроса, которые находятся вне геометрии, intrpDisp возвращает NaN. Свойства FEStruct объект доступен только для чтения.

Введенный в R2017b