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
| def Calcul_TE2():
global Dontemp, air_ent, DonE
# Calculer la valeur de th
th, _, _, _, _, _, _ = th_de_t_et_P_et_r(air_ent.tair, DonE.P, air_ent.r1)
# Définir les bornes de l'intervalle
intervalle_temperature_minimum = 18 #th[0] + 9
intervalle_temperature_maximum = 30 #th[0] + 20 + DonE.dte
print(f"min={intervalle_temperature_minimum:.2f}, max={intervalle_temperature_maximum:.2f}")
# Balayage de l'intervalle pour vérifier e signe de DeltaMerkel aux bornes
delta_min = DeltaMerkel(intervalle_temperature_minimum)
delta_max = DeltaMerkel(intervalle_temperature_maximum)
# On vérifie que les signes sont opposés, sinon on réduit l'intervalle
while delta_min * delta_max > 0 and intervalle_temperature_maximum - intervalle_temperature_minimum > 0.1:
intervalle_temperature_minimum += 0.5
intervalle_temperature_maximum -= 0.5
delta_min = DeltaMerkel(intervalle_temperature_minimum)
delta_max = DeltaMerkel(intervalle_temperature_maximum)
print(f"Nouveau min={intervalle_temperature_minimum:.2f}, max={intervalle_temperature_maximum:.2f}")
# Vérification finale avant d'utiliser root_scalar
if delta_min * delta_max > 0:
print("Impossible de trouver une racine avec cet intervalle, DeltaMerkel a le même signe aux bornes.")
return None
try:
# Utiliser root_scalar avec la méthode spécifiée
# techniques possibles :bisect,brentq,brenth,ridder,toms748
sol = root_scalar(DeltaMerkel, method='brentq', bracket=[intervalle_temperature_minimum, intervalle_temperature_maximum], xtol=1e-4)
if sol.converged:
Dontemp.TE2 = sol.root
#print(f"Racine trouvée: {sol.root}")
else:
print(f"La méthode {method} n'a pas convergé.")
except ValueError as e:
print(f"Erreur lors de la recherche de la racine: {e}") |
Partager