solve

Решите теплопередачу, структурный анализ или электромагнитную аналитическую проблему

Описание

пример

structuralStaticResults = solve(structuralStatic) возвращает решение статической модели структурного анализа, представленной в structuralStatic.

пример

structuralModalResults = solve(structuralModal,'FrequencyRange',[omega1,omega2]) возвращает решение модальной аналитической модели для всех режимов в частотном диапазоне [omega1,omega2]. Задайте omega1 как немного меньший, чем самая низкая ожидаемая частота и omega2 как немного больше, чем самая высокая ожидаемая частота. Например, если самая низкая ожидаемая частота является нулем, то используйте маленькую отрицательную величину для omega1.

пример

structuralTransientResults = solve(structuralTransient,tlist) возвращает решение переходной структурной модели динамики, представленной в structuralTransient.

пример

structuralFrequencyResponseResults = solve(structuralFrequencyResponse,flist) возвращает решение модели частотной характеристики, представленной в structuralFrequencyResponse.

пример

structuralTransientResults = solve(structuralTransient,tlist,'ModalResults',modalresults) и structuralFrequencyResponseResults = solve(structuralFrequencyResponse,flist,'ModalResults',modalresults) решите переходный процесс и частотную характеристику структурная модель, соответственно, при помощи модального метода суперпозиции, чтобы ускорить расчеты. Во-первых, выполните модальный анализ, чтобы вычислить собственные частоты и формы режима в конкретном частотном диапазоне. Затем используйте этот синтаксис, чтобы вызвать модальный метод суперпозиции. Точность результатов зависит от режимов в модальных результатах анализа.

пример

thermalSteadyStateResults = solve(thermalSteadyState) возвращает решение установившейся тепловой модели, представленной в thermalSteadyState.

пример

thermalTransientResults = solve(thermalTransient,tlist) возвращает решение переходной тепловой модели, представленной в thermalTransient во времена tlist.

пример

emagResults = solve(emagmodel) возвращает решение электромагнитной модели, представленной в emagmodel.

Примеры

свернуть все

Решите 3-D установившуюся тепловую задачу.

Создайте тепловую модель для этой проблемы.

thermalmodel = createpde('thermal');

Импортируйте и постройте геометрию блока.

importGeometry(thermalmodel,'Block.stl'); 
pdegplot(thermalmodel,'FaceLabel','on','FaceAlpha',0.5)
axis equal

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

Присвойте свойства материала.

thermalProperties(thermalmodel,'ThermalConductivity',80);

Применяйтесь постоянная температура 100 °C к левой стороне блока (столкнитесь 1), и постоянная температура 300 °C к правой стороне блока (столкнитесь 3). Все другие поверхности изолируются по умолчанию.

thermalBC(thermalmodel,'Face',1,'Temperature',100);
thermalBC(thermalmodel,'Face',3,'Temperature',300);

Поймайте в сети геометрию и решите задачу.

generateMesh(thermalmodel);
thermalresults = solve(thermalmodel)
thermalresults = 
  SteadyStateThermalResults with properties:

    Temperature: [12691x1 double]
     XGradients: [12691x1 double]
     YGradients: [12691x1 double]
     ZGradients: [12691x1 double]
           Mesh: [1x1 FEMesh]

Решатель находит температуры и градиенты температуры в узловых местоположениях. Чтобы получить доступ к этим значениям, используйте thermalresults.Temperature, thermalresults.XGradients, и так далее. Например, постройте температуры в узловых местоположениях.

pdeplot3D(thermalmodel,'ColorMapData',thermalresults.Temperature)

Решите 2D переходную тепловую задачу.

Создайте переходную тепловую модель для этой проблемы.

thermalmodel = createpde('thermal','transient');

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

SQ1 = [3; 4; 0; 3; 3; 0; 0; 0; 3; 3];
D1 = [2; 4; 0.5; 1.5; 2.5; 1.5; 1.5; 0.5; 1.5; 2.5];
gd = [SQ1 D1];
sf = 'SQ1+D1';
ns = char('SQ1','D1');
ns = ns';
dl = decsg(gd,sf,ns);
geometryFromEdges(thermalmodel,dl);
pdegplot(thermalmodel,'EdgeLabels','on','FaceLabels','on')
xlim([-1.5 4.5])
ylim([-0.5 3.5])
axis equal

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

Для квадратной области присвойте эти тепловые свойства:

  • Теплопроводность 10W/(mC)

  • Массовая плотность 2kg/m3

  • Удельная теплоемкость 0.1J/(kgC)

thermalProperties(thermalmodel,'ThermalConductivity',10, ...
                               'MassDensity',2, ...
                               'SpecificHeat',0.1, ...
                               'Face',1);

Для ромбовидной области присвойте эти тепловые свойства:

  • Теплопроводность 2W/(mC)

  • Массовая плотность 1kg/m3

  • Удельная теплоемкость 0.1J/(kgC)

thermalProperties(thermalmodel,'ThermalConductivity',2, ...
                               'MassDensity',1, ...
                               'SpecificHeat',0.1, ...
                               'Face',2);

Примите, что ромбовидная область является источником тепла с плотностью 4W/m2.

internalHeatSource(thermalmodel,4,'Face',2);

Примените постоянную температуру 0C сторонам квадратной пластины.

thermalBC(thermalmodel,'Temperature',0,'Edge',[1 2 7 8]);

Установите начальную температуру на 0 °C.

thermalIC(thermalmodel,0);

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

generateMesh(thermalmodel);

Движущие силы для этой проблемы очень быстры. Температура достигает устойчивого состояния приблизительно за 0,1 секунды. Чтобы получить интересную часть динамики, установите время решения на logspace(-2,-1,10). Эта команда возвращается 10 логарифмически расположенных с интервалами раз решения между 0,01 и 0.1.

tlist = logspace(-2,-1,10);

Решите уравнение.

thermalresults = solve(thermalmodel,tlist);

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

T = thermalresults.Temperature;
pdeplot(thermalmodel,'XYData',T(:,10),'Contour','on','ColorMap','hot')

Figure contains an axes object. The axes object contains 12 objects of type patch, line.

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

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

Решатель находит значения смещения, напряжения, деформации и напряжения фон Мизеса в узловых местоположениях. Чтобы получить доступ к этим значениям, используйте structuralresults.Displacement, structuralresults.Stress, и так далее. Смещение, напряжение и значения деформации в узловых местоположениях возвращены как FEStruct объекты со свойствами, представляющими их компоненты. Обратите внимание на то, что свойства FEStruct объект только для чтения.

structuralresults.Displacement
ans = 
  FEStruct with properties:

           ux: [22281x1 double]
           uy: [22281x1 double]
           uz: [22281x1 double]
    Magnitude: [22281x1 double]

structuralresults.Stress
ans = 
  FEStruct with properties:

    sxx: [22281x1 double]
    syy: [22281x1 double]
    szz: [22281x1 double]
    syz: [22281x1 double]
    sxz: [22281x1 double]
    sxy: [22281x1 double]

structuralresults.Strain
ans = 
  FEStruct with properties:

    exx: [22281x1 double]
    eyy: [22281x1 double]
    ezz: [22281x1 double]
    eyz: [22281x1 double]
    exz: [22281x1 double]
    exy: [22281x1 double]

Постройте деформированную форму с z-компонентом нормального напряжения.

pdeplot3D(structuralmodel, ...
          'ColorMapData',structuralresults.Stress.szz, ...
          'Deformation',structuralresults.Displacement)

Решите для переходного процесса в тонкой 3-D пластине при гармонической загрузке в центре.

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

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

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

gm = multicuboid([5,0.05],[5,0.05],0.01);
structuralmodel.Geometry = gm;
pdegplot(structuralmodel,'FaceLabels','on','FaceAlpha',0.5)

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

Увеличьте масштаб, чтобы видеть метки поверхности на маленькой пластине в центре.

figure
pdegplot(structuralmodel,'FaceLabels','on','FaceAlpha',0.25)
axis([-0.2 0.2 -0.2 0.2 -0.1 0.1])

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

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

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

Укажите, что все поверхности на периферии тонкой 3-D пластины являются зафиксированными контурами.

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

Примените синусоидальную нагрузку давления на маленькую поверхность в центре пластины.

structuralBoundaryLoad(structuralmodel,'Face',12, ...
                                       'Pressure',5E7, ...
                                       'Frequency',25);

Сгенерируйте mesh с линейными элементами.

generateMesh(structuralmodel,'GeometricOrder','linear','Hmax',0.2);

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

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

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

tlist = linspace(0,1,300);
structuralresults = solve(structuralmodel,tlist);

Решатель находит значения смещения, скорости и ускорения в узловых местоположениях. Чтобы получить доступ к этим значениям, используйте structuralresults.Displacement, structuralresults.Velocity, и так далее. Смещение, скорость и ускоряющие значения возвращены как FEStruct объекты со свойствами, представляющими их компоненты. Обратите внимание на то, что свойства FEStruct объект только для чтения.

structuralresults.Displacement
ans = 
  FEStruct with properties:

           ux: [1873x300 double]
           uy: [1873x300 double]
           uz: [1873x300 double]
    Magnitude: [1873x300 double]

structuralresults.Velocity
ans = 
  FEStruct with properties:

           vx: [1873x300 double]
           vy: [1873x300 double]
           vz: [1873x300 double]
    Magnitude: [1873x300 double]

structuralresults.Acceleration
ans = 
  FEStruct with properties:

           ax: [1873x300 double]
           ay: [1873x300 double]
           az: [1873x300 double]
    Magnitude: [1873x300 double]

Найдите основной (самый низкий) режим 2D консольного луча, приняв распространенность условия плоского напряжения.

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

length = 5;
height = 0.1;
E = 3E7;
nu = 0.3;
rho = 0.3/386;

Создайте модель плоского напряжения модели, присвойте геометрию и сгенерируйте mesh.

structuralmodel = createpde('structural','modal-planestress');
gdm = [3;4;0;length;length;0;0;0;height;height];
g = decsg(gdm,'S1',('S1')');
geometryFromEdges(structuralmodel,g);

Задайте максимальный размер элемента (пять элементов через толщину луча).

hmax = height/5;
msh=generateMesh(structuralmodel,'Hmax',hmax);

Задайте структурные свойства и граничные ограничения.

structuralProperties(structuralmodel,'YoungsModulus',E, ...
                                     'MassDensity',rho, ... 
                                     'PoissonsRatio',nu);
structuralBC(structuralmodel,'Edge',4,'Constraint','fixed');

Вычислите аналитическую основную частоту (Гц) с помощью теории луча.

I = height^3/12;
analyticalOmega1 = 3.516*sqrt(E*I/(length^4*(rho*height)))/(2*pi)
analyticalOmega1 = 126.9498

Задайте частотный диапазон, который включает аналитически вычисленную частоту, и решите модель.

modalresults = solve(structuralmodel,'FrequencyRange',[0,1e6])
modalresults = 
  ModalStructuralResults with properties:

    NaturalFrequencies: [32x1 double]
            ModeShapes: [1x1 FEStruct]
                  Mesh: [1x1 FEMesh]

Решатель находит собственные частоты и модальные значения смещения в узловых местоположениях. Чтобы получить доступ к этим значениям, используйте modalresults.NaturalFrequencies и modalresults.ModeShapes.

modalresults.NaturalFrequencies/(2*pi)
ans = 32×1
105 ×

    0.0013
    0.0079
    0.0222
    0.0433
    0.0711
    0.0983
    0.1055
    0.1462
    0.1930
    0.2455
      ⋮

modalresults.ModeShapes
ans = 
  FEStruct with properties:

           ux: [6511x32 double]
           uy: [6511x32 double]
    Magnitude: [6511x32 double]

Постройте y-компонент решения для основной частоты.

pdeplot(structuralmodel,'XYData',modalresults.ModeShapes.uy(:,1))
title(['First Mode with Frequency ', ...
        num2str(modalresults.NaturalFrequencies(1)/(2*pi)),' Hz'])
axis equal

Figure contains an axes object. The axes object with title First Mode with Frequency 126.9416 Hz contains an object of type patch.

Выполните анализ частотной характеристики камертона.

Во-первых, создайте структурную модель для модального анализа твердого камертона.

model = createpde('structural','frequency-solid');

Импортируйте геометрию камертона.

importGeometry(model,'TuningFork.stl');

Задайте модуль Молодежи, отношение Пуассона и массовую плотность, чтобы смоделировать линейное эластичное существенное поведение. Задайте все физические свойства в сопоставимых модулях.

structuralProperties(model,'YoungsModulus',210E9, ...
                           'PoissonsRatio',0.3, ...
                           'MassDensity',8000);

Идентифицируйте поверхности для применения граничных ограничений и загрузок путем графического вывода геометрии с метками поверхности.

figure('units','normalized','outerposition',[0 0 1 1])
pdegplot(model,'FaceLabels','on')
view(-50,15)
title 'Geometry with Face Labels'

Figure contains an axes object. The axes object with title Geometry with Face Labels contains 3 objects of type quiver, patch, line.

Наложите достаточные граничные ограничения, чтобы предотвратить движение твердого тела при прикладной загрузке. Как правило, вы содержите камертон вручную или монтируете его на таблице. Чтобы создать простое приближение этого граничного условия, зафиксируйте область около пересечения зубцов, и указатель (стоит 21 и 22).

structuralBC(model,'Face',[21,22],'Constraint','fixed');

Задайте загрузку давления на зубец (столкнитесь 11) как короткий прямоугольный импульс давления. В частотном диапазоне этот импульс давления является модульной загрузкой, равномерно распределенной через все частоты.

structuralBoundaryLoad(model,'Face',11,'Pressure',1);
flist = linspace(0,4000,150);
mesh = generateMesh(model,'Hmax',0.005); 
R = solve(model,2*pi*flist);

Постройте частоту вибрации совета зубца, который является поверхностью 12. Найдите, что узлы на совете стоят и строят y-компонент смещения по частоте, с помощью одного из этих узлов.

excitedTineTipNodes = findNodes(mesh,'region','Face',12);
tipDisp = R.Displacement.uy(excitedTineTipNodes(1),:);

figure 
plot(flist,abs(tipDisp)) 
xlabel('Frequency');
ylabel('|Y-Displacement|');

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

Найдите отклонение 3-D консольного луча под неоднородной тепловой нагрузкой. Задайте тепловую нагрузку на структурной модели с помощью решения от переходного теплового анализа той же геометрии и mesh.

Переходный тепловой анализ модели

Создайте переходную тепловую модель.

thermalmodel = createpde('thermal','transient');

Создайте и постройте геометрию.

gm = multicuboid(0.5,0.1,0.05);
thermalmodel.Geometry = gm;
pdegplot(thermalmodel,'FaceLabels','on','FaceAlpha',0.5)

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

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

mesh = generateMesh(thermalmodel);

Задайте тепловые свойства материала.

thermalProperties(thermalmodel,'ThermalConductivity',5e-3, ...
                               'MassDensity',2.7*10^(-6), ...
                               'SpecificHeat',10);

Укажите, что постоянные температуры применились к левым и правым концам на луче.

thermalBC(thermalmodel,'Face',3,'Temperature',100);
thermalBC(thermalmodel,'Face',5,'Temperature',0);

Задайте источник тепла по целой геометрии.

internalHeatSource(thermalmodel,10);

Установите начальную температуру.

thermalIC(thermalmodel,0);

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

tlist = [0:1e-4:2e-4];
thermalresults = solve(thermalmodel,tlist)
thermalresults = 
  TransientThermalResults with properties:

      Temperature: [3870x3 double]
    SolutionTimes: [0 1.0000e-04 2.0000e-04]
       XGradients: [3870x3 double]
       YGradients: [3870x3 double]
       ZGradients: [3870x3 double]
             Mesh: [1x1 FEMesh]

Постройте температурное распределение для каждого временного шага.

for n = 1:numel(thermalresults.SolutionTimes)
    figure
    pdeplot3D(thermalmodel, ...
                'ColorMapData', ...
                thermalresults.Temperature(:,n))
    title(['Temperature at Time = ' ...
                num2str(tlist(n))])
    caxis([0 100])
end

Структурный анализ с тепловой нагрузкой

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

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

Включайте ту же геометрию что касается тепловой модели.

structuralmodel.Geometry = gm;

Используйте ту же mesh, что вы раньше получали тепловое решение.

structuralmodel.Mesh = mesh;

Задайте модуль Молодежи, отношение Пуассона и коэффициент теплового расширения.

structuralProperties(structuralmodel,'YoungsModulus',1e10, ...
                                     'PoissonsRatio',0.3, ...'
                                     'CTE',11.7e-6);

Примените закрепленное граничное условие на поверхность 5.

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

Примените загрузку тела с помощью переходного теплового решения модели. По умолчанию, structuralBodyLoad использует решение, в последний раз продвигаются.

structuralBodyLoad(structuralmodel,'Temperature',thermalresults);

Задайте ссылочную температуру.

structuralmodel.ReferenceTemperature = 10;

Решите структурную модель.

thermalstressresults = solve(structuralmodel);

Постройте деформированную форму луча, соответствующего последнему шагу переходного теплового решения модели.

pdeplot3D(structuralmodel, ...
            'ColorMapData', ...
             thermalstressresults.Displacement.Magnitude, ...
            'Deformation', ...
             thermalstressresults.Displacement)
title(['Thermal Expansion at Solution Time = ' ...
                         num2str(tlist(end))])
caxis([0 3e-3])

Теперь задайте загрузки тела, когда тепловые решения модели навсегда продвигаются. Для каждой загрузки тела решите структурную модель и постройте соответствующую деформированную форму луча.

for n = 1:numel(thermalresults.SolutionTimes)
    structuralBodyLoad(structuralmodel, ...
                         'Temperature', ...
                          thermalresults, ...
                         'TimeStep',n);
    thermalstressresults = solve(structuralmodel);
    figure
    pdeplot3D(structuralmodel, ...
               'ColorMapData', ...
                thermalstressresults.Displacement.Magnitude, ...
               'Deformation', ...
                thermalstressresults.Displacement)
    title(['Thermal Results at Solution Time = ' ...
                             num2str(tlist(n))])
    caxis([0 3e-3])
end

Решите для переходного процесса в центре 3-D луча при гармонической нагрузке на один из ее углов.

Модальный анализ

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

modelM = createpde('structural','modal-solid');

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

gm = multicuboid(0.05,0.003,0.003);
modelM.Geometry = gm;
pdegplot(modelM,'EdgeLabels','on','VertexLabels','on');
view([95 5])

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

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

msh = generateMesh(modelM);

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

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

Задайте минимальные ограничения на один конец луча, чтобы предотвратить режимы твердого тела. Например, укажите, что ребро 4 и вершина 7 является зафиксированными контурами.

structuralBC(modelM,'Edge',4,'Constraint','fixed');
structuralBC(modelM,'Vertex',7,'Constraint','fixed');

Решите задачу для частотного диапазона от 0 до 500 000. Рекомендуемый подход должен использовать значение, которое немного меньше, чем ожидаемая самая низкая частота. Таким образом используйте -0.1 вместо 0.

Rm = solve(modelM,'FrequencyRange',[-0.1,500000]);

Анализ переходных процессов

Создайте модель анализа переходных процессов для 3-D проблемы.

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

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

modelD.Geometry = gm;
modelD.Mesh = msh;

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

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

Задайте те же минимальные ограничения на один конец луча, чтобы предотвратить режимы твердого тела.

structuralBC(modelD,'Edge',4,'Constraint','fixed');
structuralBC(modelD,'Vertex',7,'Constraint','fixed');

Прикладывайте синусоидальную силу на углу напротив ограниченного ребра и вершины.

structuralBoundaryLoad(modelD,'Vertex',5, ...
                              'Force',[0,0,10], ...
                              'Frequency',7600);

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

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

Задайте относительные и абсолютные погрешности для решателя.

modelD.SolverOptions.RelativeTolerance = 1E-5;
modelD.SolverOptions.AbsoluteTolerance = 1E-9;

Решите модель с помощью модальных результатов.

tlist = linspace(0,0.004,120);
Rdm = solve(modelD,tlist,'ModalResults',Rm)
Rdm = 
  TransientStructuralResults with properties:

     Displacement: [1x1 FEStruct]
         Velocity: [1x1 FEStruct]
     Acceleration: [1x1 FEStruct]
    SolutionTimes: [0 3.3613e-05 6.7227e-05 1.0084e-04 1.3445e-04 ... ]
             Mesh: [1x1 FEMesh]

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

intrpUdm = interpolateDisplacement(Rdm,0,0,0.0015);

plot(Rdm.SolutionTimes,intrpUdm.uz)
grid on
xlabel('Time');
ylabel('Center of beam displacement')

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

Решите электромагнитную задачу и найдите электрический потенциал и полевое распределение для 2D геометрии, представляющей пластину отверстием.

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

emagmodel = createpde('electromagnetic','electrostatic');

Импортируйте и постройте геометрию, представляющую пластину отверстием.

importGeometry(emagmodel,'PlateHolePlanar.stl');
pdegplot(emagmodel,'EdgeLabels','on')

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

Задайте вакуумную проницаемость в системе СИ модулей.

emagmodel.VacuumPermittivity = 8.8541878128E-12;

Задайте относительную проницаемость материала.

electromagneticProperties(emagmodel,'RelativePermittivity',1);

Примените граничные условия напряжения на ребра, структурирующие прямоугольник и круг.

electromagneticBC(emagmodel,'Voltage',0,'Edge',1:4);
electromagneticBC(emagmodel,'Voltage',1000,'Edge',5);

Задайте плотность заряда для целой геометрии.

electromagneticSource(emagmodel,'ChargeDensity',5E-9);

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

generateMesh(emagmodel);

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

R = solve(emagmodel)
R = 
  ElectrostaticResults with properties:

      ElectricPotential: [1218x1 double]
          ElectricField: [1x1 FEStruct]
    ElectricFluxDensity: [1x1 FEStruct]
                   Mesh: [1x1 FEMesh]

Постройте электрический потенциал и поле.

pdeplot(emagmodel,'XYData',R.ElectricPotential, ...
                  'FlowData',[R.ElectricField.Ex ...
                              R.ElectricField.Ey])
axis equal

Figure contains an axes object. The axes object contains 2 objects of type patch, quiver.

Решите электромагнитную задачу и найдите магнитный потенциал и полевое распределение для 3-D геометрии, представляющей пластину отверстием.

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

emagmodel = createpde('electromagnetic','magnetostatic');

Импортируйте и постройте геометрию, представляющую пластину отверстием.

importGeometry(emagmodel,'PlateHoleSolid.stl');
pdegplot(emagmodel,'FaceLabels','on','FaceAlpha',0.3)

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

Задайте вакуумное значение проницаемости в системе СИ модулей.

emagmodel.VacuumPermeability = 1.2566370614E-6;

Задайте относительную проницаемость материала.

electromagneticProperties(emagmodel,'RelativePermeability',5000);

Задайте плотность тока для целой геометрии.

electromagneticSource(emagmodel,'CurrentDensity',[0;0;0.5]);

Примените магнитные потенциальные граничные условия на поверхности стороны и поверхность, ограничивающую отверстие.

electromagneticBC(emagmodel,'MagneticPotential',[0;0;0],'Face',3:6); 
electromagneticBC(emagmodel,'MagneticPotential',[0;0;0.01],'Face',7);

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

generateMesh(emagmodel);

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

R = solve(emagmodel)
R = 
  MagnetostaticResults with properties:

      MagneticPotential: [1x1 FEStruct]
          MagneticField: [1x1 FEStruct]
    MagneticFluxDensity: [1x1 FEStruct]
                   Mesh: [1x1 FEMesh]

Постройте z-компонент магнитного потенциала.

pdeplot3D(emagmodel,'ColormapData',R.MagneticPotential.Az)

Постройте магнитное поле.

pdeplot3D(emagmodel,'FlowData',[R.MagneticField.Hx ...
                                R.MagneticField.Hy ...
                                R.MagneticField.Hz])

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

свернуть все

Статическая модель структурного анализа в виде StructuralModel объект. Модель содержит геометрию, mesh, структурные свойства материала, загрузок тела, граничных загрузок и граничных условий.

Пример: structuralmodel = createpde('structural','static-solid')

Модальный анализ структурная модель в виде StructuralModel объект. Модель содержит геометрию, mesh, структурные свойства материала, загрузок тела, граничных загрузок и граничных условий.

Пример: structuralmodel = createpde('structural','modal-solid')

Переходная модель структурного анализа в виде StructuralModel объект. Модель содержит геометрию, mesh, структурные свойства материала, загрузок тела, граничных загрузок и граничных условий.

Пример: structuralmodel = createpde('structural','transient-solid')

Анализ частотной характеристики структурная модель в виде StructuralModel объект. Модель содержит геометрию, mesh, структурные свойства материала, загрузок тела, граничных загрузок и граничных условий.

Пример: structuralmodel = createpde('structural','frequency-solid')

Времена решения в виде вектора действительных чисел монотонно увеличения или уменьшения значений.

Пример: 0:20

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

Частоты решения в виде вектора действительных чисел монотонно увеличения или уменьшения значений.

Пример: linspace(0,4000,150)

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

Частотный диапазон в виде вектора из двух элементов. Задайте omega1 как немного меньший, чем самая низкая ожидаемая частота и omega2 как немного больше, чем самая высокая ожидаемая частота. Например, если самая низкая ожидаемая частота является нулем, то используйте маленькую отрицательную величину для omega1.

Пример: [-0.1,1000]

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

Модальные результаты анализа в виде ModalStructuralResults объект.

Пример: modalresults = solve(structuralmodel,'FrequencyRange',[0,1e6])

Установившаяся тепловая аналитическая модель в виде ThermalModel объект. Модель содержит геометрию, mesh, тепловые свойства материального, внутреннего источника тепла, граничных условий и начальных условий.

Пример: thermalmodel = createpde('thermal','steadystate')

Переходная тепловая аналитическая модель в виде ThermalModel объект. Модель содержит геометрию, mesh, тепловые свойства материального, внутреннего источника тепла, граничных условий и начальных условий.

Пример: thermalmodel = createpde('thermal','transient')

Электромагнитная модель для электростатического или магнитостатического анализа в виде ElectromagneticModel объект. Модель содержит геометрию, mesh, свойства материала, электромагнитные источники и граничные условия.

Пример: emagmodel = createpde('electromagnetic','magnetostatic')

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

свернуть все

Статические результаты структурного анализа, возвращенные как StaticStructuralResults объект.

Модальные результаты структурного анализа, возвращенные как ModalStructuralResults объект.

Переходные результаты структурного анализа, возвращенные как TransientStructuralResults объект.

Результаты структурного анализа частотной характеристики, возвращенные как FrequencyStructuralResults объект.

Установившиеся тепловые результаты анализа, возвращенные как SteadyStateThermalResults объект.

Переходные тепловые результаты анализа, возвращенные как TransientThermalResults объект.

Электростатические или магнитостатические результаты анализа, возвращенные как ElectrostaticResults или MagnetostaticResults объект.

Советы

  • Когда вы используете модальные результаты анализа, чтобы решить переходную структурную модель динамики, modalresults аргумент должен быть создан в версии R2019a Partial Differential Equation Toolbox™ или более новый.

  • Для модели частотной характеристики с затуханием результаты являются комплексными. Используйте функции, такие как abs и angle получить результаты с действительным знаком, такие как величина и фаза.

Введенный в R2017a