Верхняя gif для привлечения внимания, а теперь памятка по опциям 2d солвера в Hec-Ras. Ниже принтскрин настроек версии 6.3.1, но мануал на такой свежак еще не подоспел, поэтому некоторые различия в тексте и картинке имеют место быть. Сейчас кратко пробежимся по строкам используя гугль-переводчик. Оригинальный текст разрабов можно прочесть тут: https://www.hec.usace.army.mil/confluence/rasdocs/rasum/latest/performing-a-1d-unsteady-flow-analysis/performing-unsteady-flow-calculations/unsteady-flow-simulation-options
Use Coriolis Effects:
если поставить галочку, то при использовании уравнений полного импульса будет учитываться эффект Кориолиса. Пользователь должен ввести широту объекта в градусах (строчка 15 "Latitude of Coriolis"). Широта со значением больше нуля считается в северном полушарии, а значение меньше нуля считается в южном полушарии.
Theta (0.6 – 1.0): неявный фактор, который используется для взвешивания пространственных производных между временем текущего решения и временем ранее решенного решения. Тета 1,0 (по умолчанию) использует только текущую временную шкалу для пространственных производных. Это обеспечивает наиболее стабильное решение, но, возможно, с некоторой потерей точности. Тета 0,6 обеспечивает наиболее точное решение уравнений, но имеет тенденцию быть менее стабильным. В целом было обнаружено, что при применении к большинству реальных событий, связанных со стоком паводков, тета 1,0 дает примерно те же ответы, что и тета 0,6. Тем не менее, это следует проверить для каждой модели из-за специфической геометрии участка и распространения паводка, в которых это может повлиять на результаты.
Theta Warm-up (0.6 – 1.0):
значение Theta (см. описание выше), которое используется во время периодов прогрева и запуска модели. Это значение Theta используется только в том случае, если пользователь включил параметр прогрева нестационарного потока или параметр нарастания граничных условий для 2D-областей.
2D water surface calculation tolerance:
чувствительность решения отметок воды для итерационной схемы. Если решение уравнений дает численный ответ с меньшей числовой ошибкой, чем установленный допуск, то решатель выполняется с этим временным шагом. Если ошибка превышает установленный допуск, программа будет выполнять итерацию, чтобы получить лучший ответ. Программа будет повторяться только до максимального количества итераций, установленного пользователем. По умолчанию установлено значение 0,01 фута, основанное на опыте использования модели для ряда приложений.
Maximum Number of iterations:
максимальное количество итераций, которое решатель будет использовать при попытке решить уравнения (чтобы получить ответ с числовой ошибкой, меньшей, чем указанный пользователем допуск во всех точках области расчетной двухмерной сетки). Не рекомендуется изменять это значение, если только вы не уверены, что изменение значения либо улучшит шансы сходимости модели (т. е. увеличит значение), или ускорить вычисления, не вызывая значительных ошибок.
Equation Set:
- 2D Diffusion Wave equations. По умолчанию используется набор уравнений Diffusion Wave. Главный тезис DWE: bottom friction = pressure gradient (g*дH/дx+Cf*U=0, где первый член - гидростатическое давление, второй - потери на трении). А остальные члены (вязкость, турбулентность, кориолис и ускорение) отсутствуют. В целом, большинство приложений для наводнений будут хорошо работать с уравнениями Diffusion Wave. Набор уравнений диффузионной волны будет работать быстрее и по своей природе более стабилен. Однако определенно есть приложения, в которых 2D SWE следует использовать для большей точности;
- Shallow Water Equations (SWE-ELM) с подходом Эйлера-Лагранжа к решению проблемы адвекции. SWE выражает сохранение объема и импульса. Уравнение неразрывности дискретизируется с использованием приближений конечного объема. В отличие от явной схемы Эйлера, полулагранжева схема вычисления ускорения имеет то преимущество, что позволяет избежать условия CFL, основанного на скорости. Но не так точно следит за импульсом, как консервативный эйлеровый метод;
- Shallow Water Equation solver (SWE-EM) - подход Эйлера. Новый метод решения уравнения SWE более консервативен по импульсу, но может потребовать меньших временных шагов и увеличить время выполнения. Этот решатель SWE-EM представлял собой явную схему решения до версии 6.6. основанную на более консервативной форме уравнения импульса: временные шаги надо выбирать с числом Куранта меньше 1, как правило (но не всегда). Начиная с 6.6 метод Эйлера перешел на полунеявную схему. А это значит можно не соблюдать CFL=1 и решение стало стабильней. Этот решатель производит меньше числовой диффузии, чем исходный решатель SWE (ELM? авт). Однако необходим только тогда, когда пользователь заинтересован в очень внимательном рассмотрении эстремальных поведений воды на гидротехнических сооружениях и вокруг них, пирсов/устоев, а также узких сжатиях и расширениях. Компромисс для более точное сохранение импульса заключается в том, что метод требует, чтобы двумерная сетка была строго ортогональной, а шаг по времени, необходимый для устойчивости, ограничен условием Куранта-Фридрихса-Леви (CFL);
- Shallow Water Equation Lokal Inertia (SWE-LIA) - Локальная инерционная аппроксимация уравнений мелкой воды (SWE-LIA) использует упрощенное уравнение импульса, которое игнорирует условия адвекции, диффузии и Колиолиса. Из-за явной обработки условий ускорения, временной шаг, необходимый для стабильности, ограничен условием CFL.
Initial Conditions Ramp up Time (hrs):
параметр используется для «нарастания» водной поверхности из сухого состояния во влажное в пределах 2D-области (или от плоской водной поверхности, если была введена начальная высота водной поверхности). Когда внешние граничные условия, такие как гидрографы течения и уровня (или одномерные участки), связаны с двумерной областью, первое значение связанного потока или уровня может быть слишком высоким (т. е. очень большой расход или уровень намного выше, чем высота ячейки, к которой он прикреплен). Если бы модель начиналась таким образом, такая высокая неоднородность могла бы вызвать нестабильность модели. Эта опция позволяет пользователю указать время (в часах) для выполнения вычислений для 2D-области потока, при этом границы потока медленно перемещаются от нуля к их начальному значению, а границы стадий — от сухой отметки к начальной влажной отметке.
Boundary Condition Ramp up Fraction (0 to 1.0):
Это поле идет вместе с предыдущим полем «Время нарастания начальных условий». Это поле используется для ввода доли времени нарастания начальных условий, которая будет использоваться для нарастания граничных условий 2D-зоны потока от нулевых или сухих до их начального потока или стадии. Пользователь может ввести значение от 0,0 до 1,0, представляющее десятичную дробь времени нарастания начальных условий.
Number of Time Slices (Integer Value):
Эта опция позволяет пользователю установить расчетный временной шаг для 2D-области, который является частью общего интервала расчета нестационарного потока. Например, если пользователь установил общий интервал расчета нестационарного потока равным 10 минутам, то установка значения 5 в этом поле (для конкретной 2D-области) означает, что интервал расчета для этой 2D-области будет составлять 1/5 интервала. общий интервал вычислений, который для этого примера будет равен 2 минутам (например, 10/5 = 2). Для каждой 2D-области потока можно установить разные значения. Значение по умолчанию равно 1, что означает, что для 2D-области потока используется тот же расчетный временной шаг, что и для решения общего нестационарного потока (интервал расчета вводится пользователем в окне анализа нестационарного потока).
От себя: например у вас в одном проекте есть две 2d-area. В одной размер ячеек 10*10, а во второй 1*1. А time step computation для всего проекта выставлен 10 секунд. Если вы можете назначить области с мелкими ячейками временной интервал 1 секунда, если укажете этой области Time Slices=10. (одна десятая от базового временного шага).
Turbulence model:
Про строки 10-13 я писал у телеграм-канале:
Модели турбулентности в Hec-Ras. Лекция от Стена Гибсона https://youtu.be/ePVdhuwCpmQ. На рис сравнения поперечного распределения скоростей без турбулентности и с ней (консерва и неконсерва).
В консервативном методе учитывается анизотропия поперечного и продольного смешивания течений (Dt и Dl соответственно). В неконсервативном продольная и поперечная составляющие одинаковы.
Значения Dl и Dt:
1. Интенсивность смешивания слабая (прямые каналы с гладкой поверхностью) Dl=0.1-0.3; Dt=0.04-0.1.
2. Интенсивность смешивания средняя (слабое меандрирование) Dl=0.3-0.1; Dt=0.1-0.3
3. Интенсивность смешивания сильная (сильное меандрирование, грубая поверхность) Dl=1-3; Dt=0.3-1
4. Смагорински = 0,05-0,2
Обычно продольный Dl d 2-4 раза больше Dt
Ps. Не забывать при калибровке о балансе: если учитываем турбулентность, то быть может придется снизить шероховатость.
Boundary Condition Volume Check:
Этот параметр используется для отслеживания потенциальных ошибок объема, которые могут возникнуть при выполнении соединений 1D с областями течения 2D (т. е. боковая структура, соединенная от реки 1D с областью течения 2D). Если эта функция включена, программа будет оценивать объемную передачу через гидравлическое соединение, чтобы гарантировать, что объем, проходящий через расчетный временной шаг, не превышает объем воды, который действительно доступен в 2D-области потока. Этот момент начинает работать, когда вода покидает 2D-область потока и входит в 1D-участок реки над боковой структурой. Использование стока рассчитывается по уравнению водослива и основано на высотах поверхности воды по обеим сторонам водослива. Однако в области двумерного потока может не хватить объема, чтобы удовлетворить эту скорость потока на расчетном временном шаге. Если эта опция включена, программа проверит это, и если 2D Flow Area не сможет отправить такое количество воды, программа повторит временной шаг с более низкой скоростью передачи потока. Включение этой опции может повысить точность этих типов вычислений, но также замедлит вычисления.
Matrix Solver:
По умолчанию HEC-RAS использует матричный решатель для 2D-уравнений под названием «Pardiso». Это прямой решатель. Для HEC-RAS 6.0 и новее были добавлены некоторые дополнительные «итерационные» решатели. В целом решатель Pardiso дает более стабильное решение. Новые итеративные решатели «могут» дать более быстрое решение (не всегда), но рискуют увеличить нестабильность модели. Как правило, пользователь должен запустить свою модель с помощью матричного решателя Pardiso, а затем он может попробовать итерационные решатели, чтобы увидеть, получают ли они какое-либо увеличение производительности с их набором данных.
Бонус прочитавшему до конца:
Общие рекомендации по настройке солвера от меня такие:
1. Определитесь, что вам нужно уточнить: общую картину всего потока, или под лупой рассмотреть локальные флуктуации потока. На одной чаше весов у вас будет общая ошибка по объему: сколько втекло и сколько вытекло и аккумулировалось. На другой чаше весов: уточненная геометрия гидравлических прыжков, водосливов и прочих эффектов. Чем меньше ошибка по объему, тем скорее всего будет более диффузионная картинка и наоборот: на хороших моделях гидравлических прыжков первичные ошибки по объему могут достигать 100%. На моделях затопления пойм нет смысла ловить локальные волны, но на моделях гидротехнических сооружений лучше пожертвовать балансом "втекло-вытекло" в пользу уточнения эпюр скоростей и глубин.
На краю "точность импульса" стоит SWE-EM метод, на другом краю DW и SWE-LIA.
2. После того, как построили красивую расчетную сетку, поставьте для начала на граничное условие гидрограф с постоянным расходом (так легче будет контролировать ошибку по объему) и начинайте подбирать метод, его настройки и временной шаг. В самом неблагоприятном случае процесс будет примерно такой:
1. процесс расчета не завершится. Будет много ошибок. unstable simulation и красная линия по завершении попытки. Меняйте метод с более агрессивного на диффузионный, меняйте временной шаг. Очень часто стабильность приходит при отказе от адаптивного CFL на сверхнизкие постоянные временные шаги. Но "сверхнизкий" это означает адекватный вашей задаче (размеры ячеек и средние скорости потока). Неоправданно занижать не следует. Вообще я начинаю с минимума настроек (без Кориолиса, без турбулентности), постепенно добавляя их в расчет.
2. процесс расчета завершится, но будет целая портянка ошибок. Total volume error сможет достигать 100-150%. Это происходит из-за накопленных ошибок при переходе из одной ячейки в другую (вливается в модель 1 м3/сек, а выливается 2 м3/сек). Можете подумать о актуализации расчетной сетки, попробовать выключить или упростить турбулентность,
3. спустя несколько итераций у вас получится модель с терпимой ошибкой по объему (5-25%) и довольно красивой картиной флуктуаций, которые вполне будут соответствовать аналитическим расчетам. Поздравляю, этот результат можно обмыть.