structuralBodyLoad

Задайте нагрузку на тело для несущей модели

Описание

пример

structuralBodyLoad(structuralmodel,'GravitationalAcceleration',GAval) задает ускорение от силы тяжести как нагрузку на тело для статической или переходной несущей модели. Структурные модели для модального анализа не могут иметь нагрузки на тело.

пример

structuralBodyLoad(structuralmodel,'AngularVelocity',omega) задает скорость вращения, чтобы смоделировать центробежную загрузку для осесимметричной несущей модели.

пример

structuralBodyLoad(structuralmodel,'Temperature',Tval) задает тепловую нагрузку для статической модели структурного анализа.

Совет

Если Tval является самой температурой, а не изменением температуры, необходимо задать температуру ссылки используя structuralmodel.ReferenceTemperature. В противном случае тулбокс использует значение по умолчанию (нуля) для температуры ссылки. Для получения дополнительной информации смотрите StructuralModel.

пример

structuralBodyLoad(structuralmodel,'Temperature',Tresults) использует установившиеся или переходные результаты теплового анализа Tresults для определения тепловой нагрузки на статическую модель структурного анализа. Если Tresults является решением переходной тепловой задачи, тогда этот синтаксис использует температуру и ее градиенты с последнего временного шага.

пример

structuralBodyLoad(structuralmodel,'Temperature',Tresults,'TimeStep',iT) использует переходные результаты теплового анализа Tresults и индекс временного шага iT для определения тепловой нагрузки на статическую модель структурного анализа.

bodyLoad = structuralBodyLoad(___) возвращает объект загрузки тела.

Примеры

свернуть все

Создайте несущую модель.

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

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

gm = multicuboid(0.5,0.1,0.1);
structuralModel.Geometry = gm;
pdegplot(structuralModel,'FaceAlpha',0.5)

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

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

structuralProperties(structuralModel,'YoungsModulus',210E3, ...
                                     'PoissonsRatio',0.3, ...
                                     'MassDensity',2.7E-6);

Задайте гравитационную нагрузку на балку.

structuralBodyLoad(structuralModel,'GravitationalAcceleration',[0;0;-9.8])
ans = 
  BodyLoadAssignment with properties:

                   RegionType: 'Cell'
                     RegionID: 1
    GravitationalAcceleration: [3x1 double]
              AngularVelocity: []
                  Temperature: []
                     TimeStep: []

Анализируйте вращающийся диск с радиальным сжатием на ступице из-за прессования. Внутренний радиус диска составляет 0,05, а внешний радиус равен 0,2. Толщина диска составляет 0,05 с интерференционной подгонкой 50E-6. Для этого анализа упростите 3-D осесимметричную модель до модели 2-D.

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

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

Модель 2-D является прямоугольной полосой, размер X которой простирается от ступицы до внешней поверхности и размер y которой простирается по высоте диска. Создать геометрию можно путем определения координат четырех углов полосы. Для осесимметричных моделей тулбокс принимает, что ось вращения является вертикальной осью, проходящей через r = 0, что эквивалентно x = 0.

g = decsg([3 4 0.05 0.2 0.2 0.05 -0.025 -0.025 0.025 0.025]');

Включите геометрию в модель.

geometryFromEdges(structuralmodel,g);

Постройте график геометрии с метками ребра и вершины.

figure
pdegplot(structuralmodel,'EdgeLabels','on','VertexLabels','on')
xlim([0 0.3])
ylim([-0.05 0.05])

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

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

structuralProperties(structuralmodel,'YoungsModulus',210e9, ...
                                     'PoissonsRatio',0.28, ...
                                     'MassDensity',7700);

Приложите центробежную нагрузку за счет вращения диска. Предположим, что диск вращается со скоростью 104,7 рад/с.

structuralBodyLoad(structuralmodel,'AngularVelocity',1047);

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

structuralBC(structuralmodel,'Edge',4,'RDisplacement',50e-6);

Фиксируйте осевое перемещение точки на ступице для предотвращения движения твёрдого тела.

structuralBC(structuralmodel,'Vertex',1,'ZDisplacement',0);

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

generateMesh(structuralmodel);

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

structuralresults = solve(structuralmodel);

Постройте график радиального перемещения диска.

figure
pdeplot(structuralmodel, ...
        'XYData',structuralresults.Displacement.ur, ...
        'ColorMap','jet')
axis equal
xlim([0 0.3])
ylim([-0.05 0.05])

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

Постройте график окружного (обруча) напряжения.

figure
pdeplot(structuralmodel, ...
        'XYData',structuralresults.Stress.sh, ...
        'ColorMap','jet')
axis equal
xlim([0 0.3])
ylim([-0.05 0.05])

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

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

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

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

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

gm = multicuboid(0.5,0.04,[0.03,0.03],'Zoffset',[0,0.03]);
structuralmodel.Geometry = gm;
pdegplot(structuralmodel,'CellLabels','on')

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

Установите температуру ссылки. Эта температура соответствует состоянию нулевого теплового напряжения модели.

structuralmodel.ReferenceTemperature = 20
structuralmodel = 
  StructuralModel with properties:

              AnalysisType: 'static-solid'
                  Geometry: [1x1 DiscreteGeometry]
        MaterialProperties: []
                 BodyLoads: []
        BoundaryConditions: []
      ReferenceTemperature: 20
    SuperelementInterfaces: []
                      Mesh: []
             SolverOptions: [1x1 pde.PDESolverOptions]

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

structuralBodyLoad(structuralmodel,'Temperature',300)
ans = 
  BodyLoadAssignment with properties:

                   RegionType: 'Cell'
                     RegionID: [1 2]
    GravitationalAcceleration: []
              AngularVelocity: []
                  Temperature: 300
                     TimeStep: []

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

Статический тепловой анализ модели

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

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

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

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

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

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

generateMesh(thermalmodel);

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

thermalProperties(thermalmodel,'ThermalConductivity',5e-3);

Задайте постоянные температуры на левом и правом концах балки.

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

Укажите источник тепла по всей геометрии.

internalHeatSource(thermalmodel,10);

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

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

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

Постройте график распределения температуры.

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

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

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

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

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

structuralmodel.Geometry = gm;

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

structuralBodyLoad(structuralmodel,'Temperature',thermalresults)
ans = 
  BodyLoadAssignment with properties:

                   RegionType: 'Cell'
                     RegionID: 1
    GravitationalAcceleration: []
              AngularVelocity: []
                  Temperature: [1x1 pde.SteadyStateThermalResults]
                     TimeStep: []

Задайте тепловую нагрузку, используя решение из переходного теплового анализа на той же геометрии и 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. The axes contains 3 objects of type quiver, patch, line.

Сгенерируйте 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(['Time = ' num2str(tlist(n))])
    caxis([0 100])
end

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

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

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

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

structuralmodel.Geometry = gm;

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

structuralBodyLoad(structuralmodel,'Temperature',thermalresults);

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

structuralBodyLoad(structuralmodel,'Temperature',thermalresults, ...
                                   'TimeStep',2);

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

свернуть все

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

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

Ускорение из-за силы тяжести, заданное как числовой вектор. GAval должны быть указаны в единицах, соответствующих модулям геометрии и свойствам материала.

Пример: structuralBodyLoad(structuralmodel,'GravitationalAcceleration',[0;0;-9.8])

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

Скорость вращения для осесимметричной модели, заданная в виде положительного числа. omega должны быть указаны в единицах, соответствующих модулям геометрии и свойствам материала.

Для осесимметричных моделей тулбокс принимает, что ось вращения является вертикальной осью, проходящей через r = 0, что эквивалентно x = 0.

Пример: structuralBodyLoad(structuralmodel,'AngularVelocity',2.3)

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

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

Пример: structuralBodyLoad(structuralmodel,'Temperature',300)

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

Решение тепловой модели, применяемое как нагрузка на тело на статическую структурную модель, задается как StaticThermalResults или TransientThermalResults объект. Создание Tresults при помощи solve.

Пример: Tresults = solve(thermalmodel); structuralBodyLoad(structuralmodel,'Temperature',Tresults)

Индекс времени, заданный как положительное целое число.

Пример: structuralBodyLoad(structuralmodel,'Temperature',Tresults,'TimeStep',21)

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

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

свернуть все

Ручка к нагрузке тела, возвращенная как BodyLoadAssignment объект. См. BodyLoadAssignment Свойств.

Введенный в R2017b