ПОИСК Статьи Чертежи Таблицы Отладка и контроль из "Вычислительная гидродинамика " Следует предостеречь от вычисления максимально допустимого шага на каждой итерации по времени. Для задач, в которых параметры течения пе слишком быстро меняются во времени, его достаточно находить один раз за десять итераций или что-нибудь около этого. Это соображение может существенно убыстрить расчет задачи. Для некоторых задач максимально допустимый размер шага по времени можно оценить аналитически и тем самым полностью избежать его вычисления. [c.479] Программу необходимо отладить, т. е. исправить в ней ошибки программирования программу и использованные в ней схемы необходимо проверить на устойчивость, сходимость, точность и т. д. В том случае, когда нет диагностики ошибок от транслятора и программа выдает разумные числа, эти две работы часто не разграничиваются. [c.479] Очевидно, что проверить точность схемы на грубой сетке нельзя. Однако устойчивость и сходимость решения конечно-разностных уравнений обычно можно проверить на крайне грубой сетке, лишь бы она содержала хотя бы одну стандартную внутреннюю узловую точку. Для многих задач качественно разумные результаты, пригодные для проверки устойчивости, итерационной сходимости, постановки граничных условий, выбора вариантов, процедур вывода информации и т. д., могут быть получены на сетке 4X4 всего с 9 внутренними точками. Избегайте болезненного пристрастия к десятичной системе. Не обязательно размещать в пограничном слое сакраментальные десять точек часто для отладки достаточно даже двух или одной точки. [c.479] Если бы все пользователи в основных вычислительных центрах стали отлаживать свои задачи на максимально грубых сетках, то, возможно, высвободились бы машинные мощности, эквивалентные пуску ЭВМ следующего поколения. [c.479] Что касается тех аспектов величины времени прохождения программы, которые не зависят непосредственно от пользователя, то он по крайней мере должен понуждать администрацию вычислительного центра к его сокращению. Вообще говоря, решение человека серьезно работать в области вычислительной гидродинамики или получать квалификацию в этом паправле-нии должно в значительной степени основываться на величине времени прохождения программ и общего состояния машинного обеспечения в месте предполагаемой работы. [c.480] Когда итерации перестают сходиться или в результате получаются явно неверные числа и можно ожидать ошибок в программе, эти ошибки иногда могут быть локализованы с помощью выключения тех или иных членов уравнений. Например, для проверки поведения пограничного слоя можно в программе сначала полагать А = О и затем подкладывать перфокарту А (диффузионные члены в направлении у). [c.480] Для выявления нелинейной неустойчивости можно обойти решение уравнения Пуассона для функции тока с помощью линеаризации уравнения переноса вихря. Граничные условия могут замораживаться . В уравнениях, описывающих течение сжимаемой жидкости, любая из четырех зависимых переменных может выключаться или рассчитываться независимо, однако здесь надо обращать внимание на неявную зависимость их расчета через уравнение состояния и через переход от консервативных к неконсервативным переменным. Пробный расчет задачи с == О часто выявляет ошибки, связанные с переходом от консервативных переменных к пекопсервативным, однако этот способ неприменим в схемах типа схемы Лакса (разд. 5.5.4). [c.480] Эта рекомендация кажется очевидной, однако на практике эпдерживаться из-за огромного числа воз- ногда не проверяются полностью даже основные варианты по отдельности, например не проверяются все варианты химических реакций, не говоря уже о сочетаниях этих вариантов со всеми вариантами граничных условий, со всеми вариантами зависимости вязкости от температуры п т. д. В этой связи следует заметить, что чрезвычайная сложность программы (или схемы) влияет на ее правильность или по крайней мере на доверие к ней, поскольку может оказаться, что все ошибки в программе практически невозможно найти. Можно даже сказать, что время отладки подобных программ бесконечно велико. В процессе использования большинство ошибок обнаруживается и исправляется, однако одновременно обычно и добавляются варианты условий, и меняются имевшиеся, что может вести к возникновению новых ошибок, которые не обнаруживаются до тех пор, пока прп дальнейшей эксплуатации программы не встретится соответствующая комбинация условий. Даже без добавления новых вариантов проведенное наспех ис-правление одной обнаруженной ошибки может привести к внесению новых ошибок, которые нельзя сразу обнаружить. Автор настоящей книги в течение пяти лет наблюдал эксплуатацию тщательно разработанной программы со сложной логикой и с большим числом условий для расчета баллистических траекторий, в которой регулярно обнаруживались серьезные ошибки. [c.481] При проверке устойчивости расчета эволюционной задачи может быть полезен способ, предложенный Миллером [1967]. Он предлагает проводить параллельно два расчета при начальных условиях, отличающихся на величину, в некотором смысле малую, но значительно большую, чем ошибки округления. О возникновении неустойчивости можно судить по величине некоторого функционала (разности квадратов зависимых переменных) для двух таких параллельных расчетов. Заметим, однако, что этот прием пе дает возможности отличить гидродинамическую неустойчивость от численной. [c.482] Когда расчет протекает неудовлетворительно, обычно роль козла отпущения достается нелинейной неустойчивости. На нее списывают и ошибки программирования, и неверную постановку граничных условий, и неисследованную линейную неустойчивость. В действительности настоящая нелинейная неустойчивость встречается сравнительно редко единственными известными ее примерами являются ограниченные осцилляции около сильной ударной волны ) и трудность при комбинированном итерировании уравнений для и г ) (см. разд. 3.1.22). Чаще нелинейности подавляют ошибки и действительные неустойчивости за счет механизма ограничения роста амплитуды. [c.482] Эта рекомендация дана Хеммингом [1962]. Например, заранее известные условия симметрии обычно применяются для уменьшения размеров расчетной области задачи. Однако при начальной проверке на грубой сетке развитие симметричной картины из несимметричных начальных условий может быть хорошим тестом задачи. Аналогично, для проверки аппроксимационной сходимости можно контролировать однозначность давления в угловой точке (разд. 3.5.3). Читателю могут встретиться и другие аналогичные примеры. [c.483] Иногда точность схемы или программы можно проверить сравнением с точным решением. Такие точные решения не обязательно должны быть решениями реальных практически важных задач с другой стороны, хорошее согласование полученного решения с точным еще не означает в общем случае точности схемы или отсутствия ошибок в программе. [c.483] В частности, стационарные течения вязкой жидкости с параллельными линиями тока (течение Куэтта, течение Пуазейля, течение между вращающимися концентрическими цилиндрами и т. д.) не обеспечивают особо хорошей проверки точности схемы. Приведем примеры удачного использования точных решений для проверки вычислительных схем, опубликованные в открытой литературе. [c.483] О г/ 1 приблизительно равно 2.2 это значение можно использовать для суждения об устойчивости. [c.486] Кроули [1968а] проверял схемы на фазовую ошибку при помощи точного решения одномерного линейного модельного уравнения с переменными коэффициеитами при отсутствии вязкости, рассматриваемого в приведенном ниже упражнении. [c.486] Свой почти лагранжев алгоритм расчета квазиодномерных течений Б. К. Кроули [1967] проверяла на двух идеализированных задачах с источником и стоком массы. Предполагалось, что источник массы подает массу с нулевой кинетической энергией, а сток энергии обеспечивает равенство нулю общего потока энергии. В задаче со стоком массы происходит уменьшение как внутренней, так и кинетической энергии, которое компенсируется источником энергии. Хотя эти предположения и не имеют физического смысла, они позволяют получить точные решения, пригодные для проверки численного метода. [c.487] Аналитические решения уравнений для потенциального течения, конечно, обеспечивают проверку многих аспектов вычислительных программ для полных уравнений Навье — Стокса см., например, Крамер [1969]. [c.488] Наиболее известным случаем приближенного решения уравнений Навье — Стокса являются решения уравнений пограничного слоя (Шлихтинг [1968]). Это могут быть аналитические решения, автомодельные решения, полученные численным интегрированием обыкновенных дифференциальных уравнений, и, наконец, неавтомодельные решения дифференциальных уравнений в частных производных. Отметим, что разница в рассмотрении уравнений пограничного слоя и полных уравнений Навье — Стокса состоит не только в пренебрежении диффузионными членами в направлении основного потока, но и в постановке граничных условий на внешней границе. [c.488] Вернуться к основной статье