Двусторонний обмен данными между ПРАДИС (PRADIS) и ANSYS Fluent

Назначение модуля

Модуль двустороннего обмена данными ПРАДИС (PRADIS)ANSYS Fluent предназначен для совместного расчета 1D–3D CFD-задач.

Основная идея заключается в том, что ПРАДИС (PRADIS) рассчитывает одномерную часть системы, а ANSYS Fluent рассчитывает трехмерную CFD-область. Между решателями организуется обмен данными через TCP/IP, поэтому оба расчета могут выполняться совместно и синхронно.

Такой подход нужен, когда полная 3D CFD-модель слишком сложна или избыточна, но при этом отдельные участки системы требуют детального трехмерного расчета.


Требования к рабочему окружению

Для работы модуля требуется:

  1. ОС Windows 7 и выше;
  2. ANSYS Fluent;
  3. ПРАДИС (PRADIS);
  4. проверочная задача: модель трубы с несжимаемой жидкостью.

Цель работы модуля

Цель модуля — интеграция расчетных программ ПРАДИС (PRADIS) и ANSYS Fluent для решения связанных 1D–3D CFD-задач.

Модуль позволяет:

  • передавать граничные условия из ПРАДИС (PRADIS) в ANSYS Fluent;
  • получать результаты 3D CFD-расчета обратно в ПРАДИС (PRADIS);
  • синхронизировать шаги по времени;
  • выполнять совместный расчет гидравлических и теплогидравлических систем;
  • использовать ANSYS Fluent как удаленный CFD-решатель.

Решаемые задачи

Модуль предназначен для решения следующих типов задач:

  1. квазистационарные задачи;
  2. нестационарные задачи;
  3. задачи внутреннего течения;
  4. задачи внешнего течения;
  5. задачи теплопередачи;
  6. задачи теплопереноса.

Основные объекты управления и обмена данными

В состав решения входят следующие основные объекты:

  1. 1D-объекты обмена данными в решателе ПРАДИС (PRADIS)
    Используются для передачи данных между 1D-моделью и внешним CFD-решателем по TCP/IP.
  2. Клиент в виде DLL для внешнего решателя
    На примере ANSYS Fluent клиент взаимодействует с ядром Fluent и обеспечивает прием и передачу данных.
  3. GUI для описания подключаемой CFD-модели в задаче ПРАДИС (PRADIS)
    Используется для описания интерфейсов, граничных условий, доменов, единиц измерения и дополнительных параметров.
  4. Объект синхронизации CFD-решателя
    Позволяет встроить 1D–CFD обмен в цикл шага по времени или в цикл нелинейных итераций.
  5. GUI и файл задания для CFD-решателя
    Используются для указания, что в CFD-задаче применяется связанная 1D-модель.


Передаваемые данные между 1D- и 3D-решателями

Обмен между ПРАДИС (PRADIS) и ANSYS Fluent включает несколько групп данных.


Начальные условия

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

  1. начальное давление;
  2. начальная температура;
  3. начальная скорость.

Эти параметры позволяют CFD-решателю начать расчет из согласованного состояния.


Граничные условия

Граничные условия могут передаваться в обе стороны: из 1D-модели в 3D-модель и обратно.

Передаются:

  1. среднее давление на inlet/outlet;
  2. средний объемный расход на inlet/outlet;
  3. средний тепловой поток через стенку;
  4. средняя температура;
  5. средняя плотность.

В простейшем случае ПРАДИС (PRADIS) задает давление на границе, а ANSYS Fluent после расчета возвращает расход. Возможен и обратный вариант, когда CFD-решатель задает результат, а 1D-модель использует его как граничное условие.


Переменные синхронизации

Для согласования расчета передаются:

  1. время;
  2. номер итерации;
  3. шаг по времени;
  4. статус результата расчета;
  5. признак сходимости или несходимости.

Для нестационарных задач особенно важно, чтобы оба решателя понимали, на каком шаге времени они находятся.


Параметры модели

Дополнительно передаются:

  1. площадь сечения;
  2. метод косимуляции;
  3. размерности переменных;
  4. коэффициенты пересчета единиц;
  5. дополнительные параметры модели.

Дополнительные условия обмена

При совместном расчете важно учитывать несколько особенностей:

  • CFD-решатель должен сохранять свое состояние между итерациями;
  • для нестационарных задач CFD-решателю нужно сообщать о новом шаге времени;
  • CFD-решатель может возвращать рекомендуемый шаг времени;
  • ПРАДИС (PRADIS) может сообщить CFD-решателю, что нужно откатиться в начало шага;
  • при обмене 1D→3D и 3D→1D должны применяться коэффициенты пересчета переменных;
  • оба решателя могут передавать код состояния и команду остановки расчета.

Методы обмена данными

Обмен может быть организован двумя способами.


1. Через текстовые файлы

Используются входные и выходные файлы:

*.in
*.out

Такой вариант проще, но менее удобен для тесной синхронизации во времени.


2. Через TCP/IP

Основной вариант для совместного расчета.

TCP/IP позволяет:

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

Структура данных обмена

В структуру обмена входят:

  1. переменные;
  2. состояния;
  3. текущее время;
  4. текущий шаг по времени;
  5. прошлый шаг по времени;
  6. номер итерации;
  7. номер шага по времени;
  8. рекомендуемый шаг по времени;
  9. параметры;
  10. текстовое сообщение.

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


Коды состояния решателя

Во время обмена решатели могут передавать друг другу коды состояния:

  1. итерация сошлась;
  2. итерация не сошлась за заданное число итераций;
  3. расчет завершился с ошибкой;
  4. достигнут конец расчетного времени;
  5. начался новый шаг по времени;
  6. необходимо уменьшить шаг по времени;
  7. выполнена инициализация.

Эти коды позволяют управлять расчетом автоматически.


Универсальное определение переменных и граничных условий

В ПРАДИС (PRADIS) переменные условно делятся на две группы.


Фазовые переменные

К фазовым переменным относятся скалярные величины:

  • давление;
  • скорость;
  • температура;
  • плотность.

Обычно решатель прогнозирует именно фазовые переменные.


Потоковые переменные

К потоковым переменным относятся:

  • объемный расход;
  • массовый расход;
  • поток энтальпии;
  • тепловой поток;
  • сила;
  • момент.

Обычно модель по фазовым переменным рассчитывает потоковые переменные.


Логика обмена фазовыми и потоковыми переменными

Часто используется следующий подход:

  1. ПРАДИС (PRADIS) передает в ANSYS Fluent давление;
  2. ANSYS Fluent выполняет CFD-расчет;
  3. ANSYS Fluent возвращает в ПРАДИС (PRADIS) расход.

Однако для некоторых стационарных CFD-задач такие граничные условия могут плохо сходиться. Поэтому в ПРАДИС (PRADIS) предусмотрен более универсальный подход: можно комбинировать, какие переменные являются граничными условиями, а какие являются результатом расчета.



Описание объектов обмена в ПРАДИС (PRADIS)

Для описания обмена используются объекты CoSimulation и Port.


Объект Port в CoSimulationGenerator

Объект Port определяет порт у объекта CoSimulation.

Он задает:

  1. имя порта;
  2. id границы;
  3. тип порта;
  4. количество и типы передаваемых переменных.

Поле Name может использоваться как id границы для некоторых внешних решателей.


Объект CoSimulation

Объект CoSimulation содержит описание подключаемой CFD-модели и параметры обмена.

В нем задаются:

  1. решатель;
  2. настройки решателя;
  3. домен;
  4. id домена;
  5. материал;
  6. начальные условия;
  7. система единиц;
  8. дополнительные параметры;
  9. флаги индикаторов.

Объект CoSimulation является универсальным. Он не привязан только к одной физике или одному решателю. Конкретное поведение определяется типами портов и параметрами, которые передаются удаленному решателю.



Что передается удаленному решателю

Удаленному решателю передается:

  1. имя решателя;
  2. список границ;
  3. Name / Id границы;
  4. тип границы;
  5. настройки решателя;
  6. домен;
  7. id домена;
  8. материал;
  9. начальные условия;
  10. система единиц;
  11. дополнительные параметры модели.

Для материала сейчас может передаваться, например, значение плотности из объекта Fluid.


CFDGenerator

CFDGenerator используется для генерации CFD-подсхемы и объектов обмена.

Он обеспечивает:

  • генерацию CFD-подсхем моделей TCPIP2 на основе описания граничных условий;
  • создание клиента на основе парсинга подсхемы;
  • работу с абстрактным решателем;
  • адаптацию переменных;
  • подготовку типовых тестовых моделей.

Тестовые модели

Для проверки работы обмена могут использоваться:

  1. труба, стационарная задача;
  2. труба, нестационарная задача;
  3. труба с теплопередачей;
  4. задача с 1D телом перемещения или вращения;
  5. задача с 2D телом;
  6. задача с 3D телом;
  7. задача с электрическим током.

Объект расчета функции на границе для гидравлики

Для задачи гидравлики несжимаемой жидкости используется схема:

  • на границах inlet/outlet давление p передается в модель;
  • модель возвращает расход q.

Дополнительно выполняется адаптация размерностей давления и расхода.


Объект расчета функции на границе для тепловой гидравлики

Для тепловой гидравлики несжимаемой жидкости используются дополнительные переменные.

На границах inlet/outlet:

  • давление ppp передается в модель;
  • модель возвращает расход q;
  • температура T передается в модель;
  • модель возвращает поток энтальпии h.

На границе wall:

  • температура T передается в модель;
  • модель возвращает тепловую мощность Q.

Методы абстрактного решателя aSolver

Абстрактный решатель содержит набор универсальных методов, через которые ПРАДИС (PRADIS) может взаимодействовать с внешним CFD-решателем.

Основные методы:

Initialization(переменная, значение)

Инициализация домена.

setValue(граница, переменная, значение)

Установка значения на границе.

getValue(переменная, параметры)

Получение значения переменной.

aveArea(граница, переменная)

Расчет среднего значения переменной на границе.

intArea(граница, переменная)

Расчет интеграла переменной по границе.

massFlow(граница)

Получение массового расхода.

enthalpyFlow(граница)

Получение расхода энтальпии.

doStep(time, dt)

Выполнение шага по времени.

force_X, force_Y, force_Ztorque_X, torque_Y, torque_Z

Получение сил и моментов на границе.


Механизм работы клиента

Связь с ANSYS Fluent выполняется через UDF-функции и C-клиент.


Описание работы UDF

Последовательность работы выглядит так:

  1. ANSYS Fluent вызывает UDF-функцию;
  2. UDF-функция вызывает C`-функцию клиента;
  3. клиент читает данные от ПРАДИС (PRADIS);
  4. UDF получает от клиента давление на границах;
  5. UDF задает давление на границах в ANSYS Fluent;
  6. ANSYS Fluent выполняет расчет потока;
  7. UDF получает массовые или объемные расходы на границах;
  8. UDF передает расходы клиенту;
  9. клиент отправляет результаты обратно в ПРАДИС (PRADIS);
  10. UDF определяет шаг времени ANSYS Fluent на основе шага ПРАДИС (PRADIS);
  11. при старте вызывается UDF инициализации;
  12. при завершении вызывается UDF завершения расчета.


C-интерфейс для UDF

C-интерфейс клиента является тонким слоем между UDF-функциями ANSYS Fluent и клиентом ПРАДИС (PRADIS).

Он выполняет:

  • чтение граничных условий из ПРАДИС (PRADIS);
  • передачу давления и температуры в Fluent;
  • получение расходов и потоков;
  • синхронизацию времени;
  • пересчет единиц;
  • сопоставление port id с boundary name;
  • передачу результатов обратно в ПРАДИС (PRADIS).


Проверочная задача: жизненный цикл UDF

Для проверки обмена используется задача трубы.

Расчетная постановка:

  • на входе задаются давление P(t) и температура T(t);
  • на выходе определяются расходы qm(t) и qv(t);
  • C-клиент обеспечивает API обмена и синхронизацию времени.

Последовательность жизненного цикла UDF

Жизненный цикл можно представить так:

  1. запуск сценария;
  2. описание границ и граничных условий;
  3. вызов ADJUST на шаге;
  4. задание граничных условий в Fluent;
  5. расчет потока;
  6. считывание расходов;
  7. передача результатов;
  8. установка следующего шага времени Δt.


Практический смысл интеграции

Такой подход позволяет объединить преимущества двух расчетных уровней:

  • ПРАДИС (PRADIS) быстро рассчитывает 1D-систему;
  • ANSYS Fluent подробно рассчитывает 3D-область;
  • обмен через TCP/IP позволяет синхронизировать оба решателя;
  • пользователь получает связанную модель без полного переноса задачи в один расчетный комплекс.

Выводы

Модуль двустороннего обмена ПРАДИС (PRADIS)ANSYS Fluent позволяет выполнять совместный расчет 1D–3D CFD-задач.

Основные особенности модуля:

  • обмен данными через TCP/IP;
  • поддержка начальных и граничных условий;
  • передача расходов, давлений, температур и тепловых потоков;
  • синхронизация по времени;
  • поддержка квазистационарных и нестационарных задач;
  • возможность работы с внутренними и внешними течениями;
  • использование C API и UDF-функций для связи с ANSYS Fluent.

В результате ПРАДИС (PRADIS) и ANSYS Fluent работают как единая расчетная система: один решатель передает граничные условия, второй выполняет CFD-расчет и возвращает результаты обратно в 1D-модель.