Решите проблему теплопередачи или структурного анализа
thermalresults = solve(thermalmodel)thermalresults = solve(thermalmodel,tlist)structuralresults = solve(structuralmodel,'FrequencyRange',[omega1,omega2])structuralresults = solve(structuralmodel)structuralresults = solve(structuralmodel,tlist)structuralresults = solve(structuralmodel,tlist,'ModalResults',modalresults) возвращает решение установившейся тепловой модели, представленной в thermalresults = solve(thermalmodel)thermalmodel.
возвращает решение переходной тепловой модели, представленной в thermalresults = solve(thermalmodel,tlist)thermalmodel во времена tlist.
возвращает решение модальной аналитической модели для всех режимов в частотном диапазоне structuralresults = solve(structuralmodel,'FrequencyRange',[omega1,omega2])[omega1,omega2]. Задайте omega1, столь же немного меньший, чем самая низкая ожидаемая частота и omega2 как немного больше, чем самая высокая ожидаемая частота. Например, самая низкая ожидаемая частота, нуль, затем используйте маленькую отрицательную величину для omega1.
возвращает решение статической модели структурного анализа, представленной в structuralresults = solve(structuralmodel)structuralmodel.
возвращает решение переходной структурной модели динамики, представленной в.structuralresults = solve(structuralmodel,tlist)
решает переходную структурную модель динамики при помощи модального метода суперпозиции, чтобы ускорить вычисления. Во-первых, выполните модальный анализ, чтобы вычислить собственные частоты и формы режима в конкретном частотном диапазоне. Затем используйте этот синтаксис, чтобы вызвать модальный метод суперпозиции. Точность результатов зависит от количества режимов в модальных результатах анализа.structuralresults = solve(structuralmodel,tlist,'ModalResults',modalresults)
Решите 3-D установившуюся тепловую проблему.
Создайте тепловую модель для этой проблемы.
thermalmodel = createpde('thermal');Импортируйте и постройте геометрию блока.
importGeometry(thermalmodel,'Block.stl'); pdegplot(thermalmodel,'FaceLabel','on','FaceAlpha',0.5) axis equal

Присвойте свойства материала.
thermalProperties(thermalmodel,'ThermalConductivity',80);Примените постоянную температуру к левой стороне блока (стоят 1), и постоянная температура к правой стороне блока (стоят 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

Для квадратной области присвойте эти тепловые свойства:
Теплопроводность .
Массовая плотность .
Удельная теплоемкость .
thermalProperties(thermalmodel,'ThermalConductivity',10, ... 'MassDensity',2, ... 'SpecificHeat',0.1, ... 'Face',1);
Для ромбовидной области присвойте эти тепловые свойства:
Теплопроводность .
Массовая плотность .
Удельная теплоемкость .
thermalProperties(thermalmodel,'ThermalConductivity',2, ... 'MassDensity',1, ... 'SpecificHeat',0.1, ... 'Face',2);
Примите, что ромбовидная область является источником тепла с плотностью .
internalHeatSource(thermalmodel,4,'Face',2);Примените постоянную температуру сторонам квадратной пластины.
thermalBC(thermalmodel,'Temperature',0,'Edge',[1 2 7 8]);
Установите начальную температуру на .
thermalIC(thermalmodel,0);
Поймайте в сети геометрию.
generateMesh(thermalmodel);
Движущие силы для этой проблемы очень быстры. Температура достигает устойчивого состояния приблизительно за 0,1 секунды. Чтобы получить интересную часть динамики, установите время решения на logspace(-2,-1,10). Эта команда возвращается 10 логарифмически расположенных с интервалами раз решения между 0,01 и 0.1.
tlist = logspace(-2,-1,10);
Решите уравнение.
thermalresults = solve(thermalmodel,tlist)
thermalresults =
TransientThermalResults with properties:
Temperature: [1481x10 double]
SolutionTimes: [1x10 double]
XGradients: [1481x10 double]
YGradients: [1481x10 double]
ZGradients: []
Mesh: [1x1 FEMesh]
Постройте решение с изотермическими строками при помощи контурного графика.
T = thermalresults.Temperature; pdeplot(thermalmodel,'XYData',T(:,10),'Contour','on','ColorMap','hot')

Решите статическую структурную модель, представляющую биметаллический кабель под силой.
Создайте статическую структурную модель для решения твердой (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]
Решатель находит значения смещения, напряжения, деформации и напряжения фон Мизеса в узловых местоположениях. Чтобы получить доступ к этим значениям, используйте structuralresults.Displacement, structuralresults.Stress, и так далее. Смещение, напряжение и деформация в узловых местоположениях являются массивами структур с полями, представляющими их компоненты.
structuralresults.Displacement
ans = struct with fields:
ux: [22281x1 double]
uy: [22281x1 double]
uz: [22281x1 double]
Magnitude: [22281x1 double]
structuralresults.Stress
ans = struct with fields:
sxx: [22281x1 double]
syy: [22281x1 double]
szz: [22281x1 double]
syz: [22281x1 double]
sxz: [22281x1 double]
sxy: [22281x1 double]
structuralresults.Strain
ans = struct with fields:
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 pdegplot(structuralmodel,'FaceLabels','on','FaceAlpha',0.25) axis([-0.2 0.2 -0.2 0.2 -0.1 0.1])

Задайте модуль Молодежи, отношение Пуассона и массовую плотность материала.
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 =
TransientStructuralResults with properties:
Displacement: [1x1 struct]
Velocity: [1x1 struct]
Acceleration: [1x1 struct]
SolutionTimes: [1x300 double]
Mesh: [1x1 FEMesh]
Решатель находит значения смещения, скорости и ускорения в узловых местоположениях. Чтобы получить доступ к этим значениям, используйте structuralresults.Displacement, structuralresults.Velocity, и так далее. Смещение, скорость и ускорение являются массивами структур с полями, представляющими их компоненты.
structuralresults.Displacement
ans = struct with fields:
ux: [1873x300 double]
uy: [1873x300 double]
uz: [1873x300 double]
Magnitude: [1873x300 double]
structuralresults.Velocity
ans = struct with fields:
vx: [1873x300 double]
vy: [1873x300 double]
vz: [1873x300 double]
Magnitude: [1873x300 double]
structuralresults.Acceleration
ans = struct with fields:
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 struct]
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 = struct with fields:
ux: [6511x32 double]
uy: [6511x32 double]
Постройте y-компонент решения для основной частоты.
pdeplot(structuralmodel,'XYData',modalresults.ModeShapes.uy(:,1)) title(['First Mode with Frequency ', ... num2str(modalresults.NaturalFrequencies(1)/(2*pi)),' Hz']) axis equal

Найдите отклонение 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)

Сгенерируйте 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])

Сгенерируйте 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 struct]
Velocity: [1x1 struct]
Acceleration: [1x1 struct]
SolutionTimes: [1x120 double]
Mesh: [1x1 FEMesh]
Интерполируйте и постройте смещение в центре луча.
intrpUdm = interpolateDisplacement(Rdm,0,0,0.0015); plot(Rdm.SolutionTimes,intrpUdm.uz) grid on xlabel('Time'); ylabel('Center of beam displacement')

thermalmodel — ThermalThermalModelТепловая модель, заданная как объект ThermalModel. Модель содержит геометрию, mesh, тепловые свойства материального, внутреннего источника тепла, граничных условий и начальных условий.
Пример: thermalmodel = createpde('thermal','steadystate')
structuralmodel — StructuralStructuralModelСтруктурная модель, заданная как объект StructuralModel. Модель содержит геометрию, mesh, структурные свойства материала, загрузок тела, граничных загрузок и граничных условий.
Пример: structuralmodel = createpde('structural','transient-solid')
tlist — Времена решенияВремена решения, заданные как вектор действительных чисел монотонно увеличения или уменьшения значений.
Пример: 0:20
Типы данных: double
[omega1,omega2] — Частотный диапазонЧастотный диапазон, заданный как вектор двух элементов. Задайте omega1, столь же немного меньший, чем самая низкая ожидаемая частота и omega2 как немного больше, чем самая высокая ожидаемая частота. Например, самая низкая ожидаемая частота, нуль, затем используйте маленькую отрицательную величину для omega1.
Пример: [-0.1,1000]
Типы данных: double
modalresults — Модальные результаты анализаModalStructuralResults.Модальные результаты анализа, заданные как объект ModalStructuralResults.
Пример: modalresults = solve(structuralmodel,'FrequencyRange',[0,1e6])
thermalresults — Тепловые результатыSteadyStateThermalResults | объект TransientThermalResultsТепловые результаты, возвращенные как объект SteadyStateThermalResults или объект TransientThermalResults. Тип thermalresults зависит от того, представляет ли thermalmodel установившуюся проблему (thermalmodel.AnalysisType = 'steadystate') или переходная проблема (thermalmodel.AnalysisType = 'transient').
structuralresults — Структурные результатыStaticStructuralResults | объект TransientStructuralResults | объект ModalStructuralResultsСтруктурные результаты, возвращенные как StaticStructuralResults, TransientStructuralResults или объект ModalStructuralResults. Тип structuralresults зависит от того, представляет ли structuralmodel статическую проблему, переходную проблему или модальную аналитическую проблему. Чтобы проверять тип проблемы структурного анализа, введите structuralmodel.AnalysisType.
Когда вы используете модальные результаты анализа, чтобы решить переходную структурную модель динамики, аргумент modalresults должен быть создан в версии R2019a Partial Differential Equation Toolbox™ или более новый.
geometryFromEdges | PDEModel | StructuralModel | ThermalModel | geometryFromMesh | importGeometry
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.