completed schedules and constructions in trnsys

This commit is contained in:
Guille Gutierrez 2024-02-09 07:07:23 +01:00
parent 39951a76a9
commit a6f9425068

View File

@ -111,7 +111,6 @@ class Trnsys:
if layer.density is not None: if layer.density is not None:
density = layer.density density = layer.density
layers[layer.material_name] = { layers[layer.material_name] = {
'conductivity': conductivity, 'conductivity': conductivity,
'capacity': capacity, # todo: transform units 'capacity': capacity, # todo: transform units
@ -120,8 +119,8 @@ class Trnsys:
'penrt': '0' 'penrt': '0'
} }
f.write('PROPERTIES\n') f.write('PROPERTIES\n')
for layer_name, values in layers.items(): for name, values in layers.items():
f.write(f'LAYER {layer_name.replace(" ", "_").upper()}\n') f.write(f'LAYER {name.replace(" ", "_").upper()}\n')
for attribute, value in values.items(): for attribute, value in values.items():
f.write(f'{attribute.upper()}=\t{value}\t') f.write(f'{attribute.upper()}=\t{value}\t')
f.write('\n') f.write('\n')
@ -141,16 +140,10 @@ class Trnsys:
f.write('MAX_ESHADE : any : max shading factor of external shading\n') f.write('MAX_ESHADE : any : max shading factor of external shading\n')
@staticmethod @staticmethod
def _schedules(f, building): def _add_schedule(f, schedule, name):
f.write('***************************************\n')
f.write(f'* Schedules\n')
f.write('***************************************\n')
for thermal_zone in building.thermal_zones_from_internal_zones:
for usage in thermal_zone.usages:
for schedule in usage.occupancy.occupancy_schedules:
if schedule.time_step is cte.HOUR: if schedule.time_step is cte.HOUR:
for day_type in schedule.day_types: for day_type in schedule.day_types:
f.write(f'SCHEDULE {day_type.upper()}\n') f.write(f'{name} {day_type.upper()}\n')
hours = 'HOURS= ' hours = 'HOURS= '
values = 'VALUES= ' values = 'VALUES= '
previous = math.inf previous = math.inf
@ -162,6 +155,48 @@ class Trnsys:
f.write(f'{hours} 24.0\n') f.write(f'{hours} 24.0\n')
f.write(f'{values} {schedule.values[0]}\n') f.write(f'{values} {schedule.values[0]}\n')
@staticmethod
def _schedules(f, building):
f.write('***************************************\n')
f.write(f'* Schedules\n')
f.write('***************************************\n')
for thermal_zone in building.thermal_zones_from_internal_zones:
for usage in thermal_zone.usages:
for schedule in usage.occupancy.occupancy_schedules:
Trnsys._add_schedule(f, schedule, 'SCHEDULE OCCUPANCY')
for schedule in usage.lighting.schedules:
Trnsys._add_schedule(f, schedule, 'SCHEDULE LIGHTING ')
@staticmethod
def _construction(f, building):
f.write('***************************************\n')
f.write(f'* Construction\n')
f.write('***************************************\n')
constructions = {}
for thermal_zone in building.thermal_zones_from_internal_zones:
for thermal_boundary in thermal_zone.thermal_boundaries:
constructions[thermal_boundary.construction_name] = {
'layers': '',
'thickness': '',
'absortance-front': thermal_boundary.layers[0].solar_absorptance,
'absortance-back': thermal_boundary.layers[-1].solar_absorptance,
'resistance-front': 1 - thermal_boundary.layers[0].thermal_absorptance,
'resistance-back': 1 - thermal_boundary.layers[-1].thermal_absorptance,
'he': thermal_boundary.he,
'hi': thermal_boundary.hi
}
for layer in thermal_boundary.layers:
constructions[thermal_boundary.construction_name]['layers'] = f'{constructions[thermal_boundary.construction_name]["layers"]} {layer.material_name.replace(" ", "_").upper()} '
constructions[thermal_boundary.construction_name]['thickness'] = f'{constructions[thermal_boundary.construction_name]["thickness"]} {layer.thickness} '
for name, values in constructions.items():
f.write(f'CONSTRUCTION {name.replace(" ", "_").upper()}\n')
f.write(f'LAYERS = {constructions[thermal_boundary.construction_name]["layers"]}\n')
f.write(f'THICKNESS = {constructions[thermal_boundary.construction_name]["thickness"]}\n')
f.write(f'ABS-FRONT = {constructions[thermal_boundary.construction_name]["absortance-front"]} : ABS-BACK = {constructions[thermal_boundary.construction_name]["absortance-back"]}\n')
f.write(f'EPS-FRONT = {constructions[thermal_boundary.construction_name]["resistance-front"]} : EPS-BACK = {constructions[thermal_boundary.construction_name]["resistance-back"]}\n')
f.write(f'HFRONT = {constructions[thermal_boundary.construction_name]["he"]} : HBACK = {constructions[thermal_boundary.construction_name]["hi"]}\n')
f.write('\n')
def export(self): def export(self):
print("export") print("export")
for building in self._buildings: for building in self._buildings:
@ -173,5 +208,6 @@ class Trnsys:
Trnsys._types(f, building) Trnsys._types(f, building)
Trnsys._inputs(f) Trnsys._inputs(f)
Trnsys._schedules(f, building) Trnsys._schedules(f, building)
Trnsys._construction(f, building)