Die Funktion zur Wärmezufuhr durch Wärmeübertragungsrate und -temperatur wurde in einer eindimensionalen instationären Wärmeübertragungsanalyse mit Heatrapy hinzugefügt. Ursprünglich war es eine Spezifikation, die es ermöglicht, Wärme an jede Position zu bringen, also habe ich diese verwendet.
Stellen Sie die Eingabebedingungen mit set_input_heat_transfer ein und erwärmen Sie sich bei der Berechnung mit compute. Die Wärme wird zu jedem Zeitschritt entsprechend der Temperaturdifferenz für jede Stunde zugeführt.
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):
[Ausgelassen]
self.input_heat_transfer = False #Wenn dies auf True gesetzt ist, die Wärmeübertragungsrate+Hitze auf Temperatur bringen
[Ausgelassen]
def set_input_heat_transfer(self,input_heat_transfer_point,Heat_transfer_coefficient,Heat_transfer_temparature):
"""Fügen Sie jeder Position Wärmeübertragungsrate und Temperatur hinzu. Derzeit wird nur ein Punkt Wärme zugeführt
Arguments:
input_heat_transfer_point {int} --Es ist ein Punkt zum Aufheizen. 1 für die Spitze
Heat_transfer_coefficient {float} --Wärmeübertragungsrate[W/(m2K)]
Heat_transfer_temparature {float} --Die für die Wärmeübertragung verwendete Temperatur[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
[Ausgelassen]
def compute(self, timeInterval, write_interval, solver='explicit_k(x)',
modeTemp=False, numFlag=0.5, modeTempPoint=1):
#Bei Eingabe mit Wärmeübertragungsrate und Temperatur
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)
Ich habe nicht die Hitze bekommen, die ich erwartet hatte. Der Grund war einfach und ein Fehler in der Einheit. In der Q0-Berechnung dividiere ich durch self.dx. Die Einheit der Wärmeübertragungsrate ist [W / (m2 K)].
Ich habe es mit Kupfer versucht. 【Eingang】
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))
【Ergebnis】 Es fühlt sich gut an. Seien Sie vorsichtig mit dem Wert von dt. Das Verringern von dt verbessert die Genauigkeit, erhöht jedoch die Analysezeit. Beim Drehen muss nach einem guten dt-Wert gesucht werden.
Der Quellcode ist unten. https://github.com/myao9494/heatrapy Der Test ist heat_transfer_test.ipynb
Recommended Posts