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

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

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

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

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

18. Исследуйте устойчивость и итерационную сходимость в широком интервале изменений параметров.

Хотя бы на грубой сетке проверьте устойчивость расчетов в интересующих вас пределах изменения величин М, Re и т. д. (хотя это не всегда возможно в случае зависимости устойчиво-



сти от размера ячейки сетки, как в условии устойчивости ио сеточному числу Рейнольдса).

При проверке устойчивости расчета эволюционной задачи может быть полезен способ, предложенный Миллером [1967]. Он предлагает проводить параллельно два расчета при начальных условиях, отличающихся на величину, в некотором смысле малую, но значительно больщую, чем ощибки округления. О возникновении неустойчивости можно судить по величине некоторого функционала (разности квадратов зависимых переменных) для двух таких параллельных расчетов. Заметим, однако, что этот прием не дает возможности отличить гидродинамическую неустойчивость от численной.

19. Не списывайте все неудачи на нелинейную неустойчивость.

Когда расчет протекает неудовлетворительно, обычно роль «козла отпущения» достается нелинейной неустойчивости. На нее списывают и ощибки программирования, и неверную постановку граничных условий, и пепсследованную линейную неустойчивость. В действительности настоящая нелинейная неустойчивость встречается сравнительно редко; единсгвенньшн известными ее примерами являются ограниченные осцилляции около сильной ударной волны ) и трудность при «комбинированном итерировании» уравнений для и (см. разд. 3.1.22). Чаще нелинейности подавляют ощпбки п действительные неустойчивости за счет механизма ограничения роста амплитуды.

Можно иногда избежать настоящей нелинейной неустойчивости (а иногда и затущевать следствия ошибок в программе), задавая лучшие начальные условия, которые могут быть получены менее точным, но более устойчивым методом. Так, Лапидус [1967] для получения хороших начальных условий применил просто первый шаг (схему Лакса) двухшаговой схемы Лакса - Вендроффа (разд. 5.5.6).

20. Тшательно проверяйте итерационную сходимость конечно-разностных уравнений.

Обычно это можно делать на очень грубой сетке. Как было указано в разд. 3.4 и 5.8, строгих критериев итерационной сходимости не существует. Однако на грубой сетке часто можно достигнуть полной сходимости (т. е. нулевых изменений величин) конечно-разностного решения в пределах машинной точности. (Это возможно не для всех схем, поскольку могут возникать незатухающие колебания малой амплитуды.) Если второй

1) Расчеты уравнения Бюргерса для невязкой жидкости, проведенные Штеттером [1970], указывают на устойчивость, обусловленную местным изменением характеристического направления в конечно-разиостных уравнениях.



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

21. Используйте любую информацию о решении для проверки.

Эта рекомендация дана Хеммиигом [1962]. Например, заранее известные условия симметрии обычно применяются для уменьшения размеров расчетной области задачи. Однако при начальной проверке иа грубой сетке развитие симметричной картины из несимметричных начальных условий может быть хорошим тестом задачи. Аналогично, для проверки апироксима-циоиной сходимости можно контролировать однозначность давления в угловой точке (разд. 3.5.3). Читателю могут встретиться и другие аналогичные примеры.

22. По возможности проверяйте точность расчетов сравнением с точными решениями.

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

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

Для исследования устойчивости при постановке граничных условий на входной и выходной границах П. Дж. Тейлор [1968] рассмотрел задачу о мгновенном начале движения бесконечной плоской пластины, так называемую задачу Релея или первую задачу Стокса (см. Шлихтинг [1968]). Решение имеет вид

«(,,0 = f/.erfc(),

где erfc - дополнительный интеграл вероятности ошибки. Кроме точного решения задачи о мгновенном начале движения пластины имеется еше точное автомодельное решение при заданной непрерывной зависимости скорости от времени U = at. Это решение имеет вид U = atF(r\), где ц = у/(2 л/vt), а F(ti)-ре-



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