Coverage for backend/ahuora-compounds/ahuora_property_packages/modular/modular_extended.py: 63%

25 statements  

« prev     ^ index     » next       coverage.py v7.10.7, created at 2026-07-22 05:22 +0000

1from ahuora_property_packages.base.flexible_state_block import FlexibleStateBlock, FlexibleStateBlockData 

2from pyomo.environ import Expression 

3 

4from idaes.core import declare_process_block_class 

5from idaes.models.properties.modular_properties.base.generic_property import ( 

6 _GenericStateBlock, 

7 GenericParameterData, 

8 GenericStateBlockData, 

9) 

10import idaes.models.properties.modular_properties.base.utility as utility 

11 

12# increase max iterations for estimating values for bubble, dew, and 

13# critical point initialization (ie. temperature_bubble, temperature_dew) 

14utility.MAX_ITER = 1000 

15 

16 

17class _ExtendedGenericStateBlock(FlexibleStateBlock,_GenericStateBlock): 

18 pass 

19 

20 

21@declare_process_block_class( 

22 "GenericExtendedStateBlock", block_class=_ExtendedGenericStateBlock 

23) 

24class GenericExtendedStateBlockData(GenericStateBlockData, FlexibleStateBlockData): 

25 

26 def build(blk, *args): 

27 GenericStateBlockData.build(blk, *args) 

28 FlexibleStateBlockData.build(blk, *args) 

29 

30 def add_extra_expressions(blk): 

31 super().add_extra_expressions() 

32 

33 # add vapor_frac expression 

34 def rule_vapor_frac(blk): 

35 if "Vap" not in blk.phase_list: 

36 # No vapor phase 

37 return 0 

38 return blk.phase_frac["Vap"] 

39 

40 blk.vapor_frac = Expression(expr=rule_vapor_frac) 

41 

42 

43@declare_process_block_class("GenericExtendedParameterBlock") 

44class GenericExtendedParameterData(GenericParameterData): 

45 def build(self): 

46 super().build() 

47 self._state_block_class = GenericExtendedStateBlock # noqa: F821