Coverage for teaser/data/output/usecond_output.py: 100%

49 statements  

« prev     ^ index     » next       coverage.py v7.4.4, created at 2025-04-29 16:01 +0000

1"""This module contains function to save UseConditions classes.""" 

2 

3import collections 

4import json 

5import warnings 

6import teaser.logic.utilities as utilities 

7 

8 

9def save_use_conditions(use_cond, data_class): 

10 """Use conditions saver. 

11 

12 Saves use conditions according to their usage type in the the JSON file 

13 for use conditions in InputData. If the Project parent is set, it 

14 automatically saves it to the file given in Project.data. Alternatively 

15 you can specify a path to a file of UseConditions. If this 

16 file does not exist, a new file is created. 

17 

18 Parameters 

19 ---------- 

20 bound_cond : UseCondtiions() 

21 Instance of TEASERs 

22 BuildingObjects.UseCondtiions 

23 data_class : DataClass() 

24 DataClass containing the bindings for TypeBuildingElement and 

25 Material (typically this is the data class stored in prj.data, 

26 but the user can individually change that.ile 

27 

28 """ 

29 if use_cond.usage in data_class.conditions_bind.keys(): 

30 add_to_json = False 

31 warnings.warn( 

32 "Usage already exist in this JSON, consider " 

33 + "revising your inputs. The UseConditions is " 

34 + "NOT saved into JSON" 

35 ) 

36 else: 

37 add_to_json = True 

38 

39 data_class.conditions_bind["version"] = "0.7" 

40 

41 if add_to_json is True: 

42 data_class.conditions_bind[use_cond.usage] = collections.OrderedDict() 

43 data_class.conditions_bind[use_cond.usage][ 

44 "typical_length" 

45 ] = use_cond.typical_length 

46 data_class.conditions_bind[use_cond.usage][ 

47 "typical_width" 

48 ] = use_cond.typical_width 

49 data_class.conditions_bind[use_cond.usage][ 

50 "with_heating" 

51 ] = use_cond.with_heating 

52 data_class.conditions_bind[use_cond.usage][ 

53 "T_threshold_heating" 

54 ] = use_cond.T_threshold_heating 

55 data_class.conditions_bind[use_cond.usage][ 

56 "T_threshold_cooling" 

57 ] = use_cond.T_threshold_cooling 

58 data_class.conditions_bind[use_cond.usage][ 

59 "with_cooling" 

60 ] = use_cond.with_cooling 

61 data_class.conditions_bind[use_cond.usage][ 

62 "fixed_heat_flow_rate_persons" 

63 ] = use_cond.fixed_heat_flow_rate_persons 

64 data_class.conditions_bind[use_cond.usage][ 

65 "activity_degree_persons" 

66 ] = use_cond.activity_degree_persons 

67 data_class.conditions_bind[use_cond.usage][ 

68 "activity_degree_persons" 

69 ] = use_cond.activity_degree_persons 

70 data_class.conditions_bind[use_cond.usage]["persons"] = use_cond.persons 

71 data_class.conditions_bind[use_cond.usage][ 

72 "internal_gains_moisture_no_people" 

73 ] = use_cond.internal_gains_moisture_no_people 

74 data_class.conditions_bind[use_cond.usage][ 

75 "ratio_conv_rad_persons" 

76 ] = use_cond.ratio_conv_rad_persons 

77 data_class.conditions_bind[use_cond.usage]["machines"] = use_cond.machines 

78 data_class.conditions_bind[use_cond.usage][ 

79 "ratio_conv_rad_machines" 

80 ] = use_cond.ratio_conv_rad_machines 

81 

82 data_class.conditions_bind[use_cond.usage][ 

83 "lighting_power" 

84 ] = use_cond.lighting_power 

85 data_class.conditions_bind[use_cond.usage][ 

86 "fixed_lighting_power" 

87 ] = use_cond.fixed_lighting_power 

88 data_class.conditions_bind[use_cond.usage][ 

89 "use_maintained_illuminance" 

90 ] = use_cond.use_maintained_illuminance 

91 data_class.conditions_bind[use_cond.usage][ 

92 "ratio_conv_rad_lighting" 

93 ] = use_cond.ratio_conv_rad_lighting 

94 data_class.conditions_bind[use_cond.usage][ 

95 "maintained_illuminance" 

96 ] = use_cond.maintained_illuminance 

97 data_class.conditions_bind[use_cond.usage][ 

98 "lighting_efficiency_lumen" 

99 ] = use_cond.lighting_efficiency_lumen 

100 

101 data_class.conditions_bind[use_cond.usage][ 

102 "use_constant_infiltration" 

103 ] = use_cond.use_constant_infiltration 

104 data_class.conditions_bind[use_cond.usage][ 

105 "base_infiltration" 

106 ] = use_cond.base_infiltration 

107 data_class.conditions_bind[use_cond.usage][ 

108 "max_user_infiltration" 

109 ] = use_cond.max_user_infiltration 

110 data_class.conditions_bind[use_cond.usage][ 

111 "max_overheating_infiltration" 

112 ] = use_cond.max_overheating_infiltration 

113 data_class.conditions_bind[use_cond.usage][ 

114 "max_summer_infiltration" 

115 ] = use_cond.max_summer_infiltration 

116 data_class.conditions_bind[use_cond.usage][ 

117 "winter_reduction_infiltration" 

118 ] = use_cond.winter_reduction_infiltration 

119 data_class.conditions_bind[use_cond.usage]["min_ahu"] = use_cond.min_ahu 

120 data_class.conditions_bind[use_cond.usage]["max_ahu"] = use_cond.max_ahu 

121 data_class.conditions_bind[use_cond.usage]["with_ahu"] = use_cond.with_ahu 

122 data_class.conditions_bind[use_cond.usage][ 

123 "heating_profile" 

124 ] = use_cond.heating_profile 

125 data_class.conditions_bind[use_cond.usage][ 

126 "cooling_profile" 

127 ] = use_cond.cooling_profile 

128 data_class.conditions_bind[use_cond.usage][ 

129 "persons_profile" 

130 ] = use_cond.persons_profile 

131 data_class.conditions_bind[use_cond.usage][ 

132 "machines_profile" 

133 ] = use_cond.machines_profile 

134 data_class.conditions_bind[use_cond.usage][ 

135 "lighting_profile" 

136 ] = use_cond.lighting_profile 

137 data_class.conditions_bind[use_cond.usage][ 

138 "with_ideal_thresholds" 

139 ] = use_cond.with_ideal_thresholds 

140 

141 with open(utilities.get_full_path(data_class.path_uc), "w") as file: 

142 file.write( 

143 json.dumps(data_class.conditions_bind, indent=4, separators=(",", ": ")) 

144 )