Spaces:
Sleeping
Sleeping
| # Electric cost(Euros) = energy_price(Euros/kWh) * wasted_energy(kWh) | |
| def custo(energy_price_hour, wasted_energy): | |
| return energy_price_hour * wasted_energy | |
| # caldeira 20 litros | |
| def spent_energy( | |
| temperatura_inicial_caldeira_t, # existente na cadeira, t sendo a hora | |
| temperatura_objetivo_caldeira_t_plus_1, | |
| outside_temp, | |
| pressao_caldeira, | |
| litros_gastos_no_banho=0, | |
| temperatura_entrada_agua_na_caldeira=15, # Temperatura ambiente da iNOVA | |
| capacidade_caldeira=20, # 20 litros | |
| ): | |
| # E = (4.2 kJ/kgoC) ((90 oC) - (20 oC)) (1000 liter) (1 kg/liter) | |
| # cp = specific heat of water (kJ/kgoC, Btu/lb oF) (4.2 kJ/kgoC, 1 Btu/lbmoF for water) | |
| heat_capacity = 4.2 | |
| # Energy = heat_capacity * (temperatura_saida_agua_na_caldeira - outside_temp) * capacidade_caldeira * 1\ | |
| delta_t = temperatura_objetivo_caldeira_t_plus_1 - temperatura_inicial_caldeira_t | |
| energy = ( | |
| heat_capacity | |
| * (delta_t - outside_temp) | |
| * (capacidade_caldeira - litros_gastos_no_banho) | |
| * 1 | |
| ) # isto vai ser minimo | |
| delta_t = ( | |
| temperatura_objetivo_caldeira_t_plus_1 - temperatura_entrada_agua_na_caldeira | |
| ) | |
| energy_incoming_water = ( | |
| heat_capacity * (delta_t - outside_temp) * litros_gastos_no_banho * 1 | |
| ) | |
| # 20 Litros totais | |
| # Joao gatou 5 litros | |
| # Gastar energia em: | |
| # 15 litros para manter a temperatura da caldeira -> minimo | |
| # 5 litros para aquecer a agua que entra | |
| total_energy = energy + energy_incoming_water | |
| # TODO: Correlação entre pressão e temperatura | |
| # https://www.engineeringtoolbox.com/boiling-points-water-altitude-d_1344.html | |
| # https://www.engineeringtoolbox.com/boiling-point-water-d_926.html | |
| """ | |
| That depends on whether the pressure is held constant during the heating. If there is a relief valve which maintains | |
| constant pressure as the water heats, then no, the 2 samples will heat at the same rate. However, if the pressurised sample | |
| has no pressure relief, then it will heat faster because the pressure will increase, and that increase in pressure will increase | |
| the heat in addition to the heat applied. | |
| """ | |
| # kJ | |
| # TODO: FIND WHAT SHOULD BE THE RELATION BETWEEN TEMPERATURE OF OUTGOING WATER AND BOILER TEMPERATURE | |
| temperatura_saida_agua_na_caldeira = temperatura_objetivo_caldeira_t_plus_1 * 0.87 | |
| return total_energy, temperatura_saida_agua_na_caldeira | |
| def calculate_weights_for_all_hours( | |
| temperatura_inicial_caldeira, | |
| temperatura_objetivo_caldeira, | |
| outside_temp, | |
| pressao_caldeira, | |
| litros_gastos_no_banho, | |
| temperatura_entrada_agua_na_caldeira, | |
| capacidade_caldeira, | |
| ): | |
| weights = [] | |
| temperatures = [] | |
| for i in range(len(temperatura_inicial_caldeira)): | |
| energy, temperature_water = spent_energy( | |
| temperatura_inicial_caldeira_t=temperatura_inicial_caldeira[i], | |
| temperatura_objetivo_caldeira_t_plus_1=temperatura_objetivo_caldeira, | |
| outside_temp=outside_temp[i], | |
| pressao_caldeira=pressao_caldeira[i], | |
| litros_gastos_no_banho=litros_gastos_no_banho, | |
| temperatura_entrada_agua_na_caldeira=temperatura_entrada_agua_na_caldeira[ | |
| i | |
| ], | |
| capacidade_caldeira=capacidade_caldeira, | |
| ) | |
| weights.append(energy) | |
| temperatures.append(temperature_water) | |
| return weights, temperatures | |
| # Output energy wasted | |
| def calculate_confort(temperatura_given, temperatura_ideal): | |
| return abs(temperatura_given - temperatura_ideal) | |
| # create exception for no solution found | |
| class NoSolutionFound(Exception): | |
| pass | |
| class SoltionFoundWithLargerConfortValue(Exception): | |
| pass |