Главная > Разное > Метод конечных элементов для радиоинженеров и инженеров-электриков
<< Предыдущий параграф
Следующий параграф >>
<< Предыдущий параграф Следующий параграф >>
Макеты страниц

1.10. Пример программы

Методы, изложенные выше, воплощены в программу на языке Фортран, приведенную в конце данной главы (см. стр. 32). В этой программе используются только простейшие методы. Однако структура программы в основном идентична структуре многих очень больших комплексных программ, которые используются в настоящее время.

Пакет программ метода конечных элементов, описанный здесь, включает основную программу и несколько подпрограмм. Основная программа не содержит никаких выполняемых операторов, кроме вызова подпрограмм. Она связывается с подпрограммами через COMMON-блок, который вводится идентично во всех подпрограммах. Иными словами, массивы и другие данные размещаются в зоне памяти ЭВМ, одинаково доступной для всех частей программы. Практическая значимость такого расположения данных весьма велика: если требуется любое изменение (например, размерности массивов), то необходимо только перестроить СОМMON-блок соответствующим образом, а затем заменить COMMON-блок в каждой подпрограмме идентичной копией нового варианта. Никакого другого нового программирования и обширной проверки программы не потребуется.

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

одной этой подпрограммы и замене ее другой. Функции других подпрограмм, такие, как ввод исходных данных и решение уравнения, не затрагиваются.

Подпрограммы, вызываемые основной программой, в порядке их появления следующие:

MESHIN считывает исходные данные задачи и хранит их в разных массивах данных. Она выполняет очень ограниченное количество проверок. Более сложные программы этого типа отличаются количеством выполняемых проверок данных. Часто они являются наибольшими отдельными подпрограммами в программах метода конечных элементов, потому что число возможных ошибок в исходных данных очень велико. Имеются ли перекрывающиеся треугольники? Обозначены ли надлежащим образом все вершины треугольников как узлы? Являются ли они все геометрически различными? Является ли задача плохо поставленной (например, все потенциалы фиксированы)? Разрешима ли эта задача (например, имеются ли вообще какие-нибудь фиксированные значения на границах)?

SZERO обнуляет глобальные матрицы элементов.

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

ELEMBD вносит вклады матрицы отдельного элемента в глобальную матрицу коэффициентов в правую часть.

EQSOLV решает систему алгебраических уравнений, с тем чтобы получить неизвестные заранее потенциалы. Допускается перемешивание фиксированных и свободных потенциалов, как обсуждалось в разд. 1.8. Следовательно, нет необходимости в том, чтобы подпрограмме EQSOLV предшествовали перенумерация и перестройка уравнений и переменных. EQSOLV подробно описана в гл. 7.

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

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

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

<< Предыдущий параграф Следующий параграф >>
Оглавление