Главная » CADmaster №3(58) 2011 » Проектирование промышленных объектов Автоматизация выбора методик двухфазного расчета
При разработке модуля двухфазного расчета программы «Гидросистема» авторы столкнулись с проблемой: для каждого типа расчетов предлагается множество различных методик (см. таблицу) и предпочтения по их использованию у разных специалистов различны. Поэтому было решено включить в расчетный модуль все эти методики с возможностью быстрого переключения между ними. Возник вопрос: «Как лучше реализовать выбор методик?» Перегружать интерфейс лишними переключателями не хотелось. Да и не каждый знает, какую методику лучше применять в тех или иных конкретных условиях. Было решено использовать отдельный файл выбора методик двухфазного расчета, который «продвинутые» пользователи при необходимости смогут легко исправить. А для тех, кто не собирается что-либо менять, поставлять в комплекте с программой файл со стандартным набором методик, выбранным разработчиками.
Наиболее удобным для этой цели авторы посчитали формат 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») в общем случае представляют собой арифметические выражения, операндами которых могут быть и переменные, и константы или просто числа. В качестве переменных могут применяться как числовые параметры (вязкость, расход), так и используемые в программе типы гидравлических сопротивлений.
В итоге пользователи получили мощный инструмент для тонкой настройки двухфазного расчета. В дальнейшем список методов будет расширяться, предоставляя пользователям возможность проводить расчеты по самым актуальным и востребованным методикам.
Скачать статью в формате PDF — 197.3 Кбайт |