exponenta event banner

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. Для этого анализа упростите 3D осесимметричную модель до 2-й модели.

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

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);

Создайте сетку.

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: []

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

Стационарный анализ тепловой модели

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

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.

Создайте сетку.

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: []

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

Анализ нестационарной тепловой модели

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

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.

Создайте сетку.

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