Главная Журналы менных и их значения, задаваемые по умолчанию, приведены в прил. 3. Все эти значения и устанавливаются в подпрограмме DEFLT. Процедура READY. Функция READY заключается в расчете и сохранении значений величин, представленных в § 5.1, 5.2. В памяти сохраняются только одномерные геометрические характеристики. Величины вида YCVR (J) *XCV (I), хотя и полезны для дальнейшей работы, не сохраняются, так как для этого требуется введение двумерного массива. Унифицированное использование трех систем координат для MODE = 1, 2 и 3 становится возможным благодаря должному определению обобщенных геометрических характеристик, сделанному в READY. Ни в одном месте программы не нужно использовать оператор IF при программировании различных формул для каждой системы координат. READY выполняет также еще одну функцию. Эта подпрограмма печатает заголовок с указанием используемой системы координат. Этот заголовок довольно важен, так как, если вы случайно используете не ту систему координат, сразу будете предупреждены. READY распечатывает текстовую переменную HEADER, которая содержит представленный пользователем заголовок задачи длиной до 64 символов. 6.4. ПОДПРОГРАММА HEART Самая важная вычислительная часть CONDUCT содержится в подпрограмме HEART. Здесь рассчитываются коэффициенты дискретных аналогов и производятся модификации граничных условий. Взгляд, брошенный на подпрограмму HEART, прежде всего наткнется на внешний оператор цикла DO с параметрами N=1, NFMAX, предназначенный для организации последовательных вычислений каждой зависимой переменной. Внутри цикла производится вызов подпрограммы PHI, где пользователь определяет значения ALAM (I, J), GAM (I, J), SC (I, J), SP (I, J) И индикаторы граничных условий КВС. В заключение вызывается подпрограмма SOLVE для итерационного решения системы алгебраических уравнений. В конце HEART увеличиваются значения TIME и ITER, а если ITER достигает своего предельного значения, определяемого переменной LAST, то KSTOP присваивается значение единицы. Познакомившись с CONDUCT, вы должны более подробно изучить подпрограмму HEART. Только тогда вы полностью поймете, как рассчитываются коэффициенты дискретных аналогов. 6.5. ПОДПРОГРАММА SOLVE Задача подпрограммы SOLVE заключается в итерационном реше-H1UI системы линейных алгебраических уравнений вида (5.14). Алгоритм решения, реализованный в SOLVE, описан в § 5.6. Кроме повторов алгоритма нужное число раз в конце SOLVE реализованы некоторые дополнительные функции. Так, например, производится вычисление неизвестных значений ф на границе, когда индикатор граничных условий КВС = 2. Следует отметить, что алгоритм решения в SOLVE оперирует значениями ф только во внутренних точках. Когда решение получено, неизвестные значения ф на границе находятся из уравнений вида (5.44). В этой подпрограмме рассчитываются также плотности диффузионных потоков на границах, которые затем сохраняются в массивах FLUXI1(J,NF), FLUXL1 (J, NF), FLUXJl (I, NF), FLUXMl (I, NF). Это позволяет выводить их на печать, а также производить с ними другие действия. Используется следующее соглашение о знаках: поток положителен, если он поступает в исследуемую область. Как вам уже известно, в подпрограмме DEFLT большому числу переменных по умолчанию присваиваются некоторые значения. Однако некоторые переменные должны после каждого их использования принимать первоначальное значение. Такими переменными являются, например, источниковые члены SC(I, J) и SP(I, J), все параметры граничных условий КВС, FLXC и FLXP и др. Этим переменным присваиваются их значения по умолчанию в конце подпрограмме SOLVE (заметим, что SC и SP эквивалентны CON и АР соответственно. В неизменяемой части программы имена SC и SP не используются). 6.6. ПОДПРОГРАММА TOOLS Описанные выше подпрограммы являются важными составляющими неизменяемой части CONDUCT. Подпрограмма TOOLS - это набор необязательных процедур, облегчающих пользователю работу. Они не вызываются из неизменяемой части. Можете вызывать их из подходящих мест подпрограммы ADAPT. Подпрограмма TOOLS состоит из четырех процедур: EZGRID, ZGRID, PRINT и PLOT. Процедура EZGRID. Пользователь должен задать значения массивов, характеризующих положения граней контрольных объемов XU (I) и YV (J). В общем случае сетка может быть неравномерной и конкретное распределение величин XU (I) и YV( J) зависит от особенностей задачи. Однако часто бьшает необходимо задать равномерную сетку так, чтобы все контрольные объемы имели одинаковые размеры как по оси X, так и по оси у. Это может быть достигнуто вызовом EZGRID из процедуры GRID, входящей в состав подпрограммы ADAPT. Входные данные, необходимые для EZGRID, состоят из значений переменных XL и YL, соответствующих размерам расчетной области по осям X и у, и из желаемого числа контрольных объемов. При этом с помощью переменной NCVLX задается число контрольных объемов в направлении координаты х, а с помощью переменной NCVLY - соответствующее их число в направлении координаты у (для MODE = 3 переменная XL задает размер области по углу, рад). На выходе из процедуры EZGRID определены значения переменных L1, Ml и координаты граней контрольных объемов, хранящиеся в массивах XU (I) и YV (J). Процедура EZGRID может быть использована и для введения некоторых простых неравномерностей при построении сетки. С помощью формулы xu(i) xl ll-2 (6.1) где п - положительное число, можно получить соответствующую неравномерную сетку при различных п. Зависимости, получаемые согласно (6.1), изображены на рис. 6.1. При п > 1 сетка оказывается мельче около левой границы, а вблизи правой границы она становится грубой и почти равномерной. При п < 1 сетка грубая у левой границы и мелкая и почти равномерная у правой границы. Такое разбиение у левой и правой границ может быть изменено на противоположное, если использовать формулу xu(i) xl = 1- 1-2 ll-2 (6.2) Зависимости, получаемые согласно (6.2), показаны на рис. 6.2. В процедуре EZGRID координаты граней XU (I) рассчитываются по (6.1) и (6.2). При п = \, что задается по умолчанию, рассчитыва- Рис. 6.1. Положения граней контрольных объе.чов при использовании формулы (6.1) Рис. 6.2. Положения граней контрольных объемов при использовании формулы (6.2) 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 |