exponenta event banner

interpolateDisplacement

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

Синтаксис

intrpDisp = interpolateDisplacement(structuralresults,xq,yq)
intrpDisp = interpolateDisplacement(structuralresults,xq,yq,zq)
intrpDisp = interpolateDisplacement(structuralresults,querypoints)

Описание

пример

intrpDisp = interpolateDisplacement(structuralresults,xq,yq) возвращает интерполированные значения смещения в 2D точках, заданных в 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

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

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. Создайте structuralresults при помощи функции solve. Для объекта TransientStructuralResults interpolateDisplacement возвращает интерполированные значения смещения в течение всех тактов.

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

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

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

z- точки запроса, заданные как действительный массив. interpolateDisplacement оценивает смещения в 3-D точках координаты [xq(i),yq(i),zq(i)]. Поэтому xq, yq и 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