Начало здесь.
Для уменьшения объёма повторяющегося кода в классах областей, одинаковый функционал необходимо реализовать в одном классе и наследовать от него соответствующие классы областей.
Для каждой области следует предусмотреть проверку принадлежности пары входных параметров ([t, p] (за исключением Области 4), [p, h], [p, s]) данной области. Методы для определения принадлежности пары входных параметров данной области, которые должны быть переопределены во всех дочерних классах, помещены в класс ParamsIn. Там же будет находится объект класса SaturationCurve, который позволяет определить границы области 4 и границу между областями 1 и 2.
Вода и водяной пар могут находится в однофазном состоянии (вода, Область 1, или перегретый пар, Область 2) и в двухфазном состоянии (влажный пар, Область 4). Класс для Области 4 будет включать в себя классы для Области 1 (Region1) и Области 2 (Region2).
Так как однофазных областей две, то для них предусмотрен родительский класс Region в котором будет реализован одинаковый для классов двух однофазных областей функционал.
Граница между Областью 2 и Областью 3 реализована в классе Boundary23.
Область 2 разбита на несколько подобластей (см. рисунок выше). Все подобласти будут реализованы в классе Region2.
Класс HSDiag будет включать в себя объекты классов всех трёх областей. При вызове расчётного метода, объект этого класса будет искать область к которой относится пара переданных входных параметров и вызывать одноимённый метод соответствующего класса.
Разработка пакета wsprops завершена (см. ссылку ниже).
Пакет для расчёта теплофизических свойств воды и водяного пара.