Федор Пинежанинов fedor@pnp.usr.pu.ru
Павел Пинежанинов pavel@pnp.usr.pu.ru
В предыдущей статье "Базисные функции для конечных элементов" предложена технология построения базисных функций для конечных элементов на основе преобразования некоторого исходного конечномерного семейства линейно независимых функций. В статье "Свойства базисных функций" предложена схема анализа вычислительных свойств систем функций, и приведено множество конечных элементов.
Построение базисных
функций осуществляется на основе
выражения:
где
семейство
-
исходная система функций, а
коэффициенты
определяются
из обращения матрицы значений
исходной системы в узлах
конечного элемента ( столбец
соответствует узлу). В качестве
исходной системы обычно брали
простейший полиномиальный базис
типа:
![]()
![]()
Эта чисто алгебраическая технология неплохо работает на большинстве элементов, однако, на некоторых элементах дает сбои: на треугольном кубическом с 9 узлами в плоском случае, и на 32 узловом кубическом в трехмерном случае. Есть проблемы и в некоторых других случаях, например, некоторых комбинациях линейно –квадратично -кубичных трехмерных элементов.
В чем проблема? Ведь исходная система функций линейно независима - это очевидно! Обратим внимание, что базисные функции мы строим на основе обращения матрицы, а для этого необходимо, чтобы определитель этой матрицы был ненулевой, другими словами - строки и столбцы матрицы значений исходной системы на узлах элемента должны быть линейно независимы тоже. Это свойство системы функций иногда называют униразрешимостью или унисольвентностью.
Сформулируем это свойство несколько иначе: Пусть в функциональном пространстве система функций образует подпространство, тогда для существования в этом подпространстве конечно элементного базиса на заданном семействе узлов необходимо и достаточно линейной независимости векторов сужения этих функций на семейство этих узлов. При этом надо иметь в виду, что вектора сужения можно построить двояко: или в виде значений конкретной функции на множестве узлов, или в виде значений семейства функций в конкретном узле.
Как же справляться с этой проблемой? В первом случае, описанном выше, еще можно догадаться и искусственным способом избавиться от проблемы, как это и сделано в статье "Базисные функции для конечных элементов", но рекомендовать её как общую процедуру нельзя. Нужен другой способ построения исходной системы функций, который позволял бы более эффективно добиваться ее униразрешимости . Поиску и проверке такой технологии и посвящена эта статья.
В работах Зенкевича и Галлагера для построения базисных функций квадратичного элемента предлагается следующий подход - "Сначала, взяв соответствующий многочлен Лагранжа второй степени по одному направлению и умножив его на линейную функцию по другому направлению, непосредственно найдем базисные функции для узлов в серединах сторон. Это позволяет получить на сторонах многочлен нужной степени, и автоматически будет выполнено условие, что ассоциируемая с конкретным узлом базисная функция должна принимать значение единица в этом узле и равняться нулю во всех других узлах ". Для построения узловых узлов этими авторами предлагается использовать линейную комбинацию базисных функций для 4 узлового элемента и построенные функции деленные пополам, для обнуления значений по серединам ребер.
Для единичного квадрата
исходную систему функций можно
взять в обычном алгебраическом
виде
, но
возьмем иначе - в виде произведений
линий, окружающих, но не включающих
узел, и так поступим для каждого
узла.


-256.

1
Видим, что при выборе исходного семейства как произведений прямых линий окружающих узлы, но не включающих их в себя и использования алгоритма предложенного в статье "Базисные функции для конечных элементов" дает результаты совпадающие с результатами статьи "Свойства базисных функций". В дальнейшем подобный способ построения исходного семейства будем называть геометрическим или ,методом окаймления узлов, чтобы подчеркнуть его логическую основу с одной стороны и отличать его от обычного полиномиального или алгебраического с другой стороны.
Аналогичный прием описали Митчелл и Уэйт для построения базисных функций треугольника: они проводили обнуляющие прямые, включающие в себя все узлы, кроме того, для которого строится базисная функция и назвали эту процедуру геометрическим методом построения базисных функций.
Далее попробуем применить этот подход к построению базисных функций для элементов с точками на гранях элементов при этом будем полностью обнулять узлы в окрестности точек на гранях, а для угловых узлов будем обнулять только грани не содержащие этот узел. Это можно сделать, так как базис в нашем алгоритме строится как линейная комбинация исходного семейства и, следовательно, автоматически выполнится предложение Зенкевича и Галлагера. Проверим это на классическом квадратичном элементе:



4096.

1

-64.
{0,0,0,0,0,0,0,0}
Вычисление последнего выражения Simplify[A-Bn] показывает, что разные исходные семейства дают один и тот же базис. Обратим внимание, что определитель матрицы значений исходного семейства принимает разные значения, что внушает некоторый оптимизм, так как возможно удастся избавиться от его нулевых значений в некоторых нетривиальных случаях.
Продолжим рассмотрение для кубичных элементов:




1
В дальнейшем нам часто надо будет вычислять прямую линию проходящую через две точки, поэтому оформим это в виде функции F(x,y)=0 и проверим это:

![]()


1
{0,0,0,0,0,0,0,0,0,0,0,0}
Пространство C0 Число обусловленности = 83.9878 Теряем цифр 1.92422
Пространство C1 Число обусловленности = 293.435 Теряем цифр 2.47339
Видим, что и в этом случае базисные функции построенные на основе алгебраического подхода и геометрического совпадают. Отметим, что смежную точку мы обнуляли линией параллельной осям координат Fline[ 1/3,-1,1/3,1],
Как показывает следующий пример можно использовать не обязательно такие линии, а например перекрестно для сохранения симметричности исходного базиса Fline[ 1/3,-1,-1/3,1]. Интересно, что оба базиса имеют примерно одинаковые числа обусловленности, поэтому сложно предпочесть один другому.


1
Пространство C0 Число обусловленности = 53.7616 Теряем цифр 1.73047
Пространство C1 Число обусловленности = 297.435 Теряем цифр 2.47339
Попробуем эту технологию на сложном кубично - треугольном элементе, для которого нет очевидного аналога в алгебраической системе функций:




-64 / 387420489

1
Пространство C0 Число обусловленности = 18.0674 Теряем цифр 1.25689
Пространство C1 Число обусловленности = 1990.18 Теряем цифр 3.29889
![]()
{0,0,0,0,0,0,0,0,1}
Еще один вариант - когда линии, обнуляющие смежные узлы сходятся в центре треугольника. Тоже не плохо получается и выбор между двумя системами базисных функций сделать непросто:

-64 / 282429536481

1
Пространство C0 Число обусловленности = 18.0674 Теряем цифр 1.25689
Пространство C1 Число обусловленности = 2600.38 Теряем цифр 3.41502
Подведем некоторые итоги - для построения базисных функций, есть две технологии: алгебраическая и геометрическая. При этом вычислительные эксперименты показывают, что геометрическая технология, или окаймление прямыми линиями, обладает большей наглядностью и легко справляется с проблемами, которые для алгебраической технологии сложны и требуют различных ухищрений.
В двухмерном случае для построения исходного семейства использовались прямые линии окружающие, но не включающие в себя узел на середине стороны. Естественным аналогом линии в трехмерном пространстве является плоскость, поэтому исходную систему функций будем строить как произведение плоскостей окружающих узел, но не включающих его ни в одну из них.
В дальнейшем нам часто надо будет вычислять плоскость, проходящую через три точки, поэтому оформим это в виде функции и проверим это:

![]()



20

-281474976710656

1
Пространство C0 Число обусловленности = 227.721 Теряем цифр 2.3574
Пространство C1 Число обусловленности = 207.733 Теряем цифр 2.31751
Сравнивая с аналогичным элементом, полученным из алгебраического исходного семейства в статье "Свойства базисных функций", видим, что получили такие же базисные функции, то есть метод окаймления или геометрический метод построения исходного базиса пространства работает и в трехмерном случае. В случае линейных и квадратичных элементов все однозначно. А в случае кубичных элементов, как и в плоском случае, есть выбор для проведения плоскости, обнуляющей соседний на ребре узел.
На трехмерном кубичном элементе при использовании алгебраического исходного семейства возникли проблемы. Посмотрим как будет выглядеть ситуация с методом окаймления:



32

4.6905e27

1

Пространство C0 Число обусловленности = 825.925 Теряем цифр 2.91694
Пространство C1 Число обусловленности = 861.046 Теряем цифр 2.93503
Видим, что метод окаймления узлов плоскостями дает и в этом случае прекрасные результаты, и получаются базисные функции с неплохим числом обусловленности для такого большого числа узлов.
Чтобы не создавалось впечатления что все проблемы построения базисных функций решены, и жизнь медом не казалась, предлагаю читателю попробовать построить базисные функции для такого элемента и в случае удачи прошу сообщить мне:


Конечные элементы - важный инструмент прикладной математики и можно еще много написать о их различных вариантах. Цель этих трех статей была описать, что такое конечный элемент с математической точки зрения - набор точек в пространстве, набор базисных функций и правило линейной интерполяции. Предложен способ построения базисных функций на основе некоторого исходного семейства функций, способ анализа вычислительных свойств и что самое интересное - метод окаймления узлов плоскостями для построения исходных семейств функций. Еще, наверное, стоило показать как использовать окаймление для построения элементов с производными в качестве степеней свободы, но, по моему мнению, это почти очевидно - добавить еще плоскостей некоторым разумным образом. Это же касается и введения внутренних мод или узлов на поверхности. В статьях в качестве примеров использовались элементы сирендипова семейства как наиболее эффективные, по мнению большинства авторов с одной стороны, а с другой хотелось показать, что удачу - которой мы обязаны за это семейство можно и организовать, если очень захотеть и не лениться. Как говорил Александр Васильевич Суворов "везенье, везенье - надо же и уменье...".
Если понадобится использовать базисные функции при программировании - вспомните о чудесных функциях программы Mathematica: CForm и FortranForm и аналитическом дифференцировании, это здорово облегчает нелегкую жизнь программиста.
Следующие статьи будут посвящены параметрическим преобразованиям элементов, дифференцируемым многообразиям или ансамблям элементов, учету различных условий на поведение интерполируемых на многообразиях функций и другим смежным вопросам.
Если у читателя возникнут какие-то вопросы по обсуждаемому материалу, то обязательно постараюсь ответить.
Галлагер Р. Метод конечных элементов. Основы: Пер.с англ.-М.:Мир,1984.
Зенкевич О.,Морган К. Конечные элементы и аппроксимация: Пер.с англ.-М.:Мир,1986.
Митчелл Э.,Уэйт Р. Метод конечных элементов для уравнений с частными производными: Пер.с англ.-М.:Мир,1981.
Санкт-Петербург, март 2000 года