Source code for accim.sim.chile_funcs

# accim - Adaptive-Comfort-Control-Implemented Model
# Copyright (C) 2021-2025 Daniel Sánchez-García

# accim is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# any later version.

# accim is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.

# You should have received a copy of the GNU General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.

""" Functions for building energy modelling research in Chile"""


from besos import IDF_class
[docs] def apply_heating_activation_time_sch(idf_path: str, apply_to_occupancy: bool = True) -> object: """ Applies the heating activation time for Chile. See reference: https://www.sciencedirect.com/science/article/pii/S0378778823003833 :param idf_path: The eppy or besos idf class instance. :type idf_path: IDF_class :param apply_to_occupancy: True to apply the same schedule to the occupancy. :type apply_to_occupancy: bool """ # idf_path ='shoebox_sch.idf' from besos.eppy_funcs import get_building building = get_building(idf_path) sch_comp = [i.Name for i in building.idfobjects['SCHEDULE:COMPACT']] if 'Heating_activation_time_chile' not in sch_comp: building.newidfobject( key='SCHEDULE:COMPACT', Name='Heating_activation_time_chile', Schedule_Type_Limits_Name='Fraction', Field_1='Through: 1/31', Field_2='For: AllDays', Field_3='Until: 6:00', Field_4='0', Field_5='Until: 9:00', Field_6='1', Field_7='Until: 17:00', Field_8='0', Field_9='Until: 23:00', Field_10='1', Field_11='Until: 24:00', Field_12='0', Field_13='Through: 2/28', Field_14='For: AllDays', Field_15='Until: 6:00', Field_16='0', Field_17='Until: 9:00', Field_18='1', Field_19='Until: 17:00', Field_20='0', Field_21='Until: 23:00', Field_22='1', Field_23='Until: 24:00', Field_24='0', Field_25='Through: 3/31', Field_26='For: AllDays', Field_27='Until: 6:00', Field_28='0', Field_29='Until: 9:00', Field_30='1', Field_31='Until: 17:00', Field_32='0', Field_33='Until: 23:00', Field_34='1', Field_35='Until: 24:00', Field_36='0', Field_37='Through: 4/30', Field_38='For: AllDays', Field_39='Until: 6:00', Field_40='0', Field_41='Until: 9:00', Field_42='1', Field_43='Until: 17:00', Field_44='0', Field_45='Until: 23:00', Field_46='1', Field_47='Until: 24:00', Field_48='0', Field_49='Through: 5/31', Field_50='For: AllDays', Field_51='Until: 6:00', Field_52='0', Field_53='Until: 9:00', Field_54='1', Field_55='Until: 17:00', Field_56='0', Field_57='Until: 24:00', Field_58='1', Field_59='Through: 6/30', Field_60='For: AllDays', Field_61='Until: 6:00', Field_62='0', Field_63='Until: 9:00', Field_64='1', Field_65='Until: 17:00', Field_66='0', Field_67='Until: 24:00', Field_68='1', Field_69='Through: 7/31', Field_70='For: AllDays', Field_71='Until: 6:00', Field_72='0', Field_73='Until: 9:00', Field_74='1', Field_75='Until: 17:00', Field_76='0', Field_77='Until: 24:00', Field_78='1', Field_79='Through: 8/31', Field_80='For: AllDays', Field_81='Until: 6:00', Field_82='0', Field_83='Until: 9:00', Field_84='1', Field_85='Until: 17:00', Field_86='0', Field_87='Until: 24:00', Field_88='1', Field_89='Through: 9/30', Field_90='For: AllDays', Field_91='Until: 6:00', Field_92='0', Field_93='Until: 9:00', Field_94='1', Field_95='Until: 17:00', Field_96='0', Field_97='Until: 23:00', Field_98='1', Field_99='Until: 24:00', Field_100='0', Field_101='Through: 10/31', Field_102='For: AllDays', Field_103='Until: 6:00', Field_104='0', Field_105='Until: 9:00', Field_106='1', Field_107='Until: 17:00', Field_108='0', Field_109='Until: 24:00', Field_110='1', Field_111='Through: 11/30', Field_112='For: AllDays', Field_113='Until: 6:00', Field_114='0', Field_115='Until: 9:00', Field_116='1', Field_117='Until: 17:00', Field_118='0', Field_119='Until: 24:00', Field_120='1', Field_121='Through: 12/31', Field_122='For: AllDays', Field_123='Until: 6:00', Field_124='0', Field_125='Until: 9:00', Field_126='1', Field_127='Until: 17:00', Field_128='0', Field_129='Until: 24:00', Field_130='1' ) new_idf = idf_path.split('.idf')[0] + '_heat_act_time_added.idf' building.savecopy(new_idf) sch_added = True else: print('Heating_activation_time_chile already was in the model.') sch_added = False if apply_to_occupancy: if sch_added: for people in [i for i in building.idfobjects['people']]: people.Number_of_People_Schedule_Name = 'Heating_activation_time_chile' print('Heating_activation_time_chile has been used in all occupancy schedules in the model.') building.savecopy(new_idf)