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 FEStruct]
            Strain: [1x1 FEStruct]
            Stress: [1x1 FEStruct]
    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(:). Функция возвращает смещения как FEStruct объект со свойствами, содержащими вектора одного размера как эти вектор-столбцы. Чтобы гарантировать, что размерности возвращенного решения сопоставимы с размерностями точек исходного запроса, используйте 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

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

свернуть все

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

Введенный в R2017b