Запорожец  Издания 

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 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 [ 153 ] 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199

па каждом шаге по времени (см., однако, ниже рекомендацию 13).

В этой связи необходимо отметить пренмушество функций-операторов в Фортране. Они применяются редко, по-видимому, потому, что их преимушества недостаточно широко известны. Функция-оператор отличается от SUBROUTINE и FUNCTION тем, что не требует времени на вызов. Операционная система просто подставляет этот арифметический оператор в обращение к функции. Например, рассмотрим вычисление числа Маха М в узловой точке (I,J), причем полную величину скорости в этой точке обозначим через VMAG, а температуру - через T(I,J). Функцию-оператор для вычислення скорости зг-ука обозначим VS(K, L) ... . Тогда

VS(K, L) = crSQRT(T(K, L)) REALM

Cl = ...

M = VMAG/VS(I, J)

Это «обращение» (не выполняемое) к функции-оператору VS(KL) реализуется транслятором но типу следующей про-i раммы:

REALM

С1 = ...

M = VMAG/(C1*SQRT(T(I, J)))



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

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

В более сложных случаях функции-оиераторы могут вызывать другие функцни-оиераторы, и соответствующие перфокарты можно извлечь из колоды и отладить отдельно. Этим мол<но достигнуть значительной экономии усилий на ирограммирова-пие, перфорацию и отладку).

5. На ранних стадиях составляйте самую частную программу.

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

6. На ранних стадиях составляйте самую простую программу.

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

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



все четыре уравнения должны решаться одновременно, и поэтому здесь отладка более затруднительна.

7. При расчете течения сжимаемой жидкости не отправляйтесь от решения соответствуюией задачи о течении несжимаемой жидкости.

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

Это замечание относится к полным уравнениям Навье - Стокса. Структуры решений уравнений пограничного слоя для несжимаемой и сжимаемой жидкостей более близки.

8. Разбивайте программу на блоки и снабжайте блоки контрольными выдачами.

Как отмечает Хемминг [1962], расиространенпой ошибкой является путаница в последовательности проведения расчетов. С другой стороны, автор настояшей книги не слишком высоко расценивает формализованные блок-схемы программ. По нашему опыту обычно такие блок-схемы составляются после раз-раббтки самой программы на стадии подготовки отчетности по ней, а не программа составляется по блок-схемам. За исключением высших уровней организации программы, подробную блок-схему, как правило, труднее понять, чем саму программу, если последняя снабжена подробными комментариями.

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

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

Оценка сроков решения вычислительной задачи не входит в число вопросов, в которых искушен автор настояшей книги, хотя он и запомнил широко известное изречение: «Это займет гораздо больше времени, чем вы думаете». Однако здесь могут помочь оценки для отдельных этапов работы: разработки первоначальной (очень частной) программы, отладки более общей программы, проведения методических расчетов и тестов, получения результатов, обработки полученной информации и т. д.



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 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 [ 153 ] 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199