diff --git a/main.py b/main.py new file mode 100644 index 0000000..af831a7 --- /dev/null +++ b/main.py @@ -0,0 +1,102 @@ +from coefficients import THERMAL_CONDUCTIVITY_HIGH as thermals +from coefficients import RSI_HORIZONTAL, RSI_DOWNWARD, RSE, RSI_UPWARD +from interfaces import LayeredSurface, FixedUSurface, MaterialLayer +from ventilation import Room, RoomKind +from report import report +import sys + +if len(sys.argv) < 2: + situation = "now" +else: + situation = sys.argv[1] + +# FIXME: Values are a bit coarse, but should be reasonably close to reality +protected_volume = 480 +exterior_wall_area = 110 +window_area = 43 +floor_area = 63 +roof_area = 73 +area = exterior_wall_area + window_area + floor_area + roof_area +average_window_u = 1.19 + +rooms = [ + Room(RoomKind.OPEN_KITCHEN, 3.7 * 3), + Room(RoomKind.TOILET, 0.9 * 1.5), + Room(RoomKind.OTHER_WET, 1.8 * 3.0), # washing/storage room + Room(RoomKind.OTHER_WET, 3.5 * 1.9), # bathroom + Room(RoomKind.LIVING_ROOM, 9 * 3.75), + Room(RoomKind.OTHER_DRY, 9 * 3.75 / 2), # big room 1 + Room(RoomKind.OTHER_DRY, 9 * 3.75 / 2), # big room 2 + Room(RoomKind.OTHER_DRY, 3.3 * 3), # small room +] + +floor_layers = [ + MaterialLayer(thermals["pur"], 0.12), + MaterialLayer(thermals["concrete"], 0.20), +] + +roof_layers = [ + MaterialLayer(thermals["particle_board"], 0.01), + MaterialLayer(thermals["mineral_wool"], 0.12), + MaterialLayer(thermals["pir"], 0.06), +] + +if situation == "now": + wall_layers = [ + MaterialLayer(thermals["brick"], 0.11), + MaterialLayer(thermals["mineral_wool"], 0.06), + MaterialLayer(thermals["brick"], 0.11), + ] + lump_sum_thermal_bridge = 0.20 # W/m^2K + situation_dict = { + "name": "now", + "ventilation_rooms": [], # no active ventilation yet + "ventilation_eta": 1.0, + "ventilation_v50_area": area, + "ventilation_v50_value": 4.0, # maybe 6.0 + "transmission_interfaces": [ + LayeredSurface( + "exterior wall", exterior_wall_area, wall_layers, RSI_HORIZONTAL, RSE + ), + LayeredSurface( + "floor", floor_area, floor_layers, RSI_DOWNWARD, RSI_DOWNWARD, b=0.8 + ), + LayeredSurface("roof", roof_area, roof_layers, RSI_UPWARD, RSE), + FixedUSurface("windows/doors", window_area, average_window_u), + FixedUSurface("thermal bridge", area, lump_sum_thermal_bridge), + ], + "environment_delta_t_worst": 20 - -8, + "environment_delta_t_typical": 20 - 4, + } +elif situation == "future": + wall_layers = [ + MaterialLayer(thermals["brick"], 0.11), + MaterialLayer(thermals["mineral_wool"], 0.06), + MaterialLayer(thermals["brick"], 0.11), + MaterialLayer(thermals["pur"], 0.12), + ] + lump_sum_thermal_bridge = 0.10 # W/m^2K + situation_dict = { + "name": "future", + "ventilation_rooms": rooms, + "ventilation_eta": 0.85, + "ventilation_v50_area": area, + "ventilation_v50_value": 2.0, + "transmission_interfaces": [ + LayeredSurface( + "exterior wall", exterior_wall_area, wall_layers, RSI_HORIZONTAL, RSE + ), + LayeredSurface( + "floor", floor_area, floor_layers, RSI_DOWNWARD, RSI_DOWNWARD, b=0.8 + ), + LayeredSurface("roof", roof_area, roof_layers, RSI_UPWARD, RSE), + FixedUSurface("windows/doors", window_area, average_window_u), + FixedUSurface("thermal bridge", area, lump_sum_thermal_bridge), + ], + "environment_delta_t_worst": 20 - -8, + "environment_delta_t_typical": 20 - 4, + } +else: + raise ValueError("wrong situation") + +report(situation_dict)