Главная  Журналы 

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 [ 20 ] 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99

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

Такие подпрограммы, как DEFRD и ADAPT, являются совокупностью некоторого числа процедур, имена которых вписаны в соответствующие прямоугольники на рис. 4.1. Эти совокупности созданы новым способом использования оператора ENTRY. В них все составные части начинаются с ENTRY и для всех практических целей могут использоваться как независимые подпрограммы. Совокупности как таковые никогда не вызываются по их именам, вызываются только составляющие их процедуры. Таким образом, в программе нигде не используется оператор вызова CALL ADAPT, в то время как CALL BEGIN обеспечивает доступ к соответствующей части подпрограммы ADAPT. За исключением VALUES, ни одна из подпрограмм не имеет аргументов, вся необходимая информация передается через блоки COMMON. Применение оператора ENTRY для соединения нескольких процедур в одну подпрограмму уменьшает число блоков COMMON, позволяет различным частям подпрограммы использовать одни и те же переменные без пересылки их через COMMON и сохраняет соответствующую физическую информацию или математические операции.

4.2. ПОДПРОГРАММЫ НЕИЗМЕНЯЕМОЙ ЧАСТИ

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

В подпрограмме DEFLT определяются значения «по умолчанию» для большого числа важных переменных. Будет полезно хорошо знать эти значения. Тогда при определении деталей задачи не нужно будет присваивать значения некоторым параметрам, если приемлемы их значения по умолчанию. Например, если в задаче внутреннее выделение тепла принять равным нулю, то вы не должны задавать значение источникового члена, оно по умолчанию равно нулю. Все значения параметров, задаваемые по умолчанию, приведены в прил. 3.

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



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

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

Так как обычно не требуется вносить какие-либо изменения в неизменяемую часть программы, то желательно скомпилировать эту часть 1 раз и просто использовать скомпилированную версию (т.е. объектный код) со всеми приложениями CONDUCT.

4.3. ПОДПРОГРАММЫ АДАПТИРУЕМОЙ ЧАСТИ

Подпрограмма ADAPT содержит четыре процедуры: GRID, BEGIN, OUTPUT и PHI. Из них GRID и BEGIN вызываются только 1 раз и обеспечивают соответственно расчет геометрических характеристик сетки и реализацию начальных условий. OUTPUT вызывается 1 раз на каждой итерации. Эта процедура реализует вывод необходимых результатов на печать.

Процедура PHI является наиболее часто вызываемой частью ADAPT. Она также является наиболее важной и вызывается несколько раз за одну итерацию - по разу для каждого решаемого уравнения. Основная ее функция - задать соответствующую информацию о величинах Х,ГнБ [см. (3.6)] для каждой переменной ф; здесь также задаются некоторые детали граничных условий для каждой переменной ф.

Этот краткий обзор программы CONDUCT должен обеспечить необходимый фундамент для рассмотрения деталей численного анализа, используемых обозначений и применения программы.



Глава 5

ЧИСЛЕННАЯ СХЕМА И ЕЕ РЕАЛИЗАЦИЯ

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

5.1. РАСЧЕТНАЯ СЕТКА И КОНТРОЛЬНЫЕ ОБЪЕМЫ

Как мы видели в гл. 2, дифференциальные уравнения вида (3.6) решаются преобразованием их в алгебраические уравнения, называемые дискретными аналогами. Эти уравнения содержат в качестве неизвестных значения ф в выбранных дискретных местоположениях, которые образуют сетку и называются расчетными точками. Вокруг каждой расчетной точки строится контрольный объем, и дискретные аналоги получаются интегрированием уравнения (3.6) по таким контрольным объемам.

Построение сетки. Основные принципы построения сетки были приведены для одномерного случая в п. 2.5.7. В CONDUCT применяется рассмотренный выше способ В. Построение контрольных объемов и расчетной сетки в двумерном случае показано на рис. 5.1. Сначала расчетная область разбивается на контрольные объемы, грани которых показаны штриховыми линиями. Затем в геометрические центры контрольных объемов помещаются расчетные точки. На рис. 5.1 сплошными линиями показаны линии сетки, черные точки соответствуют положениям расчетных точек, типичный контрольный объем заштрихован. Видно, что некоторая расчетная точка «сообщается» с четырьмя соседними через четыре грани контрольного объема. Одна из граней приграничного контрольного объема совпадает с границей расчетной области, а граничная точка помещена в центр грани контрольного объема. Удобно представлять контрольный объем нулевой толщины для граничной точки.

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





0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 [ 20 ] 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99