Алгоритмы и программные модули моделирования геометрически нелинейного стержневого конечного элемента
Программные модули используются в процедурах статического и динамического анализа геометрически нелинейных стержневых систем. Подпрограммы вычисления матрицы касательной жесткости и вектора упругих узловых сил реакции СКЭ вызываются на каждой итерации метода Ньютона-Рафсона (Ньютона-Канторовича) [63] в задачах статического расчета, или же вызываются в необходимой последовательности на итерациях полного или модифицированного методов Ньютона-Рафсона при численном интегрировании уравнений движения методом Ньюмарка.
Матрица касательной жесткости СКЭ вычисляется подпрограммой MatrKTan.
Формат обращения к этой подпрограмме имеет вид:CALL MatrKTan( Schema, AL, DispL, EA, Elz, Ely, E, Ip,
Git, Indx, Indy, Indz, bAxForce, Tmp, MLen, N, KTM)
Описание параметров данной подпрограммы дано в табл.2.3
Таблица 2.3. Параметры подпрограммы MatrKTan
Параметр (размерность) | Описание параметра (тип переменной) |
Schema | Тип расчетной схемы (=1, 2, 3 - плоская расчетная схема, =4, 5 - пространственная расчетная схема). Этот параметр также определяет число локальных степеней свободы в стержневом элементе. (INTEGER*4) |
AL | Первоначальная длина стержневого элемента. (REAL* 8) |
DispL (N) | Вектор перемещений узлов элемента в его локальной системе координат. (REAL* 8) |
EA, Elz, Ely, E, Ip, Git | Жесткостные параметры поперечного сечения стержневого элемента: жесткость при растяжении, жесткости при изгибе в плоскостях XOY и XOZ, модуль упругости, полярный момент инерции, жесткость при кручении. (REAL* 8) |
Indx, Indy, Indz | Параметры закрепления концов стержневого элемента - наличие шарниров в узлах в начале и конце при повороте вокруг осей х, у, z, соответственно. Каждый параметр может принимать значения от О до 3: О - шарнир-шарнир, 1 - шарнир-заделка, 2 - заделка-шарнир, 4 - заделка-заделка. (INTEGER*4) |
bAxForce | Параметр определяющий способ вычисления осевой силы элемента (в матрице геометрической жесткости). Если параметр равен 1, то осевая сила вычисляется по нелинейной формуле (2.51). Если параметр равен 0, то осевая сила вычисляется по линеаризованной формуле (3.6) (LOGICAL*1) |
Tmp (MLen) | Рабочий массив. (REAL* 8) |
MLen | Количество элементов в верхнем треугольнике матрицы касательной жесткости стержневого элемента. (INTEGER*4) |
N | Количество локальных узловых степеней свободы в стержневом элементе. Зависит от типа расчетной схемы. (INTEGER*4) |
KTM (MLen) | Выходной параметр: вычисленная матрица касательной жесткости стержневого элемента. Вычисляется верхний треугольник, элементы матрицы хранятся в одномерном массиве по столбцам. (REAL*8) |
В подпрограмме MatrKTan вычисляется матрица геометрической жестко
сти и матрица жесткости, учитывающая большие перемещения узлов элемента 129
по формулам (2.50) и (2.48). Осевая сила, входящая в (2.50), вычисляется по уточненной нелинейной формуле (2.51), причем имеется возможность вычислять ее по общепринятой линеаризованной формуле, которая имеет вид
где- производные функций формы осевых перемещений узлов в на
чале и конце стержневого элемента по осевой координате х, uiи и j- осевые перемещения узлов в начале и конце стержня в его локальной системе координат.
Такая линеаризованная формула совпадает с формулами вычисления осевой силы, опубликованными в [65]. Недостатком линейной формулы (2.92) является то, что с ее помощью невозможно учесть непостоянство осевой силы по длине элемента при его изгибе.Интегрирование по дайне элемента в формулах (2.48) и (2.50) выполнялось численно с использованием квадратурных формул Гаусса-Лежандра в нормализованных оптимальных координатах. Порядок подынтегральных полиномов в указанных формулах для каждого элемента матриц зависит от вида расчетной схемы (плоская или пространственная, число локальных узловых степеней свободы в элементе), способа закрепления концов стержневого элемента (выбора соответствующих функций формы) и способа вычисления осевой силы. Максимальный порядок полиномов - 8, однако, большое количество элементов матриц имеют порядок полиномов 6 или 4, который может еще далее снижаться при разных условиях.
Поэтому для повышения эффективности вычислений был использован оптимальный алгоритм численного интегрирования матриц по длине СКЭ. Выбрано два множества весовых коэффициентов и нормализованных координат Гаусса-Лежандра с 3-мя и 6-ю оптимальными точками позволяющими точно интегрировать полиномы 6 и 12 порядка. Исходя из условий закрепления концов и способа вычисления осевой силы, в подпрограмме определяется максимальный порядок полинома элементов матрицы геометрической жесткости, что позволяет выбрать схему интегрирования с 3-мя или 6-ю точками.
Интегрирование осуществляется только по ненулевым элементам матрицы геометрической жесткости, которые определяются по виду расчетной схемы. Интегрирование матрицы [к] (2.48) в подпрограмме осуществляется поэлементно. Исходя из вышеназванных условий, для каждого элемента матрицы [к] определяется максимальный порядок полинома, что позволяет выбрать схему интегрирования с наименьшими вычислительными затратами. В некото
рых случаях элемент матрицы вычисляется аналитически, без интегрирования, например, когда элемент матрицы равен нулю или когда выражение подынтегрального полинома сильно упрощается.
Подобная оптимизация алгоритма позволяет значительно сократить вычислительные затраты при реализации математической модели по сравнению с неоптимальным алгоритмом - численным интегрированием всех элементов матриц, при котором порядок всех подынтегральных полиномов предполагается равным максимальному.Вектор упругих узловых сил реакции СКЭ вычисляется подпрограммой VectFN. Формат обращения к этой подпрограмме имеет вид:
CALL VectFN( Schema, AL, DispL, EA, Elz, Ely, E, Ip,
Git, Indx, Indy, Indz, N, FN )
где FN (N) - выходной параметр: вектор упругих узловых сил реакции стержневого конечного элемента. (REAL* 8). Описание других параметров подпрограммы дано в табл.2.3.
В подпрограмме VectFN вектор узловых сил реакции вычисляется по формуле (2.45). Численное интегрирование по длине элемента выполняется с помощью квадратурных формул Гаусса-Лежандра по 6-ти оптимальным точкам. Максимальный порядок подынтегрального полинома в формуле (2.45) равен 8.
Входным параметром подпрограмм MatrKTan и VectFN является вектор текущих перемещений узлов элемента в его текущей локальной CK - DispL. Для вычисления этого вектора используется методика учета больших поворотов и перемещений узлов в глобальной СК, разработанная в главе 2.
Необходимо отметить, что положение и ориентация локальной CK стержневого элемента изменяются каждый раз, когда изменяются координаты его узлов при деформировании стержня, а также при перемещении его как абсолютно твердого тела. Для вычисления вектора перемещений и поворотов узлов стержня в его локальной системе координат служит подпрограмма FNDDISP. Формат обращения к этой подпрограмме следующий:
CALL FNDDISP( Schema, NCoord, NLSIter, BarVZ, Coordl, Coord2, NodeCosl, NodeCos2, BarCos, Tl, T2, ТЗ, T4, DispL, N, NBvz, IErr ) Описание параметров дано в табл.2.4 (см. также табл.2.3)
Таблица 2.4. Параметры подпрограммы FNDDISP
Параметр (размерность) | Описание параметра (тип переменной) |
NCoord | Размерность пространства расчетной схемы (=2 - плоская схема; =3 - пространственная). (INTEGER*4) |
NLSIter | Номер итерации нелинейного анализа (=0 - начальная итерация, конструкция находится в недеформированном состоянии; > 1 - последующие итерации). (INTEGER*4) |
BarVZ (3) | Вектор, который совместно с осью недеформированного стержня задает плоскость XOZ, в которой лежит ось OZ поперечного сечения стержня. Используется только для пространственных расчетных схем и на начальной итерации. (REAL*8) |
Coordl (NCoord), Coord2 (NCoord) | Массивы с координатами узлов в начале и конце стержневого элемента на текущей итерации нелинейного анализа. (REAL*8) |
NodeCosl (NCoord*2), NodeCos2 (NCoord*2) | Массивы с направляющими косинусами, которые задают ориентацию узлов в начале и конце стержневого элемента относительно глобальной системы координат на текущей итерации нелинейного анализа. (REAL* 8) |
BarCos (NCoord*2+l) | Первый элемент массива содержит первоначальную длину стержневого элемента. Остальные элементы массива содержат направляющие косинусы, задающие локальную систему координат стержневого элемента в его недеформированном состоянии на начальной итерации. (REAL* 8) |
Tl (9), T2 (9), ТЗ (9), Т4 (9) | Рабочие массивы. (REAL* 8) |
NBvz (3) | Выходной параметр: Вектор задающий плоскость XOZ локальной системы координат стержня на текущей итерации нелинейного анализа. (REAL* 8) |
IErr | Выходной параметр: ненулевое значение этого параметра сигнализирует о произошедшей внутри подпрограммы ошибочной ситуации. (INTEGER*4) |
Подпрограмма FNDDISP вычисляет текущую ориентацию локальной CK СКЭ с помощью матриц ориентации узлов в начале и конце элемента и матрицы ориентации локальной CK стержня в его недеформированном состоянии.
Матрицы ориентации узлов изменяются от итерации к итерации при изменении координат узлов и их поворотов, матрица ориентации локальной CK стержня в его недеформированном состоянии остается постоянной. Вычисление новых матриц ориентации узлов на очередной итерации осуществляется по полученным на предыдущей итерации значениям приращений перемещений и поворотов узлов в подпрограмме NLNodesRecalc. В этой подпрограмме также пересчитываются текущие координаты узлов путем прибавления приращений перемещений узлов к координатам узлов на предыдущей итерации. Формат обращения к подпрограмме NLNodesRecalc имеет вид:CALL NLNodesRecalc( Schema, NPoint, NCoord, NLSIter, NDFStr,
CoordIt, NodeCos, Fix, Degree, DisVecIt, IErr)
Описание параметров подпрограммы дано в табл.2.5 (и табл.2.3, 2.4)
Таблица 2.5. Параметры подпрограммы NLNodesRecalc
Параметр (размерность) | Описание параметра (тип переменной) |
NPoint | Число узлов в расчетной схеме. (INTEGER*4) |
NDFStr | Число степеней свободы в расчетной схеме. (INTEGER*4) |
CoordIt (NCoord, NPoint) | Массив с координатами узлов на предыдущей итерации. На выходе из подпрограммы в массив помещаются пересчитанные координаты узлов на текущей итерации. (REAL*8) |
NodeCos (NCoord*2, NPoint) | Массив с направляющими косинусами, которые задают ориентацию узлов на предыдущей итерации. На выходе из подпрограммы в массив помещаются пересчитанные направляющие косинусы узлов на текущей итерации. (REAL* 8) |
Fix (NPoint) | Байтовый массив фиксации степеней свободы в узлах расчетной схемы. Первые 6 значащих битов элемента массива определяют наличие перемещений в соответствующих 3 линейных и 3 угловых степенях свободы соответствующего узла. (BYTE) |
Degree (NPoint) | Массив нумерации степеней свободы. Автоматически генерируется модулем пакета «COMPASS» для получения минимальной ширины ленты матрицы жесткости. (INTEGER*4) |
DisVecIt (NDFStr) | Массив, содержащий приращения перемещений и поворотов узлов системы в глобальной системе координат, полученные из решения системы уравнений на предыдущей итерации. Значения этого массива используются при пересчете координат и матриц направляющих косинусов узлов. |
Все рассмотренные выше 4 подпрограммы были включены в программный модуль GNLBar, предназначенный для вычисления матриц касательной жесткости, матриц масс и векторов внутренних узловых сил реакции СКЭ.
При выполнении статических расчетов внешнюю узловую нагрузку на систему необходимо постепенно увеличивать от нуля до заданного значения в течение нескольких итераций. Это позволяет удовлетворить условие малости приращений перемещений и поворотов на одной итерации решения системы нелинейных уравнений (2.38), а также позволяет достичь лучшей сходимости итераций и получить более точное решение. Для вычисления вектора невязки внутренних и внешних узловых сил в пакет «COMPASS» был включен программный модуль AsmbNRF. Модуль формирует глобальный вектор внутренних сил системы и определяет невязку внутренних и внешних узловых СИЛ C учетом пошагового увеличения значений внешних сил. При этом формула 133
где і - номер текущей итерации; Nli- параметр, равный числу шагов пропорционального приращения внешней нагрузки от нуля до заданного уровня; Ncs- параметр, равный числу итераций между приращениями внешней нагрузки. Иными словами, внешняя нагрузка постепенно увеличивается за Nuшагов на величинуна каждом шаге, и после каждого приращения нагрузки вы
полняется Ncsитераций для получения промежуточного решения.
2.8.