seviprince / dromotherm

Code Python
MIT License
0 stars 1 forks source link

usecase avec dromotherme arrêté durant la nuit l'été #6

Closed alexandrecuer closed 4 years ago

alexandrecuer commented 4 years ago

tout est dans le titre mais là je pense qu'on a tout ce qu'il faut pour coder sereinement ce cas d'usage

objectif : réduire l'action filtre passe bas du dromotherme durant l'été

fbernard494 commented 4 years ago

oui ce serait pas mal de tester ! J'ai fait tourner la derniere version du code. Ca tourne vraiment tres vite :)

alexandrecuer commented 4 years ago

J'ai crée un cas d'usage 4 qui ne s'intéresse qu'à l'été et qui ne fait tourner le dromotherme qu'au dessus de 250 W/m2 de rayonnement cf fichier couplage2.py

voila ce que celà donne avec python couplage2.py False 4

au début c'est OK

image

ensuite çà se corse :

image

quant on remet le dromotherme en route, la température d'injection est au dessus de la température de sortie, ce qui fout le désordre dans le bilans énergétique et rend le taux de récup très mauvais.....

image

C'est moins bon qu'avec python couplage2.py False 0

image

image

seviprince commented 4 years ago

Pour améliorer le taux de récupération, et si on comptabilisait seulement les chaleurs "positives" reçues par le dromotherm en posant

Pdro=mdro Cpdro max(Tsor_dro-Tinj_dro,0)??

alexandrecuer commented 4 years ago

Ce que tu proposes serait hors process, on ne fera jamais ainsi en réalité.... J'ai essayé de mettre en musique l'idée de Benoit, à savoir qu'on ne fait tourner l'échangeur de séparation de réseau que lorsqu'on a Tsor_dro[i] au dessus de la température du stock, sinon, on refroidit le stock et on réchauffe la route.....maintenant qu'on a abandonné RK, on peut le faire....

une possibilité d'implémentation, dans SystemLoop au niveau de l'étape 3 :

# étape 3
if dro == 1:
    dromo.iterate(i,Tinj_dro[i-1]+kelvin,qdro_u)
    Tsor_dro[i]=dromo.T[i,1,-1]-kelvin
    if Tsor_dro[i] < y :
        print("step {} y vaut {} et prev vaut {}".format(i,y,Tsor_dro[i]))
        agenda_dro[i] = 0
        Tinj_dro[i]=Tsor_dro[i]
        Tinj_sto[i] = Tinj_sto[i-1] 
        Tsor_sto[i] = Tsor_sto[i-1]
    else :
        Tsor_sto[i] = ( k * y + B * Tsor_dro[i] ) / ( k + B)
        Tinj_sto[i] = Tsor_sto[i] + coeff * eff * (Tsor_dro[i] - Tsor_sto[i])
        Tinj_dro[i] = Tsor_dro[i] - eff * (Tsor_dro[i] - Tsor_sto[i])

effectivement, c'est plus cohérent.....

Avec python couplage2.py True 0

image

image

le bilan énergétique :

le k du système géothermique vaut 2745.5656231775747 W/K
coeff vaut 0.8333333333333335 B vaut -671.2968743925251 W/K
Bilan énergétique sur la période : 2017-05-01 03:00:00 à 2017-10-01 03:00:00
Energie récupérée par le dromotherm : 61.75157569795137 kWh/m2
Energie solaire recue : 547.23337 kWh/m2
Taux de récupération : 11.284322024797458 %
Consommation du bâtiment : 83.69565898686805 kWh/m2
Energie électrique consommée par la PAC : 27.898552995622683 kWh/m2
Energie primaire consommée par la PAC : 71.97826672870653 kWh/m2

Avec python couplage2.py False 0

image Donc sans conso d'ECS, on voit très nettement que l'efficacité de l'échangeur diminue fortement cf ce que disait Benoit....

image On voit aussi très nettement qu'il y a une vraie différence sur la température de stock au sortir de l'été antre un fonctionnement sans ECS (stock à 40°C au début de l'hiver) et un fonctionnement avec ECS (stock à 20/25°C au début de l'hiver)... le bilan énergétique pour ce fonctionnement sans usage :

le k du système géothermique vaut 2745.5656231775747 W/K
coeff vaut 0.8333333333333335 B vaut -671.2968743925251 W/K
Bilan énergétique sur la période : 2017-05-01 03:00:00 à 2017-10-01 03:00:00
Energie récupérée par le dromotherm : 38.17514253958205 kWh/m2
Energie solaire recue : 334.9463 kWh/m2
Taux de récupération : 11.39739192210275 %
Consommation du bâtiment : 0.0 kWh/m2
Energie électrique consommée par la PAC : 0.0 kWh/m2
Energie primaire consommée par la PAC : 0.0 kWh/m2

Je pense qu'on progresse mais l'équilibre économique va être compliqué avec un rendement de 10%

seviprince commented 4 years ago

Effectivement le rendement est assez faible. Une étude économique des différents cas d'usage nous permettra de préconiser un cas d'usage économiquement acceptable.

seviprince commented 4 years ago

L'étape 3 me semble incomplète

je proposerais ceci:

` # étape 3

if dro == 1:

    dromo.iterate(i,Tinj_dro[i-1]+kelvin,qdro_u)

    Tsor_dro[i]=dromo.T[i,1,-1]-kelvin

    # Si la température du stockage devient

    if Tsor_dro[i] < y :

        print("step {} y vaut {} et prev vaut {}".format(i,y,Tsor_dro[i]))

        agenda_dro[i] = 0

        dromo.iterate(i,Tinj_dro[i-1]+kelvin,0)

        Tsor_dro[i]=dromo.T[i,1,-1]-kelvin

        Tinj_dro[i]=Tsor_dro[i]

        Tinj_sto[i] = Tinj_sto[i-1] 

        Tsor_sto[i] = Tsor_sto[i-1]

    else :

        Tsor_sto[i] = ( k * y + B * Tsor_dro[i] ) / ( k + B)

        Tinj_sto[i] = Tsor_sto[i] + coeff * eff * (Tsor_dro[i] - Tsor_sto[i])

        Tinj_dro[i] = Tsor_dro[i] - eff * (Tsor_dro[i] - Tsor_sto[i])

`

Puisque lorsque agenda_dro[i]=0, il faut calculer le Tsor_dro[i] avec un débit nul

alexandrecuer commented 4 years ago

oui mais c'est pas trop naturel de recalculer Tsor_dro[i] dans la pratique, on aura un capteur j'ai testé avec ta méthode, celà a peu d'effet

seviprince commented 4 years ago

D'accord. Pour augmenter le rendement, il faut augmenter le débit du fluide du dromotherm. Mais on ne peut l’augmenter n'importe comment vu que nous avons des contraintes sur le type d'écoulement ( qui doit être laminaire à priori).

alexandrecuer commented 4 years ago

plus besoin du cas d'usage 4...je l'ai enlevé dans couplage2...d'ailleurs cas d'usage 3 peut être aussi un peu obsolète

en faisant tourner le cas d'usage 2

chauffage only :

python couplage2.py False 2
(17520, 5)
le k du système géothermique vaut 2745.5656231775747 W/K
coeff vaut 0.8333333333333335 B vaut -671.2968743925251 W/K
Bilan énergétique sur la période : 2017-05-01 03:00:00 à 2018-05-01 03:00:00
Energie récupérée par le dromotherm : 90.31119217750933 kWh/m2
Energie solaire recue : 673.28773 kWh/m2
Taux de récupération : 13.413461756908793 %
Consommation du bâtiment : 157.47437261799783 kWh/m2
Energie électrique consommée par la PAC : 52.49145753933261 kWh/m2
Energie primaire consommée par la PAC : 135.42796045147813 kWh/m2

image

chauffage + ECS :

python couplage2.py True 2
(17520, 5)
le k du système géothermique vaut 2745.5656231775747 W/K
coeff vaut 0.8333333333333335 B vaut -671.2968743925251 W/K
Bilan énergétique sur la période : 2017-05-01 03:00:00 à 2018-05-01 03:00:00
Energie récupérée par le dromotherm : 180.07717204618766 kWh/m2
Energie solaire recue : 1068.6913 kWh/m2
Taux de récupération : 16.850251522229822 %
Consommation du bâtiment : 366.6724497013311 kWh/m2
Energie électrique consommée par la PAC : 122.2241499004437 kWh/m2
Energie primaire consommée par la PAC : 315.33830674314476 kWh/m2

image

en produisant de l'ECS, on améliore le rendement de 13 à 16%

le dromotherme tourne plus souvent vu que la température du stock en sortant de l'hiver est moins importante....

fbernard494 commented 4 years ago

Hello, je vois que vous êtes à fond sur le calcul des rendements. Je vais regarder dans l'aprem. Alexandre, on peut débriefer vers 17h si tu veux oui. 15% c'est faible en effet. On peut augmenter en augmentant le débit comme le dit Febron, dans certaines limites. Il faudra faire attention aussi au code 1D du dromotherm qui est limité à un débit pas trop important, sinon, il risque d'exploser.

alexandrecuer commented 4 years ago

J'ai mis le code en ligne....

https://github.com/seviprince/dromotherm/commit/d4faa959d7605ff4385a538756bb75d968c2c3ba

alexandrecuer commented 4 years ago

@fbernard494 : Fred, tu peux regarder ce fichier aussi :

https://github.com/seviprince/dromotherm/blob/master/examples/mod1D/code1D_ncouches_w_class.py

j'ai fait un bilan énergétique et c'est pas top....pourtant j'ai pris une température d'injection fixe 10°C, ce qui me laissait espérer un meilleur rendement

donc peut-être que je fais une erreur dans ma façon d'écrire les bilans énergétiques...donc je demande ton regard....

pour contrôler que la classe OneDModel ne fait pas d'erreur par rapport à ton code procédural :

https://github.com/seviprince/dromotherm/blob/master/examples/mod1D/code1D_ncouches.py

fbernard494 commented 4 years ago

il y avait des bugs dans le premier code, tu as comité ? J'ai modifié à la main, et tu as calculé les pourcentages à la main ailleurs ?

alexandrecuer commented 4 years ago

oui j'ai fait un commit le fichier est celui là

https://github.com/seviprince/dromotherm/blob/master/examples/mod1D/code1D_ncouches_w_class.py

j'avais fait une erreur dans mon premier lien

les pourcentages s'affichent en ligne de commande...

celà donnait celà

python code1D_ncouches_w_class.py
(8760, 5)
activation du dromotherm a l'index 3624 avec la condition initiale suivante :
[[283.15 283.15 283.15 283.15 283.15]
 [283.15 283.15 283.15 283.15 283.15]
 [283.15 283.15 283.15 283.15 283.15]
 [283.15 283.15 283.15 283.15 283.15]
 [283.15 283.15 283.15 283.15 283.15]]
press any key
800.0051019757165
6368.1854
12.562528439823947

800 est l'énergie recupérée par le dromotherme en W 6300 est l'énergie reçue par le dromotherme en W 12 est le pourcentage de récup....

alexandrecuer commented 4 years ago

ah oui, il y avait un bug, on est bien a 30% donc OK

python code1D_ncouches_w_class.py
(8760, 5)
activation du dromotherm a l'index 3624 avec la condition initiale suivante :
[[283.15 283.15 283.15 283.15 283.15]
 [283.15 283.15 283.15 283.15 283.15]
 [283.15 283.15 283.15 283.15 283.15]
 [283.15 283.15 283.15 283.15 283.15]
 [283.15 283.15 283.15 283.15 283.15]]
press any key
800.0051019757165
2575.88388
31.057498677918527

je corrige

fbernard494 commented 4 years ago

j'ai fait tourner (en modifiant moi même) et je retrouve 30 % environ. On augmente un peu en mettant à 10 degrés, par rapport aux 15-20 %. Pour atteindre de plus grands taux, il faut (i) augmenter le débit (mais ici notre code explose), et il s'agit bien du débit unitaire donc en augmentant le dévers ou la charge hydraulique en amont de la couche drainante, (ii) augmenter la largeur d'écoulement (n'a d'effet qu'en augmentant le premier), (iii) diminuer la hauteur de la couche de roulement. Je peux faire tourner tout cela avec le code 2D, même si les résultats sont dans la thèse de Sarah, mais on peut vérifier... Pour la couche de roulement, on peut le faire avec le code Python, il faut juste que je recalcule les nouveaux paramètres...

seviprince commented 4 years ago

D'accord. Quel est rendement cible à atteindre et qui serait acceptable?

fbernard494 commented 4 years ago

je pense qu'on pourrait chercher 50%, en diminuant la hauteur de la couche de roulement (il faudrait prendre 2cm, ce qui pourrait être possible avec un BBTM), et en augmentant la largeur d'écoulement.

alexandrecuer commented 4 years ago

ah oui, on peut pas vraiment dépasser 0.05 m3/h... à 0.075 m3/h, on est dans le décors

alexandrecuer commented 4 years ago

je pense qu'on pourrait chercher 50%, en diminuant la hauteur de la couche de roulement (il faudrait prendre 2cm, ce qui pourrait être possible avec un BBTM), et en augmentant la largeur d'écoulement.

sauf qu'en mode couplage, avec une température d'injection variable, on voit que le rendement chute bien....

fbernard494 commented 4 years ago

oui c'est ça ! C'est le fait de prendre un modele 1D qui finit par ne pas etre stable numériquement. Si on change a la main dans input.txt la hauteur de la couche de roulement, il n'y a pratiquement pas d'effet. Il faut donc bien recaler le modele a chaque fois que l'on change la géométrie.

fbernard494 commented 4 years ago

oui ca chute, c'est normal. Il faudrait pour avoir une température d'injection basse, mettre une PAC sur l'échangeur entre dromotherm et stockage avec un ballon tampon qui monterait haut en température, lui étant la source chaude et ce qui sort du dromotherm la source froide. C'est ce que l'on faisait à Egeltons, et on arrivait à réinjecter à 15 degrés environ.

alexandrecuer commented 4 years ago

OK, pour afficher les bilans énergétiques, on peut utiliser les légendes des graphiques. Ainsi, on gagne de la place... je vais modifier les fichiers de couplage ainsi et on pourra clôturer toutes les issues actives, et faire la première release v1.0 :-)

image

alexandrecuer commented 4 years ago

oui ca chute, c'est normal. Il faudrait pour avoir une température d'injection basse, mettre une PAC sur l'échangeur entre dromotherm et stockage avec un ballon tampon qui monterait haut en température, lui étant la source chaude et ce qui sort du dromotherm la source froide. C'est ce que l'on faisait à Egeltons, et on arrivait à réinjecter à 15 degrés environ.

avec une PAC entre dromotherme et ballon tampon haute température, tu auras un meilleur rendement sur le dromotherme, mais pas forcément sur le stockage enterré

seviprince commented 4 years ago

J'ai mis le code en ligne....

d4faa95

Je pense avoir mal gérer des conflits qui ont surgi de mon côté. J'aimerais que vous remettiez la dernière version à votre niveau de couplage 2 en ligne. Merci

fbernard494 commented 4 years ago

j'ai fitté un modele 1D pour une épaisseur de 2cm, je vais mettre le fichier input.txt associé sous la forme input2cm.txt, et je déposerai aussi le fichier cible du modele 2D, pour comparaison par Febron. Mais ça ne change rien à notre problème au fond car le stockage va encore plus vite arriver à saturaation en température (environ 40 degrés). Si on diminue la longeur de chaussée à 1.5 ou lieu de 7.5, on a un taux de 50 % environ (sans changer le volume du stockage), mais bien sûr on ne couvre plus le besoin de chauffage de 120 m2. Je ne comprends pas trop les ordres de grandeur, ou j'ai loupé qualque chose. Si le besoin est environ 350 kWh/m2, 120 m2 ca fait en gros 40000. La chaussée recoit 600 kWh/m2 donc meme avec un taux de 100%, il faudrait environ 60 m2 de chaussée, et donc 120 m2 pour 50% et 240 m2 pour 25%. Avec la PAC qui apporte de l'énergie électrique, ca module un peu pour l'énergie primaire à apporter, mais quand même.

alexandrecuer commented 4 years ago

Je pense avoir mal gérer des conflits qui ont surgi de mon côté. J'aimerais que vous remettiez la dernière version à votre niveau de couplage 2 en ligne. Merci

oui effectivement, c'est pas grave, j'ai tout remis d'aplomb

alexandrecuer commented 4 years ago

Je ne comprends pas trop les ordres de grandeur, ou j'ai loupé qualque chose. Si le besoin est environ 350 kWh/m2, 120 m2 ca fait en gros 40000. La chaussée recoit 600 kWh/m2 donc meme avec un taux de 100%, il faudrait environ 60 m2 de chaussée, et donc 120 m2 pour 50% et 240 m2 pour 25%. Avec la PAC qui apporte de l'énergie électrique, ca module un peu pour l'énergie primaire à apporter, mais quand même.

pour les ordres de grandeurs, le besoin total d'une maison pas isolée de 20m2 = le besoin total d'une maison isolée de 120/150 m2....en fait je ne devrais pas afficher les kWh/m2 au niveau du bâtiment, mais seulement les kWh. je crois....Fébron avait tout mis en musique ainsi alors j'ai gardé les choses telles quelles

fbernard494 commented 4 years ago

oui on peut parler d'énergie totale plutôt sue ramener au m2 du dromotherm ou de la maison, pour voir si ça s'équilibre. Il faudra du coup peut-être augmenter le stockage ?

seviprince commented 4 years ago

Oui peut-être il faut augmenter le stockage...je vais encore consulter la littérature pour voir les ordres de grandeurs de l'énergie stockée par ces types de stockage par unité de volume et comparer avec ce qu'on a actuellement.

alexandrecuer commented 4 years ago

Effectivement le rendement est assez faible. Une étude économique des différents cas d'usage nous permettra de préconiser un cas d'usage économiquement acceptable.

cf début d'étude réalisée il y a 2 ans :

https://github.com/seviprince/dromotherm/blob/gh-pages/tests_python/cadre_%C3%A9tude_%C3%A9conomique_Octobre_2017_V2_small.ods

seviprince commented 4 years ago

Bien reçu