Created
June 8, 2020 09:31
-
-
Save julienfastre/517e527d687e5cf77d19acd44a82d619 to your computer and use it in GitHub Desktop.
calcul dimensionnement citerne eau de pluie
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from datetime import date | |
import csv | |
def fromisoformat(date_string): | |
t = date_string.split('-') | |
return date(int(t[0]), int(t[1]), int(t[2])) | |
startdate = fromisoformat('2015-01-01') | |
startlevel = 0.0 | |
roofsqmeters = 95.275 | |
citerne_capacity = 3000.0 | |
# voir https://www.cile.be/pages/Structure-du-prix-de-l-eau | |
prix_eau_l = ((2.8086 + 2.3650 + 0.272) * 1.06) / 1000.0 | |
def dayconsume(date): | |
""" | |
renvoie la consommation du jour. | |
samedi et dimanche, renvoie la consommation du jour | |
+ machines) | |
en semaine, renvoie la consommation du jour = 110l | |
""" | |
daily = 110.0 | |
if date.isoweekday() in [6]: | |
return daily + 120.0 | |
elif date.isoweekday() in [7] and date.isocalendar()[1] % 2 == 0: | |
return daily + 60.0 | |
elif date.month in [1,2,3,4,5,6,9,10,11]: | |
return 110.0 | |
else: | |
return daily | |
def dayprocess(citerne_level, date, mm): | |
day_consommation = dayconsume(date) | |
ajout = 0.0 | |
rejet = 0.0 | |
# calcul de la pluie | |
pluie_l = mm * roofsqmeters | |
# on enlève la consommation et on ajoute la pluie | |
citerne_level = citerne_level - day_consommation + pluie_l | |
# doit-on ajouter de l'eau ? | |
if citerne_level < 0.0: | |
ajout = 0.0 - citerne_level | |
citerne_level = 0.0 | |
elif citerne_level > citerne_capacity: | |
rejet = citerne_level - citerne_capacity | |
citerne_level = citerne_capacity | |
return (citerne_level, ajout, rejet, day_consommation, pluie_l) | |
with open('./pluie_alleur_daily_2005_2019.csv') as file: | |
i = -1 | |
levels = (0.0,0.0,0.0) | |
rejet_cumul = 0.0 | |
ajout_cumul = 0.0 | |
jours_ajout = 0 | |
prix_cumul = 0.0 | |
meteoreader = csv.reader(file, delimiter=";") | |
for row in meteoreader: | |
i = i+1 | |
if i == 0: | |
print("\n") | |
print("{}\t{}\t{}\t{}\t{}\t{}\t{}".format("date", "mm", "eau de pluie collectes (l)", "niveau citerne (l)", "ajout depuis le réseau (l)", "prix ajout depuis réseau (€)", "rejet d'eau de pluie (l)", "consommation du jour (l)")) | |
continue | |
if row[0].startswith('#'): | |
break | |
d = fromisoformat(row[0]) | |
mm = float(row[2]) | |
if d < startdate: | |
continue | |
# process of the day | |
levels = dayprocess(levels[0], d, mm) | |
ajout_cumul = ajout_cumul + levels[1] | |
rejet_cumul = rejet_cumul + levels[2] | |
prix = levels[1] * prix_eau_l | |
prix_cumul = prix_cumul + prix | |
if levels[1] > 0.0: | |
jours_ajout = jours_ajout +1 | |
print("{}\t{:.1f}\t{:.0f}\t{:.0f}\t{:.0f}\t{:.3f}\t{:.0f}\t{:.0f}".format(d.isoformat(), mm, levels[4], levels[0], levels[1], prix, levels[2], levels[3])) | |
print("{}\t{:.0f}".format("Volume citerne:", citerne_capacity)) | |
print("{}\t{:.0f}".format("Nb jour ajouts:", jours_ajout)) | |
print("{}\t{:.0f}".format("ajouts cumulés:", ajout_cumul)) | |
print("{}\t{:.2f}".format("prix ajouts cumulés:", prix_cumul)) | |
print("{}\t{:.0f}".format("rejets cumulés:", rejet_cumul)) | |
print("{}\t{:.3f}".format("prix eau par litre:", prix_eau_l)) | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment