exponenta event banner

structuralBC

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

Синтаксис

structuralBC(structuralmodel,RegionType,RegionID,'Constraint',Cval)
structuralBC(structuralmodel,RegionType,RegionID,'Displacement',Dval)
structuralBC(structuralmodel,RegionType,RegionID,'XDisplacement',XDval,'YDisplacement',YDval,'ZDisplacement',ZDval)
structuralBC(structuralmodel,RegionType,RegionID,'XDisplacement',XDval,Name,Value)
structuralBC(structuralmodel,RegionType,RegionID,'YDisplacement',YDval,Name,Value)
structuralBC(structuralmodel,RegionType,RegionID,'ZDisplacement',ZDval,Name,Value)
structuralBC(___,'Vectorized','on')
bc = structuralBC(___)

Описание

пример

structuralBC(structuralmodel,RegionType,RegionID,'Constraint',Cval) задает одно из стандартных структурных граничных ограничений. Здесь, Cval может быть 'fixed', 'free', 'roller' или 'symmetric'. Значением по умолчанию является 'free'.

Избегайте использования 'symmetric' для переходного и модального анализа, поскольку симметричное ограничение может предотвратить участие некоторых структурных режимов.

пример

structuralBC(structuralmodel,RegionType,RegionID,'Displacement',Dval) осуществляет смещение на контуре типа RegionType с идентификационными номерами RegionID.

пример

structuralBC(structuralmodel,RegionType,RegionID,'XDisplacement',XDval,'YDisplacement',YDval,'ZDisplacement',ZDval) задает x-, y-, и z-компоненты вынужденного смещения.

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

structuralBC(structuralmodel,RegionType,RegionID,'XDisplacement',XDval,Name,Value)задает форму и длительность изменяющегося во времени значения x-компонента вынужденного смещения.

пример

structuralBC(structuralmodel,RegionType,RegionID,'YDisplacement',YDval,Name,Value) задает форму и длительность изменяющегося во времени значения y-компонента вынужденного смещения.

structuralBC(structuralmodel,RegionType,RegionID,'ZDisplacement',ZDval,Name,Value) задает форму и длительность изменяющегося во времени значения z-компонента вынужденного смещения.

structuralBC(___,'Vectorized','on') векторизованная функциональная оценка использования, когда вы передаете указатель на функцию в качестве аргумента. Если ваш указатель на функцию вычисляет векторизованным способом, то использование этого аргумента экономит время. Смотрите Векторизацию (MATLAB). Для получения дополнительной информации этой оценки, смотрите Непостоянные Граничные условия.

Используйте этот синтаксис с любым из входных параметров от предыдущих синтаксисов.

bc = structuralBC(___) возвращает структурный объект граничного условия, использующий любой из входных параметров от предыдущих синтаксисов.

Примеры

свернуть все

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

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

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

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

gm = multicylinder([0.01,0.015],0.05);

Присвойте геометрию структурной модели и постройте геометрию.

structuralModel.Geometry = gm;
pdegplot(structuralModel,'CellLabels','on','FaceLabels','on','FaceAlpha',0.4)

Для каждого металла задайте модуль Молодежи и отношение Пуассона.

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')
ans = 
  StructuralBC with properties:

                RegionType: 'Face'
                  RegionID: [1 4]
                Vectorized: 'off'

   Boundary Constraints and Enforced Displacements
              Displacement: []
             XDisplacement: []
             YDisplacement: []
             ZDisplacement: []
                Constraint: "fixed"

   Boundary Loads
                     Force: []
           SurfaceTraction: []
                  Pressure: []
    TranslationalStiffness: []

Задайте поверхностную тягу для поверхностей 2 и 5.

structuralBoundaryLoad(structuralModel,'Face',[2,5],'SurfaceTraction',[0;0;100])
ans = 
  StructuralBC with properties:

                RegionType: 'Face'
                  RegionID: [2 5]
                Vectorized: 'off'

   Boundary Constraints and Enforced Displacements
              Displacement: []
             XDisplacement: []
             YDisplacement: []
             ZDisplacement: []
                Constraint: []

   Boundary Loads
                     Force: []
           SurfaceTraction: [3x1 double]
                  Pressure: []
    TranslationalStiffness: []

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

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

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

gm = multicuboid(0.2,0.1,0.05);

Присвойте геометрию структурной модели и постройте геометрию.

structuralModel.Geometry = gm;
pdegplot(structuralModel,'FaceLabels','on','FaceAlpha',0.5)

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

structuralProperties(structuralModel,'YoungsModulus',74e9,...
                                     'PoissonsRatio',0.42,...
                                     'MassDensity',19.29e3);

Задайте нагрузку силы тяжести на луч.

structuralBodyLoad(structuralModel,'GravitationalAcceleration',[0;0;-9.8]);

Укажите, что стоят 5, фиксированный контур.

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

Задайте z-смещение на поверхности 3 из модели. Путем оставления x-и y-смещений незаданными, вы позволяете поверхности 3 переместиться в x-и направление Y.

structuralBC(structuralModel,'Face',3,'ZDisplacement',0.0001);

Сгенерируйте mesh и решите модель.

generateMesh(structuralModel);
R = solve(structuralModel); 

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

pdeplot3D(structuralModel,'ColorMapData',R.Stress.sxx,'Deformation',R.Displacement)

Теперь задайте все три смещения на той же поверхности. Здесь, z-смещение является тем же самым, но x-и y-смещения являются оба нулем. Столкнитесь 3, не может переместиться в x-и направления Y.

structuralBC(structuralModel,'Face',3,'Displacement',[0;0;0.0001]); 
R = solve(structuralModel);
pdeplot3D(structuralModel,'ColorMapData',R.Stress.sxx,'Deformation',R.Displacement)

Таким образом определение 'Displacement',[0;0;0.0001] эквивалентно определению 'XDisplacement',0,'YDisplacement',0,'ZDisplacement',0.0001.

structuralBC(structuralModel,'Face',3,'XDisplacement',0, ...
                                      'YDisplacement',0, ...
                                      'ZDisplacement',0.0001); 
R = solve(structuralModel);
pdeplot3D(structuralModel,'ColorMapData',R.Stress.sxx,'Deformation',R.Displacement)

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

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

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

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

gm = multicuboid(0.06,0.005,0.01);
structuralmodel.Geometry = gm;
pdegplot(structuralmodel,'FaceLabels','on','FaceAlpha',0.5)
view(50,20)

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

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

Зафиксируйте один конец луча.

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

Примените синусоидальное смещение вдоль y - направление на конце напротив фиксированного конца луча.

yDisplacementFunc = @(location,state) ones(size(location.y))*1E-4*sin(50*state.time);
structuralBC(structuralmodel,'Face',3,'YDisplacement',yDisplacementFunc)
ans = 
  StructuralBC with properties:

                RegionType: 'Face'
                  RegionID: 3
                Vectorized: 'off'

   Boundary Constraints and Enforced Displacements
              Displacement: []
             XDisplacement: []
             YDisplacement: [function_handle]
             ZDisplacement: []
                Constraint: []

   Boundary Loads
                     Force: []
           SurfaceTraction: []
                  Pressure: []
    TranslationalStiffness: []

   Time Variation of Force, Pressure, or Enforced Displacement
                 StartTime: []
                   EndTime: []
                  RiseTime: []
                  FallTime: []

   Sinusoidal Variation of Force, Pressure, or Enforced Displacement
                 Frequency: []
                     Phase: []

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

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

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

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

gm = multicuboid(0.06,0.005,0.01);
structuralmodel.Geometry = gm;
pdegplot(structuralmodel,'FaceLabels','on','FaceAlpha',0.5)
view(50,20)

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

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

Зафиксируйте один конец луча.

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

Примените синусоидальное смещение вдоль направления Y на конце напротив фиксированного конца луча.

structuralBC(structuralmodel,'Face',3,'YDisplacement',1E-4,'Frequency',50);

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

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

model = createpde('structural','static-planestress'); 

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

length = 1;
width = 0.5;
radius = 0.1;
R1 = [3 4 -length length length -length ...
          -width -width  width   width]';
C1 = [1 0 0 radius 0 0 0 0 0 0]';
gdm = [R1 C1];
ns = char('R1','C1');
g = decsg(gdm,'R1- C1',ns');
geometryFromEdges(model,g);

Постройте геометрию, отображающую метки ребра.

figure
pdegplot(model,'EdgeLabels','on');
axis([-1.2*length 1.2*length ...
      -1.2*width  1.2*width])

Постройте геометрию, отображающую метки вершины.

figure
pdegplot(model,'VertexLabels','on');
axis([-1.2*length 1.2*length ...
      -1.2*width  1.2*width])

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

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

Установите x - компонент смещения на левом крае пластины обнулять, чтобы сопротивляться прикладной загрузке..

structuralBC(model,'Edge',3,'XDisplacement',0);

Примените поверхностную тягу с ненулевым x - компонент на правом краю пластины.

structuralBoundaryLoad(model,'Edge',1,'SurfaceTraction',[100000 0]);

Установите y - компонент смещения в левом нижнем углу (вершина 3) обнулять к сдержанности движение твердого тела.

structuralBC(model,'Vertex',3,'YDisplacement',0);

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

generateMesh(model,'Hmax',radius/6);

Решите проблему.

R = solve(model); 

Постройте x - компонент нормального распределения напряжения.

pdeplot(model,'XYData',R.Stress.sxx);
axis equal
colormap jet
title 'Normal Stress Along x-Direction';

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

свернуть все

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

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

Геометрический тип области, заданный как 'Vertex', 'Edge', или, для 3-D модели, 'Face'.

Вы не можете использовать следующие геометрические типы области, если вы задаете 'roller' или значение 'symmetric' для граничного ограничения Cval:

  • 'Edge' для 3-D модели

  • 'Vertex' для 2D или 3-D модели

Пример: structuralBC(structuralmodel,'Face',[2,5],'XDisplacement',0.1)

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

Геометрический ID области, заданный как вектор положительных целых чисел. Найдите, что идентификаторы области с помощью pdegplot, как показано в Создают Геометрию и Удаляют Контуры Поверхности или Импорт Файла STL.

Пример: structuralBC(structuralmodel,'Face',[2,5],'XDisplacement',0.01)

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

Вынужденное смещение, заданное как числовой вектор или указатель на функцию. Числовой вектор должен содержать два элемента для 2D модели и три элемента для 3-D модели. Функция должна возвратить матрицу 2D строки для 2D модели и матрицу с тремя строками для 3-D модели. Каждый столбец матрицы должен соответствовать вынужденному вектору смещения в граничных координатах, обеспеченных решателем. В случае переходной структурной модели Dval также может быть функцией времени.

Пример: structuralBC(structuralmodel,'Face',[2,5],'Displacement',[0;0;0.01])

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

x-компонент вынужденного смещения, заданного как номер или указатель на функцию. Функция должна возвратить вектор - строку. Каждый элемент этого вектора соответствует значению x-компонента вынужденного смещения в граничных координатах, обеспеченных решателем. В случае переходной структурной модели XDval также может быть функцией времени.

Пример: structuralBC(structuralmodel,'Face',[2,5],'XDisplacement',0.01)

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

y-компонент вынужденного смещения, заданного как номер или указатель на функцию. Функция должна возвратить вектор - строку. Каждый элемент этого вектора соответствует значению y-компонента вынужденного смещения в граничных координатах, обеспеченных решателем. В случае переходной структурной модели YDval также может быть функцией времени.

Пример: structuralBC(structuralmodel,'Face',[2,5],'YDisplacement',0.01)

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

z-компонент вынужденного смещения, заданного как номер или указатель на функцию. Функция должна возвратить вектор - строку. Каждый элемент этого вектора соответствует значению z-компонента вынужденного смещения в граничных координатах, обеспеченных решателем. В случае переходной структурной модели ZDval также может быть функцией времени.

Пример: structuralBC(structuralmodel,'Face',[2,5],'ZDisplacement',0.01)

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

Стандартные структурные граничные ограничения, заданные как 'free', 'fixed', 'roller' или 'symmetric'.

Вы не можете использовать 'roller' и значения 'symmetric' со следующими геометрическими типами области:

  • 'Edge' для 3-D модели

  • 'Vertex' для 2D или 3-D модели

Пример: structuralBC(structuralmodel,'Face',[2,5],'Constraint','fixed')

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

Аргументы в виде пар имя-значение

Пример: structuralBC(structuralmodel,'Face',[2,5],'XDisplacement',0.01,'RiseTime',0.5,'FallTime',0.5,'EndTime',3)

Используйте один или несколько аргументов пары "имя-значение", чтобы задать форму и длительность изменяющегося во времени значения компонента смещения. Задайте значение смещения с помощью одного из следующих аргументов: XDval, YDval или ZDval. Вы не можете задать больше чем один изменяющийся во времени компонент или задать значение Dval с этими аргументами пары "имя-значение".

Можно смоделировать прямоугольное, треугольное, и трапециевидное смещение импульсы. Если время начала 0, можно не использовать определение его.

  • Для меандра задайте запуск и время окончания.

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

  • Для импульса трапецоида задайте все четыре раза.

Можно смоделировать гармоническое смещение путем определения его частоты и начальной фазы. Если начальная фаза 0, можно не использовать определение ее.

Прямоугольный, треугольный, или трапециевидный импульс

свернуть все

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

Пример: structuralBC(structuralmodel,'Face',[2,5],'XDisplacement',0.01,'StartTime',1,'EndTime',3)

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

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

Пример: structuralBC(structuralmodel,'Face',[2,5],'XDisplacement',0.01,'StartTime',1,'EndTime',3)

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

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

Пример: structuralBC(structuralmodel,'Face',[2,5],'XDisplacement',0.01,'RiseTime',0.5,'FallTime',0.5,'EndTime',3)

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

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

Пример: structuralBC(structuralmodel,'Face',[2,5],'XDisplacement',0.01,'RiseTime',0.5,'FallTime',0.5,'EndTime',3)

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

Гармоническое смещение

свернуть все

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

Пример: structuralBC(structuralmodel,'Face','XDisplacement',0.01,'Frequency',25)

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

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

Пример: structuralBC(structuralmodel,'Face',[2,5],'XDisplacement',0.01,'Frequency',25,'Phase',pi/6)

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

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

свернуть все

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

Советы

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

Введенный в R2017b