Роуч П. Вычислительная гидродинамика (1185913), страница 107
Текст из файла (страница 107)
В связи с простотой программы отметим главное различие между задачами расчета течений сжимаемой и несжимаемой жидкости. Уравнения течения несжимаемой жидкости в некотором смысле более сложны, так как здесь надо решать и задачу Коши для ~, и краевую задачу для тр. Однако в них меньше искомых функций, а уравнения для е, и зр могут решаться последовательно. В случае сжимаемой жидкости в большинстве схем ') В этой цепочке вызовов могут возникнуть путаница и ошибки, если число вложешзй больше двух и если для формальных и фактических параметров используются одип и те же идеитцфикаторы. тд. Составление программьс длл ЭВМ все четыре уравнения должны решаться одновременно, и по- этому здесь отладка более затрудшпсльна. 7.
При расчете течения сжимаемой жидкости не отправляйтесь от решения соответствующей задачи о течении несжимаемой жидкости. Казалось бы, можно сначала рассмотреть для заданной геометрии течение несжимаемой жидкости, а потом персйтп к усложнениям, обусловленным сжимаемостью. Хотя при решении первой задачи н будет накоплен некоторый опыт, однако структуры решений обеих задач настолько различны, что в целом этот путь является очень неэффективным.
Это замечание относится к полным уравнениям Навье— Стокса. Структуры решений уравнений пограшгчного слоя для несжимаемой и сжимаемой жидкостей более близки. 8. Разбивайте програмльу на блоки и снабжайте блоки контРольньлми выдачами. Как отмечает Хемминг [1962], распространенной ошибкой является путаница в последовательности проведения расчетов. С другой стороны, автор настоящей книги не слишком высоко расценивает формализованные блок-схемы программ.
По нашему опыту обычно такие блок-схемы составляются после разраббтки самой программы на стадии подготовки отчетности по ней, а не программа составляется по блок-схемам. За исключением высших уровней организации программы, подробную блоксхему, как правило, труднее понять, чем саму программу, если последняя снабжена подробными комментариями. Если в программе есть ошибка, то важно знать, в каком месте программы проявились ее последствия, каковы в этот момент значения параметров пиклов и т.
д. Для получения этой информации на стадии отладки удобно вводить в программу частые выдачи. 9. При оценке общих сроков составления программы разбивайте всю работу на отдельные этапы. Оценка сроков решения вычислительной задачи не входит в число вопросов, в которых искушен автор настоящей книги, хотя он и запомнил широко известное изречение: «Это займет гораздо больше времени, чем вы думаете». Однако здесь могут помочь оценки для отдельных этапов работы: разработки первоначальной (очень частной) программы, отладки более общей программы, проведения методических расчетов н тестов, получения результатов, обработки полученной информации и т. д. 475 7З. Составление программы длз ЗВМ 10. Знайте свою ЗВМ, Глубокое понимание особенностей работы ЭВМ обычно более важно па стадии окончательной едоводки» рабочей программы.
Лучше всего это сделает компетентный специалист по программированию, однако полезно, если п автор программы обладает некоторыми познаниями в этом вопросе. Поясним сказанное па примере. Отметим различие между СРС 6600 н старой !ВМ 1620 в отношении арифметических действий с чпсламп разного типа. В СОС 6600 числа различных типов преобразуются в числа с плавающей запятой, а в 1ВМ !620 этого не происходит.
На 1ВМ 1620 операция 2'Х выполняется быстрее, чем операция 2.*Х, а на СПС 6600 — наоборот. На 1ВМ !620 операция 2'Х эквивалентна Х+Х, однако на СПС 6600 операция Х + Х выполняется быстрее, чем 2.*Х, поскольку операция типа сложения занимает около 0.4 мкс, а операция умножения — около 1 мкс (заметны,что Х + Х + Х выполняется медленнее, чем 3.'Х). Время выполнения операции деления на СПС 6600 составляет приблизительно 2.9 мкс. Поэтому при расчете вклада от диффузионных членов вместо деления этих членов на число Рейпольдса значительно эффективнее подсчитать число Рейнольдса КЕ, один раз вычислить величину КЕ!, обратную числу Рейнольдса, и затем все время умножать значения диффузионных членов на эту величину.
Заметим, что время выполнения операций умножения и деления различно не у всех ЭВМ. Однако па ранних стадиях разработки программы обычно не стоит жертвовать наглядностью программы во имя повышения ее эффективности. Кроме того, заметим, что новейшие операционные системы часто автоматически оптимизируют подобные операции. Приведенные выше примеры показывают, что при сравнении быстродействия различных численных схем и программ необходимо учитывать зависимость быстродействия от типа ЭВМ, операционной системы и квалификации программиста.
11, Избегайте возведения в степень чисел с плавающей запятой. Потери времени от возведения в степень чисел с плавающей запятой столь велики, что их необходимо исключать уже на ранних стадиях разработки опытной программы. На СГтС 6600 умножение двух чисел с плавающей запятой Х*Х занимает около 1 мкс, а возведение в степень Х'*2. занимает 94 мкс. Даже если Х = О, то Х*'2. занимает 12 мкс (заметим, однако, что для чисел с фиксированной запятой операция Х**2 эквивалентна по У.д Соегаолеяие ооогралыоя для ЭВМ времени выполнения операции Х*Х). Потери времени часто можно уменьшить, используя стандартную функцию ВААРТ; на СОС 6600 время выполнения операции Х*'0.5 равно 94 мкс, а время выполнения операции ВААРТ(Х) равно только 23 мкс.
Наиболее часто возведение в степень в газовой динамике встречается при расчете вязкости в зависимости от температуры. Формула Сазерлепда записывается в виде (см,, например, Шлихтинг (1968]) / т 1иг т, + 8 ио ~ то ) т + я Где !1о = /1(то), а Ро, тм о — Величины постоннные для данного газа.
В безразмерном виде она может быть записана в виде функции-оператора Фортрана М(У.— — А* (В*Т)"' 1.5'С/(Т + Р) где А, В, С, Р— постоянные. Его же можно записать н в другом виде, алгебраически эквивалентном первому: М1! =- А'5! 1КТ (ВВ*Т"'3)'С/(Т + Р) где В — другая постоянная. На СОС 6600 расчет по первой формуле занимает 101.3 мкс, а по второй — 31.3 мкс. Однако при расчете по второй формуле для случая Т >) 1 (в ненормализованной форме) могут получиться болыпие промежуточные значения, что на ЭВМ с коротким машинным словом может привести к заметной потере точности. В зависимости от ожидаемого интервала изменения температуры формулу Сазерленда часто можно аппроксимировать соотношениемм Р/Ро = (Т/то)", где о1 выбирается в пределах от 0.5 до 1, Для со = 0.5 вычисление по формуле М() = А'ЗЯБ (В'Т) занимает около 25 мкс.
В простейшем случае оа = 1 вычисление по формуле М() .= АА*Т занимает только одну микросекунду. Но в случае !л = сопз! достигается еще ббльшая экономия времени решения всей задачи, поскольку тогда член д(!лдТ/дх) /дх принимает вид !яд'Т/дхз. Бели требуется повьнпенная точность, обеспечиваемаясложными зависимостями вязкости от температуры типа формулы Сазерленда, то на стадии опытной программы можно ограничиться линейной зависимостью, а требуемое более точное соотношение ввести в рабочую программу в виде подпрограммы ку- 7.7.
Составление «рограммы для .ЭВМ 477 сочно линейной или кусочно степенной (с показателем 1/2) аппроксимации на отдельных интервалах изменения температуры. При нелинейной зависимости вязкости от температуры можно сэкономить много машинного времени, запоминая двумерный массив величин рн, вместо вычислениЯ новых значений Р длЯ каждого значения Тс ь В первом случае требуется! Р', У раз вычислать значспиЯ вЯзкости, а величины вида !мыта; находЯтсЯ осредненисм (р„ь, + р,)/2. В случае же непосредственного Расчета вЯзкости в каждом Узле (й /) вычисление 1сиытк; либо по формуле (5.100), либо по формуле (5.101) требует в пять раз больше времени нз-за необходимости расчета величин рь ь р;, ь р; „,. При отыскании только стационарного решения дальнейшая экономия машинного времени может быть достигнута путем обновления значений массива 1сн; лишь одни раз примерно за 10 шзгов по времени.
Аналогичные соображения применимы и к уравнению состояния сложного вида, на расчет которого может тратиться основная часть машинного времени в задачах о распространении ударных волн в твердых телах. 12. В рабочей программе группируйте члены с одинаковсчми индексами и стремитесь оперировать с одним индексолс. Схему с разностями вперед по времени и центральными разностями по пространственным переменным для модельного уравнения, описывающего конвективный перенос и диффузию, можно записать в виде ьт«+~ — й«с (ьт« ~«) + а (~«2т««+ ьт« Соответствующий оператор на Фортране может иметь вид ЕР(1) = Х (1) — С*(У (1 +!) — Х(! — 1)) + + А' (Е (1 + 1) — 2" Л (1) + Х (1 — 1)) Считая умножение цело~ о числа на действительное 2"Х(!) эквивалентным сложению и операции с индексами (1+!) и (1 — 1) также эквивалентными сложению, получим, что оператор содержит десять операций типа сложения и два умножения, и его выполнение на СРС 6600 займет около 6 мкс.