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(structuralmodel,RegionType,RegionID,'Constraint','multipoint') устанавливает многоточечное ограничение с помощью всех степеней свободы на комбинации геометрических областей, заданных RegionType и RegionID. Ссылочное местоположение для ограничения является геометрическим центром всех узлов на комбинации всех заданных геометрических областей.

Этот синтаксис требуется, если вы намереваетесь использовать результаты, полученные с методом сокращения порядка модели в Simscape™ Multibody™ Reduced Order Flexible Solid блок. Модели Simscape ожидают, что связи во всех соединениях будут иметь шесть степеней свободы, в то время как Partial Differential Equation Toolbox™ использует две или три степени свободы в каждом узле. Установка многоточечного ограничения гарантирует, что все узлы и все степени свободы для заданных геометрических областей имеют твердое ограничение с геометрическим центром всех заданных геометрических областей в целом как контрольная точка. Ссылочное местоположение имеет шесть степеней свободы.

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

structuralBC(structuralmodel,RegionType,RegionID,'Constraint','multipoint','Reference',Coords) задает контрольную точку для многоточечного ограничения вместо того, чтобы использовать геометрический центр всех заданных областей как контрольная точка.

structuralBC(structuralmodel,RegionType,RegionID,'Constraint','multipoint','Reference',Coords,'Radius',R) ограничивает область для многоточечного ограничения к узлам в кругу (для 2D геометрии) или сфера (для 3-D геометрии) радиуса R вокруг контрольной точки.

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"
                    Radius: []
                 Reference: []

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

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

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

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

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

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

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

gm = multicuboid(0.1,0.01,0.01);
structuralmodel.Geometry = gm;
pdegplot(structuralmodel,'EdgeLabels','on','FaceAlpha',0.5)

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

structuralProperties(structuralmodel,'YoungsModulus',70E9, ...
                                     'PoissonsRatio',0.3, ...
                                     'MassDensity',2700);

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

generateMesh(structuralmodel);

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

structuralBC(structuralmodel,'Edge',[4,6,9,10],'Constraint','multipoint')
ans = 
  StructuralBC with properties:

                RegionType: 'Edge'
                  RegionID: [4 6 9 10]
                Vectorized: 'off'

   Boundary Constraints and Enforced Displacements
              Displacement: []
             XDisplacement: []
             YDisplacement: []
             ZDisplacement: []
                Constraint: "multipoint"
                    Radius: []
                 Reference: []

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

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

structuralBC(structuralmodel,'Edge',[2,8,11,12],'Constraint','multipoint')
ans = 
  StructuralBC with properties:

                RegionType: 'Edge'
                  RegionID: [2 8 11 12]
                Vectorized: 'off'

   Boundary Constraints and Enforced Displacements
              Displacement: []
             XDisplacement: []
             YDisplacement: []
             ZDisplacement: []
                Constraint: "multipoint"
                    Radius: []
                 Reference: []

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

Уменьшайте модель до всех режимов в частотном диапазоне [-Inf,500000] и интерфейсные степени свободы.

R = reduce(structuralmodel,'FrequencyRange',[-Inf,500000])
R = 
  ReducedStructuralModel with properties:

                     K: [34x34 double]
                     M: [34x34 double]
              NumModes: 22
           RetainedDoF: [1x144 double]
    ReferenceLocations: [3x2 double]
                  Mesh: [1x1 FEMesh]

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

свернуть все

Структурная модель, заданная как 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.

Пример: 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', или 'MPC'.

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

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

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

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

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

Местоположение контрольной точки для многоточечного ограничения, заданного как 2 1 (для 2D геометрии) или 3 на 1 (для 3-D геометрии) числовой вектор.

Пример: structuralBC(structuralmodel,'Vertex',[1,3,5:10],'Constraint','multipoint','Reference',[0;0;1])

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

Радиус круга (для 2D геометрии) или сфера (для 3-D геометрии) вокруг местоположения контрольной точки для многоточечного ограничения, заданного как положительное число.

Пример: structuralBC(structuralmodel,'Vertex',[1,3,5:10],'Constraint','multipoint','Reference',[0;0;1],'Radius',0.2)

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

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

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

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

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

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

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

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

Можно смоделировать гармоническое смещение путем определения его частоты и начальной фазы. Если начальная фаза 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 объект.

Больше о

свернуть все

Степени свободы (число степеней свободы)

В Partial Differential Equation Toolbox каждый узел 2D или 3-D геометрии имеет две или три степени свободы (число степеней свободы), соответственно. Число степеней свободы соответствует поступательным смещениям. Если количеством точек mesh в модели является NumNodes, затем тулбокс присваивает идентификаторы степеням свободы можно следующим образом:

  • Числа от 1 до NumNodes соответствуйте x- смещение в каждом узле.

  • Числа от NumNodes+1 к 2*NumNodes соответствуйте y- смещение в каждом узле.

  • Числа от 2*NumNodes+1 к 3*NumNodes соответствуйте z- смещение в каждом узле 3-D геометрии.

Советы

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

Введенный в R2017b