При разработке модуля двухфазного расчета программы «Гидросистема» авторы столкнулись с проблемой: для каждого типа расчетов предлагается множество различных методик (см. таблицу) и предпочтения по их использованию у разных специалистов различны. Поэтому было решено включить в расчетный модуль все эти методики с возможностью быстрого переключения между ними. Возник вопрос: «Как лучше реализовать выбор методик?» Перегружать интерфейс лишними переключателями не хотелось. Да и не каждый знает, какую методику лучше применять в тех или иных конкретных условиях. Было решено использовать отдельный файл выбора методик двухфазного расчета, который «продвинутые» пользователи при необходимости смогут легко исправить. А для тех, кто не собирается что-либо менять, поставлять в комплекте с программой файл со стандартным набором методик, выбранным разработчиками.

Наиболее удобным для этой цели авторы посчитали формат XML. С одной стороны, он достаточно легко читается, его можно открыть любым текстовым редактором и внести необходимые исправления. С другой — существует множество инструментов для удобной работы с этим форматом в любых языках программирования, что обеспечивает простоту интеграции. Ниже приведена полученная схема выбора методик.

Пользователям, у которых лицензирован двухфазный расчет, доступно окно Выбор методов двухфазного расчета, с помощью которого можно задать расположение файла для конкретного проекта.

Задание XML-файла с правилами выбора методов Задание XML-файла с правилами выбора методов

В файле формата XML задаются методы двухфазного расчета следующих величин:

  • потерь давления на трение (friction_losses);
  • потерь давления на местные сопротивления (local_losses);
  • истинного газосодержания (void_fraction);
  • режима течения (flow_pattern).

Ниже приведена общая схема файла:

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
	<xs:element name="friction_losses" type="method_type" />
	<xs:element name="local_losses" type="method_type" />
	<xs:element name="void_fraction" type="method_type" />
	<xs:element name="flow_pattern" type="method_type" />
</xs:schema>

Алгоритм выбора метода задается с помощью типа method_type, который определен следующим образом. Для каждого типа задается метод по умолчанию («default») и несколько (возможно также одно или ни одного) условий выбора других методов (condition). Если никакое условие не подходит, используется метод, заданный по умолчанию. Схема приведена ниже:

<xs:complexType name="method_type">
	<xs:sequence>
		<xs:element name="default" />
		<xs:attribute name="method" type="xs:token" />
		<xs:element name="condition" minOccurs="0" maxOccurs="unbounded" />
		<xs:attribute name="method" type="xs:token" />
		<xs:attribute name="pr" type="predicate_type" />
	</xs:sequence>
</xs:complexType>

Методы, используемые в программе в настоящее время, приведены в таблице.

Таблица «Используемые методы для двухфазных расчетов»
Тип метода Название метода
Определение режима течения метод Тайтеля-Даклера
метод Барнеа
метод Петаласа-Азиза
Определение потерь давления на трение метод Шэннака
метод Битти-Вэлли
метод Локкарта-Мартинелли
метод Чисхолма
метод Фриделя
метод Мюллера-Штайнагена и Хека
Определение потерь давления на местные сопротивления метод однородного течения
метод Чисхолма
метод Симпсона
метод Морриса
Определение истинного газосодержания метод однородного течения
метод Чисхолма
метод Смита
метод Премоли
метод Роуани_I
метод Роуани_II
метод Дикса
метод Дикса-Грэма
метод Года-Хибики-Кима-Ишийи-Ухле
метод Циви
метод Фауске
метод Тома
метод Барокши
метод Уоллиса
метод Локкарта-Мартинелли

Условия проверяются сверху вниз по файлу. Каждое условие выбора (condition) представляет собой проверку истинности некоторого предиката («pr»). Если для какого-то условия значение соответствующего ему предиката истинно, то проверка прекращается и выбирается метод, отвечающий этому условию. Нижележащие условия далее не проверяются.

Ниже представлена ХМL-схема предиката:

<xs:complexType name="predicat_type">
	<xs:element name="predicat" />
	<xs:attribute name="name" type="xs:string" />
	<xs:attribute name="expr1" type="expression_type" />
	<xs:attribute name="operation" type="xs:token" />
	<xs:attribute name="expr2" type="expression_type" />
<xs:complexType>

Операнды предиката («expr1» и «expr2») в общем случае представляют собой арифметические выражения, операндами которых могут быть и переменные, и константы или просто числа. В качестве переменных могут применяться как числовые параметры (вязкость, расход), так и используемые в программе типы гидравлических сопротивлений.

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

Елена Юдовина,
Алексей Бабенко
ООО «НТП Трубопровод»
E-mail: hst@truboprovod.ru