Spaces:
Sleeping
Sleeping
File size: 3,731 Bytes
b510d23 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 |
# 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 |