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 задавать тепловую нагрузку на статической модели структурного анализа.

structuralBodyLoad(structuralmodel,___) задает несколько загрузок тела для той же структурной модели. Используйте любые аргументы от предыдущих синтаксисов, применимых к вашему structuralmodel. Например, задайте силу тяжести и тепловые нагрузки как structuralBodyLoad(structuralmodel,'GravitationalAcceleration',[0;0;-9.8],'Temperature',300). Не используйте последующие вызовы функции при присвоении нескольких загрузок тела, потому что тулбокс использует только последнее присвоение.

structuralBodyLoad(___,'Label',labeltext) добавляет метка для структурной загрузки тела, которая будет использоваться linearizeInput функция. Эта функция позволяет вам передать загрузки тела в linearize функция, которая извлекает разреженные линейные модели для использования с Control System Toolbox™.

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 object. The axes object 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: []
                        Label: []

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

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

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

2D модель является прямоугольной полосой, 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 object. The axes object 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 object. The axes object 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 object. The axes object 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 object. The axes object 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: []
                        Label: []

Задайте тепловую нагрузку с помощью решения от установившегося теплового анализа той же геометрии и 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 object. The axes object 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: []
                        Label: []

Задайте тепловую нагрузку с помощью решения от переходного теплового анализа той же геометрии и 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.

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 объект. Модель содержит геометрию, mesh, структурные свойства материала, загрузок тела, граничных загрузок и граничных условий.

Пример: 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

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

Типы данных: char | string

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

свернуть все

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

Введенный в R2017b