Рабочий цикл двигателя моделируется «нульмерных» и одномерных термо- и газодинамических моделей. Все эти модели используют термодинамическую модель газообразного рабочего тела. Его свойства представлены свойствами двухкомпонентной смеси. При моделировании двигателя эти 2 составляющих моделируют свежий воздух и «чистые» продукты сгорания заданного топлива, при заданном отношении воздух/топливо (AFR). Молярные массы этих 2 составляющих как газовых смесей могут отличаться, а их теплоемкости могут быть аппроксимированы полиномами.
Типовые компоненты, поддерживаемые в текущей версии -- Atmosphere, Vessel, Duct, Cylinder и Crankcase. Компонент Duct (Трубка) моделирует одномерное течение на гладком профилированном по длине участке трубопровода. Для описания движения газовой смеси в нем используются законы сохранения одномерного нестационарного движения:
Высокоточные методы конечных объемов сквозного счета используются для численного решения этих уравнений, записанных для расчетной ячейки в канале на каждом расчетном шаге. Эти методы обладают небольшой численной диссипацией и обеспечивают хорошую сходимость к точному решению.
В модуле-компоненте Duct учитывается трение потока о стенку канала встроенными функциями для гладких и шероховатых труб, также имеется модель для учета теплообмена со стенкой. Вместо встроенных процедур пользователь может задавать собственное (постоянное) значение коэффициента потерь на трение и коэффициента теплоотдачи для расчета потерь на трение и тепловых потерь отдельно для каждого модуля-компонента Duct на сборке.
Прочие компоненты -- более или менее сложные вариации на тему модели емкости, из которых компонент Cylinder наиболее сложен. В нем, кроме классических представлений модели открытой термодинамической системы, применяются встроенные модели, использующие эмпирические зависимости для учета теплоотдачи в стенку (модель Вошни), сгорания (модель Вибе) и модели течения рабочего тела в период продувки, (модель мгновенного перемешивания или же двухзонная модель, требующая задания продувочной характеристики).
Для моделирования течений по трубопроводам в принятом приближении применяется понятие местного сопротивления (МС) -- абстракции, позволяющей заменить реальный связующий элемент в трубопроводе и ограничить расчет течения на нем рамками одномерной (1D) постановки задачи. МС -- элемент, на котором поток претерпевает резкое перераспределение, что сопровождается потерями (переходом в тепловую) части механической энергии потока и снижением полного давления в потоке.
Все газодинамические коннекторы (связующие элементы сборки) используют сходные понятия о МС.
Простейшие МС -- те, на которых поток не претерпевает разделения/слияния. Такого типа МС описываются коннектором Restriction («простое» МС). Следующие подтипы простого МС могут существовать и описываются следующим конкретными моделями:
Пользуясь моделями местных сопротивлений, мы имеем дело с определенным упрощением физической картины, позволяющим, однако, описывать реальное течение с гидравлическими потерями все же в одномерном или «гидравлическом» приближении. Платой за применение подобных моделей является необходимость в дополнительных данных эмпирического характера о характеристиках реального течения через МС, именно для замыкания задачи в рамках 1D.
Далее следует краткое изложение теории, необходимой для расчета по различного вида моделям МС, используемых модулем-коннектором Restriction.
Нажмите здесь, чтобы ознакомиться с ней.
![]()

Рис. 1. Главное окно программы ГИП пакета с видом сборки загруженного проекта 2-stroke-opposed
Если загружен какой-то другой проект или не загружено никакого, щелкните по кнопке
Рис. 2. Диалоговое окно выбора проекта
Выберите проект 2-stroke-opposed и нажмите OK. Скорее всего, данный проект будет успешно загружен и отображен; в этом случае может быть начат и сеанс численного моделирования. Но вначале стоит потратить время на ознакомление со структурой модели (сборки) двигателя и свойствами (исходными данными) составляющих ее модулей. Подробно особенности задания и интерпретация исходных данных модулей обсуждаются в Руководстве по модулям.
Модули можно добавлять в сборку. Щелкнув по кнопке
панели инструментов или выбрав пункт меню Dialog->Components, можно вызвать окно-палитру с доступными видами компонентов (см. Рис. 3); совершенно аналогично может быть вызвана палитра коннекторов (Рис. 4) -- кнопкой
или командой меню Dialogs->Connectors. Обе палитры служат источниками для перетаскивания новых модулей всех видов на поле сборки.
Рис. 3. Палитра компонентов
Рис. 4. Палитра коннекторов
Модули можно перемещать по полю сборки. Щелкните правой клавишей мыши по изображению модуля и выберите команду Move контекстного меню. Начать перемещение можно и щелчком левой клавишей, при нажатой клавише [Shift]. Переместив в нужное место, бросьте модуль на поле сборки, но это удастся сделать не всегда, модуль нельзя положить:
А теперь обратимся к операциям, производимым над загруженным проектом. Так, если пользователь уверен в том, что данные проекта им изменены правильно, он может сохранить проект -- нажатием кнопки
или командой меню Project->Save. Если же нужно сохранить проект под другим именем, этого можно сделать командой Project->Save as меню программы или нажать соответствующую кнопку. Программа запросит имя для нового проекта -- и сохранит файлы проекта в подкаталоге с этим именем (в каталоге .\prj\, см. Рис. 5).

Рис. 5. Диалоговое окно для запроса имени нового проекта для операции "Save as.."
Альтернативный метод создания проекта на основе существующего (прототипа; создание пустого проекта не поддерживается) используется, если нажать кнопку
Рис. 6. Диалоговое окно создания проекта на основе проекта-прототипа
Запуск процесса моделирования производится щелчком по кнопкеbin\\hpl1ds [-v] [-p] [-t] 2-stroke-opposed
где -v (или --verbose), -p, ... и т.д. -- ключи (аргументы, опции) командной строки (квадратные скобки [..] обозначают необязательность ключей). Назначение ключей можно узнать, запустив солвер командой bin\\hpl1ds без аргументов.
В данном случае (запущен hpl1ds.bat, см. Рис. 7), солвером на консоль пишутся расчетные индикаторные показатели каждого цикла двигателя. Солвер (если запущен с опцией -v или --verbose) выдает многословные сообщения (в основном на старте, их уже не видно на Рис. 7). Он также может выдать время расчета в секундах -- коль скоро присутствует опция -t (или --time). Время, показанное на Рис. 7, получено на ПК с ЦПУ Pentium III на тактовой частоте 700 МГц. Солвер также может запросить нажать любую клавишу, чтобы консоль закрылась по желанию пользователя, после успешного сеанса моделирования (если запущен с опцией -p или --prompt). В данном примере расчет выполнялся до 40-го цикла 2-тактного двигателя включительно.

Рис. 7. Окно консоли с выполняющимся солвером (bin\hpl1ds.exe)
Аварийное завершение солвера производится щелчком по кнопкеОбщие указания солверу относительно величины и числа расчетных шагов в расчете по текущему проекту настраиваются через диалог General. Вид этого диалога для нашего примера показан на Рис. 8. Диалог вызывается через пункт главного меню Dialogs->General или при использовании комбинации клавиш [Shift+G], или (проще всего) щелчком по свободному от модулей полю сборки.

Рис. 8. Диалог General (общих свойств расчета)
Нажатие кнопки Run simulation диалога General приведет к сохранению данных проекта и последующему запуску солвера. При сохранении данные сохраняются в один файл -- это файл .\prj\[project-name]\input (в нашем случае вместо [имя-проекта] подставляется 2-stroke-opposed).
# hpl1d.098 input file #####
#
# project: "2-stroke-opposed"
#
############################
#=== section GENERAL
numstep = 57600 # number of steps
deltaT = 0 # step in time [sec]
deltaPhi = 0.25 # step in crank angle [deg.]
flag_t_phi = 2 # deltaT - 1; deltaPhi - 2 [-]
rpm = 6000 # engine speed [rpm]
flag_prstep = 0 # print each flag_prstep-th step
stroke = 2 # 2 or 4-stroke engine
Раздел GENERAL описывает общие характеристики любого расчета. В вышеприведенном примере показано, как при (flag_t_phi = 2) величина расчетного шага будет браться исходно не по времени, а по углу поворота. Заданное значение переменной deltaPhi = 0.25 (1/4 градуса поворота кривошипа). И в таком случае значение шага по времени в исх. данных не будет принят во внимание, и значение соответствующей переменной (deltaT = 0.) будет проигнорировано.
Использование расчетных шагов по углу имеет смысл при наличие в сборке компонента «Цилиндр», превращающего ее в модель поршневого двигателя. В таком случае должно быть задано число оборотов в минуту коленвала двигателя, здесь -- rpm = 6000 (rpm -- от англ. "revolutions per minute". Тип двигателя -- двухтактный или четырехтактный -- определяется так: stroke = 2 (очевидно, задан двухтактный ДВС). Если пользователь желает смоделировать точно 40 циклов ДВС, нужно задать солверу выполнить
numstep = 40 * 360 * (stroke/2) / 0.25 = 57600 расчетных шагов. Наконец, переменная flag_prstep задает число шагов, после которых солвером выводится номер текущего шага. Нулевое значение -- flag_prstep = 0 -- говорит солверу, что номера шагов выводить не нужно вообще, а например, при flag_prstep = 30 -- лишь номер каждого 30-го шага будет выведен. Так можно уменьшить нагрузку при отображении выполняемого расчета.
Раздел ASSEMBLY хранит лишь две пары координат (в пикселах) ограничивающего прямоугольника (англ. "limiting rectangle") поля сборки. Этот прямоугольник используется только в программе ГИП и может принять внушительные размеры, но в каждый момент укладка модулей при манипулировании ими может производиться только внутри него.
#=== section ASSEMBLY
rect_asm = 90,60,770,520 # ...limiting rectangle [pix.]
Координаты ограничивающего прямоугольника можно перенастроить диалогом "Assembly" программы ГИП:

Рис. 9. Диалог Assembly (углы ограничивающего прямоугольника сборки)
После раздела ASSEMBLY в файле .\prj\[имя-проекта]\input следует раздел MODULES. Он содержит поля данных, специфичные для модулей-элементов и модулей-связей (компонентов и коннекторов). Необходимые моделям данные подробно описываются в Руководстве по модулям.
Рис. 10. Диалог редактирования настроек канала вывода SCREEN
Как можно видеть, в данной версии можно сконфигурировать от 0 до 8 «датчиков».
Рис. 11. "Воспроизведение" записи SCREEN
Поле графиков снабжено «легендой» (см. Рис. 11), сопоставляющей имена параметров и цвета графиков. Щелчком на прямоугольнике сетки 5x4 можно либо переместить «легенду», либо скрыть ее (или показать снова). Заметим, что щелчок мышью в области горизонтальных отметок внизу поля графиков меняет режим вывода этих отметок. По умолчанию отметки показывают номера шагов, а при изменении режима начинают показывать или модельное время (в сек.) или величину базового угла кривошипа. Этот угол изменяется от 0o в момент time=0 и прокручивается каждые 360o или 720o, в зависимости от тактности ДВС (2- или 4-тактный), заданной в разделе GENERAL файла .\prj\[имя-проекта]\input (и в диалоге General программы ГИП).Графики (Screen) можно «сканировать» т.е., наблюдать точные значения)в месте пересечения с вертикальной линией, перемещаемой клавишами со стрелками, причем придерживая клавишу [Shift], можно делать большие скачки, а клавишу [Ctrl] -- очень большие. Клавиши [PgUp] (или ['стрелка-вверх']) и [PgDown] (или ['стрелка-вниз']) служат для перебора графиков для сканирования.
Вот перечень команд управления в окне Screen, каждая соотвествует кнопке на панели управления (Рис. 11), слева направо:
Open another screen [O] (выбрать другой screen-файл), Save screen as.. [B] (сохранить текущие даные как...), Save screen as text.. [T] (сохранить текущие даные в текстовом формате), Close this window [Q] (закрыть окно Screen), Scan data [S] (войти в/выйти из режима сканирования), Next parameter [PgUp] (перейти к след. графику), Prev. parameter [PgDown] (перейти к пред. графику), Move left [[Ctrl+]'arrow left'] (сдвинуть верт. линию влево), Move right [[Ctrl+]'arrow right'] (сдвинуть верт. линию вправо), Previous frame [P] or ['arrow down'] (пред. кадр), Next frame [N or 'arrow up'] (след. кадр), First frame [F or Home] (первый кадр), Last frame [L or End] (последний кадр), Take snapshot [H] (сохранить изображение как BMP-файл).

Рис. 12. «Сканирование» записи Экран
Канал данных TRACK (см. также раздел TRACK, например, файла .\prj\2-stroke-opposed\input) может (когда он задействован), сохранять данные в файл .\prj\[имя-проекта]\track. В двоичном формате там сохраняются кадры анимации распределения параметров вдоль набора компонентов. Кадр записывается на каждом interval-ом шаге. Диалоговое окно, используемое для настройки данного канала данных, выводится по команде главного меню Dialog->Track или по сочетанию клавиш [Shift+T] с клавиатуры.
Рис. 13. Диалог редактирования настроек канала вывода Трек
Щелчок по кнопке
Рис. 14. «Воспроизведение» записи Трек
Запись TRACK также можно «сканировать» (см. Рис. 15). Приемы навигации при сканировании -- практически те же, что и для работы со SCREEN. Данные TRACKа можно также прочитать или перезаписать в файл.Ниже приводится перечень команд при работе с окном-просмотрщиком TRACK, каждая соотвествует кнопке на панели инструментов (Рис. 14), слева направо:
Open another track [O] (выбрать другой track-файл), Save track as.. [B] (сохранить текущие даные как...), Save track frame as text.. [T] (сохранить текущие даные в текстовом формате), Close this window [Q] (закрыть окно Track), Scan data [S] (войти в/выйти из режима сканирования), Next parameter [PgUp] (перейти к след. графику), Prev. parameter [PgDown] (перейти к пред. графику), Move left [[Ctrl + ]'arrow left'] (сдвинуть верт. линию влево), Move right [[Ctrl + ]'arrow right'] (сдвинуть верт. линию вправо), Slower [L] (замедлить воспроизведение), Faster [F] (ускорить воспроизведение), Rewind [W] record (перемотать «запись» к началу), Pause/Resume playback [P/R] (остановить/продолжить воспроизведение), Take snapshot [H] (сохранить кадр как BMP-файл).

Рис. 15. «Сканирование» записи Трек
Следующий (и последний) канал вывода данных -- INDICATOR. Его данные пишутся солвером в стандартный поток вывода и по умолчанию попадают на консоль. На Рис. 16. показано окно диалога настроек Indicator. Оно выводится по команде гл. меню Dialog->Indicator или комбинацией клавиш [Shift+I].
Рис. 16. Диалог редактирования настроек канала вывода Индикатор
Как можно видеть из Рис. 16., можно выбрать для вывода только некоторые индикаторные параметры цилиндра. Теперь подробно разберем, что каждый из них означает. Данные ниже взяты для определенности с Рис. 7. (устарело):
----- ввод INDICATOR'а для 40-го цикла ДВС: -----
N_i = 2.1397 кВт
H = 57.454 J Дж
L = 21.397 J Дж
eta_i = 0.3724 [-]
m0_fresh = 0.020062 г
G_cyl = 12.8752 кг/час
eta_V = 0.4053 [-]
phi = 1.7827 [-]
-----
здесь: eta_V -- коэффициент наполнения, а phi -- обратное значение коэффициента использования продувочного воздуха (коэффициент продувки). Проверим эти данные, взяв некоторые параметры для расчета из файлов input и thermo:
----- файл "thermo"
lambda = 0.95 --
коэффициент избытка воздуха,
lo = 14.7764 -- стехиометрическое отношение,
Hu_m = 2727957 Дж/кг -- теплотворная способность смеси,
R_air = R_g1 = 288,23 Дж/(кг×К) -- газовая постоянная воздуха,
----- файл "input", раздел GENERAL section -----
rpm = 6000 об/мин -- обороты двигателя
----- файл "input", данные для Сylinder[0]
D = 32 мм -- диаметр цилиндра,
r = 13 мм (s = 2 * r = 26 мм) -- радиус кривошипа,
opposed_piston = 1 -- признак ПДП,
x_z = 0.98 -- степень полноты сгорания.
Итак:
эффективный (без учета потерь на выхлоп) массовый расход через цилиндр
G_cyl_eff = G_cyl / phi = 12,8752 / 1,7827 = 7,2223 кг/ч
цикловая порция свежего воздуха (для 4-тактного ДВС):
m0_fresh = (G_cyl_eff / 3600) / (rpm / 60) = 2,006195e-5 кг ~= 2,0062e-2 г =
= 0,0020062 г, верно.
плотность атмосферного воздуха:
rho_a = | как в Atmosphere[11] | = p_a / (R_air × T_a)
= 100000 / (288,23 × 293,15) = 1,18351 кг/м^3.
число поршней в цилиндре
i = (opposed_piston + 1) = 2 шт.
рабочий объем цилиндра:
V_h = i×M_PI×D×D×s / 4 = 2 × 3,1416 ×
0,032 × 0,032 × 0,026 / 4 =
= 0,00004182 м^3.
коэффициент наполнения:
eta_V = m0_fresh / (rho_a × Vh)
= 0,000020062 / (1,18351 × 0,00004182) =
= 0,4053 -- верно.
массовые порции топлива и смеси за цикл:
AFR = lambda × lo = 0,95 × 14,7764 = 14,0379 кг.возд/кг.топл
m0_fuel = m0_fresh / AFR = 2,006195e-5 / 14.0379 = 1,4292e-6 кг.
m0_m = m0_fresh + m0_fuel = 2,006195e-5 + 1,4292e-6 = 2,1491e-5 кг.
тепловыделение в цикле:
H = Hu_m × m0_m × x_z = 2727957 × 2,1491e-5 × 0,98
= 57,45 Дж, верно.
индикаторный КПД (потери топлива в смеси (если есть) при продувке НЕ учитываем):
eta_i = L / H = 21,397 / 57,454 = 0,3724 -- верно.
индикаторная мощность:
Ni = L × f = L × (rpm / 60) = L × (rpm / 60) =
21,397 × 6000 / 60 = 2139,7 Вт =
= 2,1397 кВт -- верно.
В следующих разделах раскрываются более «продвинутые» темы. В Руководстве по модулям объясняются исходные данные, необходимые для работы модулей-компонентов, Интерфейс программных компонентов описывает организацию пакета в целом и назначение его составляющих, Руководство по инструментам представляет собой документацию на Tools («Инструменты» -- программные утилиты, не вошедшие в солвер) и Примеры проектов кратко (со ссылками на страницу с детальными описаниями) перечисляет проекты-примеры, демонстрирующие возможность моделировать разнообразные простые и сложные трубопроводные системы. Эти примеры полезно использовать как прототипы для собственных проектов при моделировании.
Выбором пункта меню Help->Contents... или нажатием клавиши F1 (или щелчком мыши по кнопке
выводится стандартное приложение для просмотра документов в формате HTML (браузер; вероятнее всего, Internet Explorer или Mozilla Firefox) и в него загружается содержание документации пакета -- см. Рис. 17:

Fig. 17. Просмотр документации в формате HTML.
Нажатие сочетания клавиш Shift+F1 выводит в браузере данную страницу.
Рис. 18. Окно "О программе.."
Наиболее важная информация в данном параграфе -- схема потока даных между программными компонентами пакета, вскрывающая их взаимосвязь:

Рис. 19. Схема программных компонентов и потоков данных
Это единственный вид интерфейса, который нужен для понимания для использования компонентов пакета нестандартными способами. При стандартном стиле работы, пользователю важен Графический Интерфейс Пользователя (ГИП), который достаточно легко осваивается (и это не тот интерфейс, о котором здесь идет речь).Пользовательские предпочтения могут устанавливаться через диалоговые окна, выводимые командами меню Options. Текущая версия позволяет редактировать две группы таких опций Solver (для солвера) и Environment (для графической среды). Установки второй группы затрагивают в основном цвета элементов и поведение поля сборки (см. Рис. 20).

Рис. 20. Окно диалога для установки опций (пользовательских предпочтений)
Установки солвера, который является программой, запускаемой из программы ГИП, касаются того, с каким приоритетом его следует запускать, и какого рода режим вывода на консоль для него устанавливать (через аргументы ком. строки).
Рис. 21. Окно диалога редактирования опций запуска солвера
| bin\ | двоичные файлы, программные компоненты: исполняемые файлы и DLL |
| class\ | файлы с байт-кодами Java (*.class-файлы утилит Screen and Track на Java) |
| data\ | файлы данных, например, термодинамические свойства и др. таблицы характеристик |
| doc\ | документация: HTML-файлы, тексты и изображения |
| prj\ | каталог для проектов |
| tmp\ | каталог для временных файлов |
| utils\ | полезные утилиты и программные примеры |
А ниже приведены командные файлы, расположенные в корневом каталоге пакета. Эти командные файлы запускают программные компоненты в режиме командной строки и демонстрируют возможности их использования.
| hpl1dw.bat | запускает программу ГИП пакета |
| hpl1ds.bat | запускает солвер для заданного проекта |
| thermo.bat | запускает инструмент Thermo (thermo.exe + thermo.dll) |
| data.bat | запускает инструмент Data (data.exe + data.dll) |
| porting.bat | запускает инструмент Porting (porting.exe + porting.dll) |
| massive.bat | запускает инструмент Massive (massive.exe + massive.dll) |
| optimum.bat | запускает инструмент Optimum (optimum.exe + optimum.dll) |
| screen.bat | запускает Java-утилиту Screen (требуется Java VM!) |
| track.bat | запускает Java-утилиту Track (требуется Java VM!) |
| hpl1dstub.bat | запускает hpl1dstub.exe -- заглушку (для тестов) |
И несколько текстовых файлов:
| license.txt | лицензионное соглашение |
| readme.txt | файл README |
| changes.txt | список сделанных изменений |
| todo.txt | список планируемых изменений |
| bugs.txt | перечень известных багов |
| bin\hpl1dw.exe | программа графического интерфейса пользователя (ГИП) |
| bin\hpl1ds.exe | исполняемый файл солвера (консольная программа) |
| bin\thermo.dll | DLL для инструмента Thermo |
| bin\thermo.exe | консольный интерфейс к Thermo DLL (запускалка) |
| bin\data.exe | инструмент Data |
| bin\data.dll | ГИП для Data |
| bin\porting.exe | инструмент Porting |
| bin\porting.dll | ГИП для porting.exe |
| bin\massive.exe | инструмент Massive |
| bin\massive.dll | ГИП для massive.exe |
| bin\optimum.exe | инструмент Optimum |
| bin\optimum.dll | ГИП для optimum.exe |
| bin\hpl1dstub.exe | используется взамен солвера для тестов |