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

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

ется равномерная сетка. Другие значения п приводят к соответствующим неравномерностям. Значение п для оси х содержится в переменной POWERX. Хотя значения п в (6.1) и (6.2) всегда должны быть положительными, мы используем знак POWERX для выбора между формулами (6.1) и (6.2). Если POWERX > О, EZGRID использует формулу (6.1), если же POWERX < О, - (6.2) (где п = ABS (POWERX)). Неравномерность разбиения по оси у создается точно так же. Для задания степени неравномерности в этом направлении используется переменная POWERY.

По умолчанию POWERX и POWERY равны единице. Если вы не измените эти значения, то получите равномерную сетку. Обычно нежелательно использовать значения POWERX и POWERY больше 2 и меньше 0,5, так как это приводит к чрезмерной неравномерности сетки.

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

Для нашей вычислительной процедуры очень важно, чтобы разрывы в распределении теплопроводности, источниковых членов и в граничных условиях совпадали с гранями контрольных объемов. При произвольном расположении разрывов не всегда можно добиться этого при использовании равномерной сетки или сетки, рассчитываемой по (6.1) и (6.2). В этом случае можно разделить расчетную область по оси х (так же, как и по оси у) на различные зоны таким образом, чтобы их границы совпадали с разрывами. Тогда можно задавать число контрольных объемов и значение п для каждой зоны в отдельности. Процедура ZGRID обеспечивает построение именно такой сетки.

Для ZGRID требуются следующие входные данные: число зон NZX и NZ Y по осям X и у соответственно, а также размер зоны, число контрольных объемов и значения п для каждой зоны в отдельности. Эти величины задаются с помощью массивов

(XZONE(NZ),NCVX(NZ),POWRX(NZ),NZ = 1,NZX)

(YZONE(NZ),NCVY(NZ),POWRY(NZ),NZ=1,NZX). Используя эти данные, ZGRID рассчитывает XU (I), YV (J), L1 и Ml.

Переменные POWRX(NZ) hPOWRY(NZ) имеют тот же смысл, что и POWERX и POWERY в EZGRID, и по умолчанию равны единице. Число зон NZX и NZY должно быть не выше NZMAX, заданного в операторе PARAMETER файла COMMON.

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



процедуры PRINT. Хотя обычно PRINT вызывается тогда, когда уже достигнуто сошедшееся решение, в принципе эту утилиту можно вызывать в любое время. Удобным местом для вызова PRINT является OUTPUT в подпрограмме ADAPT, где желателен дополнительный вывод результатов, обеспечиваемый PRINT.

Вывод результатов процедурой PRINT включает в себя распечатку значений Х(1) и Y(J), предваряющую двумерные поля тех F(I,J,NF), для которых значение KPRINT (NF) отлично от нуля. Для каждого NF в целях идентификации поля F распечатывается заголовок TITLE (NF) длиной до 18 символов, задаваемый пользователем.

Если вы вызываете PRINT из ADAPT более 1 раза (например, для получения полей температуры в различные моменты времени в нестационарной задаче), то можно избежать распечатки каждый раз одних и тех же значений X (I) и У (J) . Для этой цели служит переменная KPGR. Обычно KPGR = 1, при этом вы получаете распечатку сеточных характеристик. При KPGR = О сетка не выводится на печать. Если вы вызываете PRINT несколько раз, то можете установить KPGR = О после первого вызова PRINT.

Процедура PLOT. Если необходимо записать результаты вычислений в файл для графической обработки или для других целей, то используется процедура PLOT. Она записывает в файл информацию о сетке и полях F (I, J, NF), для которых KPLOT (NF) имеет ненулевое значение. Имя файла задается пользователем как значение текстовой переменной PLOTF.

Процедура PLOT в CONDUCT разработана в целях создания файла для построения цветных графиков программой microGRAPH-ICS. Этот графический пакет может создавать цветные изображения полей переменных, сетки, изолиний любой скалярной величины, векторов и профилей любой переменной по любой координате. Все это может быть создано как для расчетной области целиком, так и для небольшого фрагмента, который вы захотите увеличить. Когда расчетная область содержит неактивные (заблокированные) участки, например ребра в сечении канала, то они прорисовываются с помощью программы microGRAPHICS, если в соответствующих контрольных объемах задать IBLOCK(I,J) = 1. По умолчанию значения IBLOCK (I, J) =0, что соответствует отсутствию заблокированных зон. Программа microGRAPHICS разработана для работы на IBM PC и совместимых с ними компьютерах, при этом требуются видеокарты EGA или VGA и соответствующий цветной монитор.

Если вы используете графический пакет, отличный от microGRAPHICS, то можете соответствующим образом изменить процедуру PLOT. Если же вы не собираетесь использовать какие-

Графнчсскнй пакет microGRAPHICS не входит в состав CONDUCT и лоставляегся фирмой Innovative Research, Inc. на коммерческой основе (Прим. ред.).



либо графические построения, то можете просто игнорировать все ссылки на PLOT в этой книге. В связи с этим при описании примеров процедура PLOT не рассматривается, .хотя в ADAPT включены операторы для вызова PLOT и определения массива IBLOCK(I, J) в тех местах, где это необходимо.

6.7. ПОДПРОГРАММА VALUES

Еще одной подпрограммой, реализованной в CONDUCT, является VALUES. Она вызывается из DEFLT и представляет собой удобную заготовку. Все ее функции могут быть выполнены с помощью простых арифметических выражений, операторов READ или, возможно, DATA. Подпрограмма VALUES задает в сжатой форме числовые значения нескольких величин. Она не может рассматриваться с точки зрения вычислительной эффективности, ее основная задача - обеспечивать удобство пользователю.

Из листинга VALUES видно как используются операторы ENTRY, которые позволяют входить в эту подпрограмму с различным числом аргументов. Так как аргументы должны быть определенного типа, представлено два набора точек входа. Входы, обозначенные DATA9, DATA8, .... используются только для вещественных переменных, а INTA9, INTA8. ... - только для целых.

Вызов вида

CALL DATA4 (А,2.5,G1,7.8,HG,1.2,В,5.0) выполняет те же функции, что и выражения А = 2.5 Gl= 7.8 HG= 1.2 В = 5. О

Эти функции иногда могут быть выполнены с помощью оператора DATA А, G1, HG, В/2 . 5, 7 . 8, 1 • 2, 5 . О/

Однако при использовании оператора DATA есть множество ограничений, состоящих из неисполняемого оператора и задания данных на стадии компиляции. Можно использовать DATA только в COMMON-блоках, объединенных в BLOCK DATA. Различные компиляторы налагают дополнительные ограничения на применение самих BLOCK DATA. Подпрограмма VALUES позволяет получить преимущества оператора DATA, избегая сопутствующих ограничений.

Числовая часть в названиях точек входа ENTRY, например DATA6 или INTA4, обозначает число переменных, которым будут присвоены значения. Хотя для полноты представлены DATA1 и INTA1, никакой выгоды от их использования нет. Вызов CALL DATA1(Q,3.7)





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