Ajout de la fonction d'entrée de chaleur en fonction du taux de transfert de chaleur et de la température dans l'analyse de transfert de chaleur non stationnaire unidimensionnelle avec heatrapy. À l'origine, c'était une spécification qui permettait à la chaleur d'entrer dans n'importe quelle position, alors j'ai utilisé cela.
--Je bricoler avec la classe single_object dans system.py
Définissez les conditions d'entrée avec set_input_heat_transfer et chauffez lors du calcul avec compute. La chaleur est entrée à chaque pas de temps en fonction de la différence de température pour chaque heure.
henko.py
class single_object(object):
def __init__(self, amb_temperature, materials=('Cu',), borders=(1, 11),
materials_order=(0,), dx=0.001, dt=0.1, file_name='data.txt',
boundaries=(0, 0), Q=[], Q0=[], heat_points=(1, -2),
initial_state=False, h_left=50000., h_right=50000.,
materials_path=False):
[Omis]
self.input_heat_transfer = False #Lorsqu'il est réglé sur True, le taux de transfert de chaleur+Mettre en chaleur à température
[Omis]
def set_input_heat_transfer(self,input_heat_transfer_point,Heat_transfer_coefficient,Heat_transfer_temparature):
"""Ajoutez le taux de transfert de chaleur et la température à n'importe quelle position. Actuellement, il s'agit d'un apport de chaleur à un seul point
Arguments:
input_heat_transfer_point {int} --C'est un point à réchauffer. 1 pour le haut
Heat_transfer_coefficient {float} --Taux de transfert de chaleur[W/(m2K)]
Heat_transfer_temparature {float} --La température utilisée pour le transfert de chaleur[K]
"""
self.input_heat_transfer=True
self.input_heat_transfer_point = input_heat_transfer_point
self.Heat_transfer_coefficient = Heat_transfer_coefficient
self.Heat_transfer_temparature = Heat_transfer_temparature
[Omis]
def compute(self, timeInterval, write_interval, solver='explicit_k(x)',
modeTemp=False, numFlag=0.5, modeTempPoint=1):
#Lors de la saisie avec le taux de transfert de chaleur et la température
if self.input_heat_transfer:
td = self.temperature[self.input_heat_transfer_point][0]
self.Q0[self.input_heat_transfer_point] = self.Heat_transfer_coefficient * (self.Heat_transfer_temparature - td)/self.dx
print(td,self.Q0)
Je n'ai pas eu la chaleur que j'attendais. La raison était simple et une erreur dans l'unité. Dans le calcul Q0, je divise par self.dx. L'unité du taux de transfert de chaleur est [W / (m2 K)].
Je l'ai essayé avec du cuivre. 【contribution】
heat_transfer_test.py
import heatrapy as ht
import pandas as pd
import os
if os.path.exists("heat_transfer.txt"):
os.remove("heat_transfer.txt")
example = ht.single_object(amb_temperature=293, materials=('Cu',), borders=(1,21),materials_order=(0,),
dx=0.001, dt=0.001, file_name='heat_transfer.txt',boundaries=(0,0), Q=[], Q0=[],initial_state=False)
example.set_input_heat_transfer(1,700,900)
example.compute(timeInterval=30, write_interval=10, solver='implicit_k(x)')
df = pd.read_csv("heat_transfer.txt")
df=df.drop("heat[1](W)",axis=1)
df=df.drop("heat[-2](J)",axis=1)
df = df.set_index("time(s)")
df.plot(figsize=(15,8))
【résultat】 Ça fait du bien. Soyez prudent avec la valeur de dt. Diminuer dt augmentera la précision, mais augmentera le temps d'analyse. Il faut rechercher une bonne valeur dt en tournant.
Le code source est ci-dessous. https://github.com/myao9494/heatrapy Le test est heat_transfer_test.ipynb
Recommended Posts