Closed alexandrecuer closed 4 years ago
oui ce serait pas mal de tester ! J'ai fait tourner la derniere version du code. Ca tourne vraiment tres vite :)
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
ensuite çà se corse :
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.....
C'est moins bon qu'avec python couplage2.py False 0
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)??
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
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
Donc sans conso d'ECS, on voit très nettement que l'efficacité de l'échangeur diminue fortement cf ce que disait Benoit....
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%
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.
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
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
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).
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
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
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....
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.
J'ai mis le code en ligne....
https://github.com/seviprince/dromotherm/commit/d4faa959d7605ff4385a538756bb75d968c2c3ba
@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
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 ?
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....
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
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...
D'accord. Quel est rendement cible à atteindre et qui serait acceptable?
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.
ah oui, on peut pas vraiment dépasser 0.05 m3/h... à 0.075 m3/h, on est dans le décors
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....
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.
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.
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 :-)
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é
J'ai mis le code en ligne....
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
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.
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
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
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 ?
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.
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 :
Bien reçu
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é