Аннотация темы
В этой теме рассматривается практический порядок работы с модулем для двустороннего обмена данными между ПРАДИС (PRADIS) и внешними CAE-системами, в частности ANSYS Fluent.
Модуль является неотъемлемой частью программного комплекса ПРАДИС (PRADIS), и его инсталляция осуществляется в ходе общей установки ПРАДИС (PRADIS). О процессе установки программного комплекса ПРАДИС (PRADIS) можно прочитать в следующей статье.
Если в предыдущей теме описывалась общая архитектура обмена и принципы работы модуля, то здесь акцент сделан на практическом сценарии: какие объекты нужно добавить на схему, какие параметры заполнить и как получить готовую подсхему для ко-симуляции.
Генерация подсхемы CoSimulation
Общий алгоритм
Для генерации подсхемы необходимо выполнить несколько шагов:
- указать входные и выходные узлы;
- указать границы входных и выходных портов;
- указать домены;
- заполнить параметры объекта
CoSimulation; - запустить схему с генератором на расчет.
В результате будет создана подсхема, которая используется для обмена данными при совместном расчете ПРАДИС (PRADIS) и внешнего CFD-решателя.
1. Начало работы
Перед добавлением объектов для генерации необходимо создать новую схему.
Для этого в главном меню выберите:
Файл → Создать
или используйте сочетание клавиш:
Ctrl + N
После создания схемы ее необходимо сохранить под нужным названием.
Для сохранения используйте:
Файл → Сохранить
или:
Файл → Сохранить как...
Также можно использовать сочетание клавиш:
Ctrl + S
На этом этапе важно сразу задать понятное имя схемы, потому что оно будет использоваться при генерации выходного файла подсхемы.
2. Добавление объектов узла
Для указания входных и выходных узлов подсхемы на схему добавляются объекты Port.
Они находятся в разделе:
Компоненты → Passport
После выбора библиотеки Passport необходимо добавить объект:
Passport.Port
Объект Port описывает узел будущей подсхемы. Через такие узлы будет выполняться подключение сгенерированной подсхемы к основной модели.
3. Настройка свойств Port
Чтобы открыть свойства порта, дважды щелкните левой кнопкой мыши по объекту на схеме.
В свойствах необходимо заполнить:
- имя объекта на схеме;
- название узла;
- описание на английском языке;
- описание на русском языке;
- тип узла.
Основные поля объекта Port
Имя объекта на схеме
Это название, которое будет отображаться на рабочем поле схемы.
Например:
Input1
Name
Название узла, которое используется внутри структуры модели.
Обычно оно совпадает с именем объекта на схеме.
English
Описание узла на английском языке.
Например:
Input port 1
Language2
Описание узла на русском языке.
Например:
Входной узел 1
Type
Тип узла.
Тип выбирается в зависимости от задачи и физики модели. Например:
Point
или другой доступный тип узла.
4. Добавление остальных входных и выходных узлов
После настройки первого порта необходимо добавить остальные узлы.
Например:
- входные узлы:
Input1,Input2,Input3; - выходные узлы:
Output1,Output2,Output3,Output4.
На этом этапе важно заранее определить, какие узлы будут входными, а какие выходными, потому что далее для каждого из них будут задаваться границы обмена.
5. Добавление объектов границы
Для каждого порта необходимо создать объект границы Boundary.
Границы добавляются из библиотеки:
Компоненты → CFDModule
Необходимо выбрать объект:
CFDModule.Boundary
Объект Boundary связывает порт подсхемы с границей во внешнем CFD-решателе. Через него задаются ID границы, начальные значения и коэффициенты пересчета единиц измерения.
6. Настройка свойств Boundary
Чтобы открыть свойства граничного объекта, дважды щелкните по нему на схеме.
В свойствах Boundary необходимо указать:
- имя объекта на схеме;
- порт, к которому относится граница;
IDпорта вCFD-системе;- начальные значения;
- входные коэффициенты пересчета;
- выходные коэффициенты пересчета.
Основные поля объекта Boundary
Port
Указывает, с каким объектом Port связана данная граница.
Например:
Input1
ID
Идентификатор границы во внешней CFD-системе.
Этот ID нужен для сопоставления границы в ПРАДИС (PRADIS) с границей в ANSYS Fluent.
InitialValues
Начальные значения переменных.
Они задаются по степеням свободы и зависят от типа порта и расчетной задачи.
InputCoefficients
Коэффициенты пересчета входных переменных.
Используются при передаче данных из ПРАДИС (PRADIS) во внешний решатель.
OutputCoefficients
Коэффициенты пересчета выходных переменных.
Используются при передаче результатов из внешнего решателя обратно в ПРАДИС (PRADIS).
7. Добавление остальных границ
После настройки первой границы необходимо добавить границы для остальных входных и выходных узлов.
Например:
InBoundary1;InBoundary2;InBoundary3;OutBoundary1;OutBoundary2;OutBoundary3;OutBoundary4.
Границы должны соответствовать ранее созданным портам. Если портов несколько, для каждого из них нужно указать свою Boundary.
8. Добавление объекта домена
После задания портов и границ необходимо описать расчетный домен.
Для этого используется объект:
CFDModule.Domain
Он добавляется из библиотеки:
Компоненты → CFDModule
Домен описывает область расчета или физическую среду, с которой будет работать внешний решатель.
9. Настройка свойств Domain
В свойствах домена необходимо указать:
- имя объекта на схеме;
IDдомена;- тип материала;
- начальные значения;
- дополнительные параметры.
Основные поля объекта Domain
ID
Идентификатор домена.
Используется для связи описания домена с внешним решателем.
MaterialType
Тип материала домена.
Например:
Fluid
или:
Solid
Выбор зависит от постановки задачи.
InitialValues
Начальные значения для домена.
Они зависят от задачи и могут включать, например:
- давление;
- температуру;
- скорость;
- плотность.
AuxParameters
Дополнительные параметры домена.
Их состав зависит от конкретной расчетной постановки.
10. Добавление объекта CoSimulation
Последний объект, который необходимо добавить на схему, — это объект:
CFDModule.CoSimulation
Именно он отвечает за генерацию подсхемы.
11. Настройка объекта CoSimulation
В свойствах объекта CoSimulation указываются основные параметры генерации.
Параметры объекта CoSimulation
Название объекта на схеме
Имя объекта, которое отображается на рабочем поле.
Например:
CoSimulation1
Model_ID
Идентификатор модели.
Используется для различения моделей при обмене данными.
NetworkPort
Сетевой порт.
Через него будет выполняться обмен с внешним решателем.
SolvingMethods
Метод решения.
Определяет способ взаимодействия и режим расчета.
INX
Количество входных узлов.
Значение должно соответствовать числу входных портов.
OUTX
Количество выходных узлов.
Значение должно соответствовать числу выходных портов.
NetworkConnectionName
Название сетевого соединения.
Например:
Ethernet
Solver
Название внешнего решателя.
Для этой задачи указывается:
Fluent
SolverSettings
Настройки решателя.
Могут содержать дополнительные параметры, необходимые для внешнего CFD-решателя.
Domains
Список доменов.
Например:
Domain1
UnitsSystem
Система единиц.
Например:
Mechanical
или другая система, используемая в задаче.
In_Boundaries
Список входных границ.
Например:
InBoundary1, InBoundary2, InBoundary3
Out_Boundaries
Список выходных границ.
Например:
OutBoundary1, OutBoundary2, OutBoundary3, OutBoundary4
Out_File
Имя выходного файла, в который будет записана сгенерированная подсхема.
Например:
Test_SunScheme.sch
12. Генерация подсхемы
После добавления всех объектов и заполнения параметров необходимо запустить схему на расчет.
Это можно сделать через меню:
Моделирование
- Также можно нажать кнопку
Моделироватьна панели инструментов.

13. Результат генерации
После запуска расчета будет сформирован объект подсхемы для обмена данными при ко-симуляции.
Результатом является готовая подсхема, которую можно использовать для связи ПРАДИС (PRADIS) с внешним CFD-решателем.
Проверка результата
После генерации необходимо проверить:
- создан ли
файл подсхемы; - совпадает ли количество входных узлов с параметром
INX; - совпадает ли количество выходных узлов с параметром
OUTX; - указаны ли все входные и выходные границы;
- заполнены ли
IDграниц; - корректно ли указана
система единиц; - задан ли внешний решатель
Fluent; - указан ли выходной файл
Out_File.
Типичные ошибки
Не заполнен порт у Boundary
Если в объекте Boundary не указан Port, граница не будет связана с узлом подсхемы.
Несовпадение INX и количества входных границ
Если INX не соответствует числу входных портов, подсхема может быть сформирована некорректно.
Несовпадение OUTX и количества выходных границ
Аналогично, OUTX должен соответствовать количеству выходных узлов.
Не указан Domain
Если в CoSimulation не указан домен, внешний решатель не получит описание расчетной области.
Не указан Out_File
Если не задан выходной файл, результат генерации может быть не сохранен.
Выводы
Генерация подсхемы CoSimulation выполняется через последовательное описание:
- узлов
Port; - границ
Boundary; - доменов
Domain; - объекта
CoSimulation.
После заполнения всех параметров схема запускается на расчет, и ПРАДИС (PRADIS) формирует готовую подсхему для обмена данными с внешним CFD-решателем.
Такой подход позволяет стандартизировать настройку ко-симуляции и упростить подготовку связанных 1D–3D CFD-расчетов.
Сборка DLL-библиотеки с UDF для Fluent
В данной теме рассматривается процесс сборки DLL-библиотеки с UDF-функциями для ANSYS Fluent, используемой при организации двустороннего обмена данными с ПРАДИС (PRADIS).
Такая библиотека обеспечивает:
- передачу граничных условий из
ПРАДИС (PRADIS)вFluent; - получение результатов
CFD-расчета; - синхронизацию шагов расчета;
- выполнение ко-симуляции
1D–3Dмоделей.
Основные этапы настройки
Общий алгоритм сборки и подключения DLL
- Создание структуры папок
UDF; - Добавление исходных
.cи.hфайлов; - Первичная сборка через Fluent;
- Подключение библиотек связи с
ПРАДИС (PRADIS); - Настройка
user_nt.udf; - Сборка
DLLчерезnmake; - Загрузка
DLLв Fluent; - Настройка
UDFhooks; - Назначение
UDFна границы; - Настройка соединения с
ПРАДИС (PRADIS); - Запуск совместного расчета.
Создание необходимого набора папок и файлов
Подготовка исходных файлов
Для начала необходимо добавить файлы:
inlet.c;clientAPI.h;cfd_enums.h;
в директорию, где расположен проект Fluent (.cas файл).
После этого открывается проект Fluent.
Первичная сборка UDF в Fluent
Компиляция через меню User Defined
В Fluent необходимо перейти:
User Defined → Functions → Compiled
Далее нужно:
- выбрать режим
Compiled; - добавить
.cи.hфайлы; - указать имя библиотеки;
- нажать кнопку
Build.
На вывод консоли на данном этапе можно не обращать внимания — задача состоит в генерации структуры папок и служебных файлов.
Создание структуры папок UDF
После выполнения Build появляется папка:
udflib
Внутри создаются основные каталоги:
srcwin64
Структура папки win64
В папке win64 Fluent создает директории для конкретного режима расчета:
2d_node;2d_host;3d;- и т.д.
Внутри располагаются:
makefile;user_nt.udf;ud_io1.h;log;- объектные файлы.
Подключение библиотеки PradisClientCAPI.lib
Размещение библиотеки клиента ПРАДИС (PRADIS)
В папку:
udflib/src
необходимо добавить библиотеку:
PradisClientCAPI.lib
В этой же директории обычно находятся:
inlet.c;PradisClientCAPI.h;PradisClientCAPI.lib.
Настройка user_nt.udf
Подключение USER_OBJECTS
Далее открывается файл:
win64/2d_node/user_nt.udf
или:
win64/2d_host/user_nt.udf
В него добавляется строка:
USER_OBJECTS = $(SRC)PradisClientCAPI.lib
Эта строка сообщает Fluent, что при сборке необходимо подключить библиотеку взаимодействия с ПРАДИС (PRADIS).
Вариант с несколькими библиотеками
Использование PradisMasterCAPI.lib
В некоторых вариантах ко-симуляции используется несколько библиотек:
PradisMasterCAPI.lib;SocketLib.lib;util.lib.
Они также размещаются в папке:
udflib/src
Подключение нескольких библиотек
В файл user_nt.udf добавляется строка:
USER_OBJECTS = $(SRC)PradisMasterCAPI.lib $(SRC)SocketLib.lib $(SRC)util.lib
Таким образом Fluent подключает сразу несколько библиотек, необходимых для сетевого обмена и работы клиента.
Подготовка окружения Visual Studio
Инициализация vcvars64
Для корректной сборки DLL необходимо использовать:
Developer Command Prompt for Visual Studio
Далее нужно перейти в директорию:
Microsoft Visual Studio\2017\Professional\VC\Auxiliary\Build
и выполнить:
vcvars64
После этого командную строку закрывать не нужно.
Настройка переменных Fluent
Настройка FLUENT_INC и PATH
В терминале Visual Studio command prompt необходимо указать:
set FLUENT_INC=D:\Programs\ANSYS\v192\fluent
и путь к resolve.exe:
set PATH=D:\Programs\ANSYS\v192\fluent\ntbin\win64;%PATH%
Это необходимо для доступа к компилятору Fluent и служебным библиотекам.
Очистка предыдущей сборки
Использование nmake clean
После настройки окружения нужно перейти в папку:
udflib\win64\2d_node
или:
udflib\win64\3d
Далее выполняется команда:
nmake clean
Она удаляет предыдущие результаты сборки.
Проверка результатов очистки
После очистки можно проверить содержимое папки и наличие обновленного log-файла.
Сборка DLL-библиотеки
Компиляция через nmake
Теперь выполняется команда:
nmake
Если сборка проходит успешно, появляется библиотека:
libudf.dll
Проверка созданной DLL
После успешной сборки в папке должны появиться:
libudf.dll;libudf.lib;libudf.exp;- объектные файлы.
Перенос DLL рядом с проектом Fluent
Подготовка рабочей директории
Полученную библиотеку необходимо перенести рядом с проектом Fluent.
Перед этим важно убедиться, что старая версия DLL не загружена.
Загрузка DLL в Fluent
Подключение libudf.dll
В Fluent открывается менеджер UDF-библиотек.
После загрузки библиотеки в консоли должно появиться сообщение:
Done
Это означает успешную загрузку UDF.
Настройка брандмауэра Windows
Разрешение сетевого взаимодействия
Для корректной работы TCP/IP обмена необходимо создать правило в:
Монитор брандмауэра Защитника Windows
Добавляется разрешение для:
fl1920.exe
или другого исполняемого файла Fluent.
Проверка директории Fluent
Проверка исполняемого файла fl*1920.exe
После настройки правил необходимо проверить директорию Fluent, из которой используется:
fl*1920.exe
Для разных режимов расчета используются разные каталоги:
2d;2d_node;2ddp_node;3d.
Настройка UDF-функций
Переход в раздел User Defined
Все пользовательские функции Fluent настраиваются через вкладку:
User Defined
Назначение Function Hooks
Настройка основных UDF hooks
В разделе:
User Defined → Function Hooks
назначаются функции:
Initialization;Execute at End;Execute at Exit.
Например:
my_init_func::libudfexecute_at_end::libudfexecute_at_exit::libudf
Execute on Demand
Настройка stop_calc
Для возможности разрыва соединения без закрытия Fluent используется функция:
stop_calc
Она назначается через:
Execute on Demand
Назначение ID граничных условий
Проверка Boundary IDs
Во Fluent каждой границе соответствует собственный ID:
inlet;outlet;wall;- и т.д.
Эти ID затем используются в объектах Boundary внутри ПРАДИС (PRADIS).
Назначение UDF на границы
Настройка Pressure Inlet
Для входной границы необходимо выбрать соответствующую UDF-функцию.
Например:
Gauge Total Pressure → udf inlet_parab::libudf
Таким образом Fluent получает давление напрямую от ПРАДИС (PRADIS).
Настройка inlet.ini
Настройка IP-адреса и порта
Для соединения с ПРАДИС (PRADIS) необходимо создать файл:
inlet.ini
В нем указывается:
192.168.X.XXX2000
где:
- первая строка —
IP-адрес; - вторая строка —
TCP/IP порт.
Файл должен находиться рядом с inlet.c.
Инициализация расчета
Запуск Initialize
Перед запуском ко-симуляции необходимо выполнить инициализацию Fluent.
В разделе:
Solution Initialization
нажимается кнопка:
Initialize
Настройка Run Calculation
Параметры временного расчета
В разделе:
Run Calculation
задаются:
Time Step Size;Number of Time Steps;Max Iterations / Time Step.
После настройки запускается расчет кнопкой:
Calculate
Настройки расчета в ПРАДИС (PRADIS)
Объект Dynamic
В объекте Dynamic необходимо настроить:
- конечное время интегрирования;
- шаг интегрирования;
- допустимые погрешности;
- параметры итераций;
- метод интегрирования.
В примере используется:
end = 50.0
Настройки расчета в ANSYS Fluent
Переходный временной анализ
Во вкладке:
General
необходимо выбрать режим:
Transient
Также задаются:
Pressure-Based;Absolute Velocity Formulation.
Эти параметры необходимы для корректного нестационарного обмена с ПРАДИС (PRADIS).
Запуск совместного расчета
Порядок запуска
Последовательность запуска ко-симуляции:
- выполнить
InitializeвоFluent; - проверить настройки времени;
- запустить расчет в
ПРАДИС (PRADIS); - убедиться в появлении сообщения:
Successfully binded
- после этого запустить расчет во
Fluent.
Итоги
DLL-библиотека с UDF обеспечивает полноценный двусторонний обмен данными между ПРАДИС (PRADIS) и ANSYS Fluent.
После настройки:
- Fluent получает граничные условия из
ПРАДИС (PRADIS); - выполняет
CFD-расчет; - передает результаты обратно в 1D-модель;
- поддерживает синхронную ко-симуляцию по времени.







































