12PosobKR2015 (1013897), страница 8
Текст из файла (страница 8)
При NRC=5 – такая же картина (правый рис. 35), повторяющаяся при всех последующих NRC.
Причина этого заключается в том, что при NRC>3 программа триангуляции, анализируя координаты узлов, образующих сторону, располагает дополнительные узлы, определяемые параметром NRC, на окружности, проведенной через три узла стороны. Понятно, что это правило справедливо и когда эти три узла лежат на одной прямой.
Следует обратить внимание на то, что при изменении NRC в общем случае только основные узлы зоны не меняют своих координат. Промежуточные узлы, назначенные при образовании зон, при четных NRC вообще исчезают, и только при нечетных сохраняют свои координаты.
В любом случае число узлов и элементов изменяется. Изменяется и нумерация элементов и узлов.
Изменение нумерации КЭ и узлов происходит и из-за работы алгоритмов упорядочения матриц. Эти алгоритмы используются для получения лучших вычислительных характеристик при решении систем алгебраических уравнений (11). В результате в окончательной нумерации КЭ и узлов трудно найти какую-либо систему (рис. 36), особенно когда сравнивать с исходной нумерацией (рис. 29).
Рис. 36
Именно поэтому назначение граничных условий и распределение нагрузок по узлам производится на основании анализа координат узлов, а не их номеров.
Согласно основному положению метода конечных элементов реализация граничных условий и внешних воздействий может проводиться только в узлах.
Следовательно, граничные условия надо задавать только в узлах, а распределенную нагрузку надо представить в виде системы сил, действующих в узлах (распределить между узлами).
Граничные условия и распределение сил по узлам в Sigma задается программно, для чего приходится составлять подпрограммы Bound и Fоrce. Это сделано намерено из медодических соображений, хотя существует Preprocessor к САЕ Sigma, в котором автоматизирована реадизация граничных условий и распределения сил по узлам конечно-элементной модели.
2.5. Реализация граничных условий.
Прежде всего, необходимо понять, какие граничные условия должны быть наложены на рассчитываемый объект, а дальше решить, каким образом эти граничные условия будут реализованы. Когда граничные условия определены заданием (например, как показано на нижнем рис. 21), никаких вопросов не возникает: здесь четко показано, что нижняя горизонтальная сторона пластины закреплена от перемещений вдоль осей Х и Y.
Сложнее обстоит дело, когда задача симметрична (рис. 20) и при решении рассматривается только её четверть (рис. 22) или половина, как на нижнем рис.22.
При переходе к четверти или половине пластины отбрасываются остальные части пластины. Поэтому взаимодействие рассматриваемой части с отбрасываемыми частями необходимо смоделировать граничными условиями как показано на рис. 37.
Обозначения заделки:

Рис. 37
Для задачи-примера рис. 22 это будет выглядеть так ( рис.38)
Рис. 38.
Здесь узлы выреза заереплены от перемещений вдоль осей Х и Y, узлы по левой стороне закреплены от перемещений вдоль оси Х, а по нижней стороне – от перемещений вдоль оси Y.
Файл с программой, в которой реализуются граничные условия, называется Bound.for и он должен быть заранее подключен к проекту.
Подпрограмма Bound.
Как мы уже знаем, расссчитываемый объект (пластина) геометрически представляется физической моделью, представляющей собой конгломерат тругольных конечных элементов, соединенных между собой в узлах конечно-элементной сетки. Каждый узел может перемещаться в направлениях Х и Y глобальной системы координат. Эти перемещения обозначаются как и
, где i – номер узла. Задача заключается в определении перемещений всех узлов. Через эти перемещения рассчитываются напряжения в конечных элементах, что является конечной целью решения задачи. Таким образом размерность решаемой задачи будет 2NP, где NP – число узлов . Но для части узлов значения перемещений
и
определена условиями задачи. Например, узлы, по вырезу (рис. 36) закреплены от перемещения по осям Х и Y. Следовательно, перемещения
и
этих узлов известны: они равны нулю. Узлы по нижней горизонтальной стороне закреплены от перемещений вдоль оси Y. Следовательно, перемещения
этих узлов тоже известны: они также равны нулю. Наконец, перемещения
узлов по левой вертикальной границе тоже будут равны нулю. Следовательно, размерность решаемой задачи уменьшается и становится равной
, где k – число узлов, закрепленных от перемещений вдоль оси Х и j - число узлов, закрепленных от перемещений вдоли оси Y.
Но в САЕ-системах ради упрощения программ система алгебраических уравнений записывается полностью, имея размерность 2NP, только коэффициенты, соответствующие нулевым значениям перемещений в закрепленных узлах, приравниваются нулю.
Для реализации закреплений узлов в Bound используется целочисленный массив NFIX, размерностью NP, в котором для каждого узла отведена ячейка, в которую записывается признак закрепления узла: первый элемент массива узла NFIX содержит признак закрепления узла с номером 1, второй элемент массива – узла 2 и т.д. Если узел не закреплен, в соответствующую ячейку массива NFIX ничего не записывается. Так как эти ячейки массива NFIX не используются, то рекомендуется предварительно в Main массив NFIX обнулить.
Признаки закрепления узлов следующие:
11 - для узла, закрепленного от перемещений вдоль осей Х и Y;
10 - для узла, закрепленного от перемещений вдоль оси X;
1 - для узла, закрепленного от перемещений вдоль оси Y.
Организуется также информационный целочисленный массив NBC, в котором хранятся номера закрепленных узлов.
Если посмотреть номера узлов, образующих, к примеру, вырез пластины (рис. 36), то становится понятным, что никакой системы здесь нет. Ещё более сложную картину будут представлять номера узлов по вырезу при задании параметру NRC значений 4,5, и т.д. (рис. 33) с целью увеличения точности расчета путем увеличения числа КЭ. Поэтому поиск узлов по номерам с целью задания им признаков закреплений бесперспективен. Гораздо проще отыскивать закрепленные узлы по их координатам.
В Sigma имеется CORD - массив координат точек пластины. В нём записываются последовательно координаты всех узлов, начиная с первой. При этом, первые две ячейки этого массива содержат координаты по Х и Y соответственно узла с номером 1, вторые две ячейки – кординаты узла с номер 2 и т.д. Очевидно, что размерность массива CORD равна 2NP, где, повторяем, NP число узлов конечноэлементной сетки.
Один из способов индексации этого массива таков: CORD(2*(i-1)+n), где i - номер узла, n - номер измерения по которому определяется координата. Например, координата по Х, i-го узла определяется так CORD(2*(i-1)+1), координата узла i по Y - CORD(2*(i-1)+1).
Как уже говорилось, NBC - массив номеров узлов имеющих закрепления, NFIX - массив в котором указывается тип закрепления узла.
Первый из массивов является информационным, а остальные два должны заполнятся программно. Определение типа граничных условий, налагаемых на какой-нибудь узел, должно вестись на основе анализа координат узлов.
Отбор узлов с определенными признаками закрепления проводится по геометрическим хараетеристикам объекта. Например, если необходимо закрепить узлы на нижней горизонтальной стороне примера (рис. 36), то надо организовать отбор всех узлов, лежащих на этой линии (координаты которых принадлежат этой линии).
Рекомендации по реализации:
· организовать цикл по координатам узлов конечно-элементной сетки и отобрать те узлы, которые необходимо закрепить;
· присвоить переменной массива NFIX значения, соответствующие типу закрепления;
· запомнить номер узла в массиве NBC.
Программа наложения граничных условий для примера рис. 36.
Предварительные разъяснения.
Объявление в подпрограмме размерностей массивов, равных единице, например, CORD(1), NBC(1), NFIX(1) согласно правилам языка означает использование тех же массивов с теми же размерностями, объявленных в Main.
IPR - массив управления печатью. Вывод тех или иных результатов расчета на печать (в текстовый файл результатов расчета) регулируется логическим массивом IPR. Формирование содержимого этого массива обеспечивается в подсистеме «Конфигурирование комплекса». Например, помечивание позиции 21 (рис. 24) указывает на то, что информация по параметрам закрепления будет выведена в текстовый файл результатов расчета.
Также не надо забывать и то, что координаты узлов вещественные и их прямое сравнение с идеальным значением с помощью оператора .EQ. невозможно, мы можем говорить о равенстве двух вещественных чисел только с определенной точностью. В связи с предыдущим замечанием предлагается сравнивать два вещественных числа А и В следующим образом: ABS(A-B).LT.EPS, где EPS - точность, с которой сравниваются вещественные числа (например, 0.01). В отдельных случаях приходится использовать другую точность. Например, для отбора узлов, лежащих на окружности, оказалось достаточной точность 1.
* Файл Bound
* Содержит подпрограмму Bound
* ПОДПPOГPAММА ЗАДАНИЯ ГPАНИЧНЫХ УCЛOBИЙ
* BЫЗЫBAETCЯ ИЗ MAIN , BЫЗЫBAEMЫX MOДУЛEЙ HET.
* ==========================================================
* начало кода подпрограммы Bound
* ==========================================================
SUBROUTINE BOUND (NN,CORD,NBC,NFIX,DB,IPR,NP)
DIMENSION CORD(1), NBC(1), NFIX(1)
LOGICAL*1 IPR(50) IPR массив управления печатью
IF(IPR(21)) WRITE(6,18)
IXY=0 количество узлов закрепленных по осям Х и Y
IX=0 количество узлов закрепленных по оси Х
IY=0 количество узлов закрепленных по оси Y
NB=0 общее количество узлов, имеющих закрепления
DO 56 I=1, NP NP – общее число узлов
* Координаты узла, который обрабатывается в данный момент
X1=CORD(2*(I-1)+1) Координата по Х обрабатываемого узла
Y1=CORD(2*(I-1)+2) Координата по Y обрабатываемого узла