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

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

фектов прн сварке взрывом (Годунов с соавторами [1970]). Станет более расиространенным объединение решения гидродинамических задач с исследованием других физически важных явлений. Первыми образцами подобных исследований являются объединение гидродинамики с рассмотрением трехмерной абляции, изменения формы тела и внутренней теплопроводности (Поипер с соавторами [1970]) и с продольными колебательными движениями тела (Томпсон [1968], Трудно и Уолитт [1969]), причем последняя задача осложняется ненрименн-мостью преобразования, связанного с обращением потока (см. Лайтхилл [1954]).

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



Глава 7

РЕКОМЕНДАЦИИ ПО ПРОГРАММИРОВАНИЮ, КОНТРОЛЮ И ОБРАБОТКЕ ИНФОРМАЦИИ

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

7.1. Составление программы для ЭВМ

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

1. Опытную программу составляйте сами.

Из всех приведенных здесь рекомендаций эта, возможно, вызовет наибольшее неудовольствие, но мы настаиваем на ней. Процитируем книгу Хемминга [1962] «Глава + Г Искусство вычислений для исследователей и инженеров»: «Целью вычислений является проникновение в суть явлений, а не получение чисел» и далее: «Маловероятно, чтобы большие физические идеи зародились в мозгу .профессионального программиста, который лишь тем и занимается, что программирует задачи». Опыт работы автора над многомерными задачами гидродинамики показывает, что наиболее тонкие аспекты задачи, в частности вопросы, связанные с постановкой граничных и начальных



) Взаимоотношения между исследователем в области вычислительной гидродинамики и программистом напоминают взаичоотио1иения между авиаконструктором II чсргеАпшчом, юмористически описанные К. Д. Вудом в его книге, посвяшепиой авиационно-космическим проектам

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

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

2. Составление рабочей программы поручайте профессиональному программисту, если имеется такая возможность.

3. При составлении опытной программы используйте модульное программирование.

Модульное программирование обладает тем иреимуше-ством, что каждая подпрограмма (например, SUBROUTINE или FUNCTION в Фортране) может отлаживаться отдельно и даже может быть составлена разными людьми.

4. При составлении рабочей программы избегайте модульного програмлшрования.

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



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