interpolateDisplacement

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

Описание

пример

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

пример

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

пример

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

Примеры

свернуть все

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

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

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

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

Задайте модуль Молодежи и отношение Пуассона.

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)

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

Создайте статическую структурную модель для решения твердой (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)

Задайте модуль Молодежи и отношение Пуассона для каждого металла.

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 struct]
            Strain: [1x1 struct]
            Stress: [1x1 struct]
    VonMisesStress: [22281x1 double]
              Mesh: [1x1 FEMesh]

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

[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)))

В качестве альтернативы можно задать сетку при помощи матрицы точек запроса.

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

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

Создайте переходную динамическую модель для 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)

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

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')

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

свернуть все

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

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

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

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

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

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

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

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

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

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

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

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

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

свернуть все

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

Введенный в R2017b