Modellierung der transienten Wärmeübertragung zwischen zwei 1-D-Materialien


7

Ich habe daran gearbeitet, ein 1-D-Modell eines Materials mit einer Schicht aus hitzebeständigem Material zu erstellen. Dafür habe ich versucht, die implizite Finite-Differential-Methode zu verwenden. Die Gleichungen lauten wie folgt:

E.˙ichn- -E.˙Öut=E.˙st
oder Wobei
1αdTdt=d2Tdx2
α=kρCp

Wenn es also nur ein Material gibt, würde eine interne Knotengleichung so aussehen (ich gehe davon aus, dass alle Vorzeichenkonventionen in den Knoten einfließen, n ist der Knotenort, p ist der Zeitschritt und x ist die Dicke eines Knotens ): oder Wobei

kAΔx(Tn+1p+1Tnp+1)+kAΔx(Tn1p+1Tnp+1)=CpρAΔxΔt(Tnp+1Tnp)
(1+2Fo)Tnp+1Fo(Tn1p+1+Tn+1p+1)=Tnp
Fo=αΔt(Δx)2

Die Oberflächenknotengleichung sieht folgendermaßen aus: oder Wobei

hA(TTnp+1)+kAΔx(Tn1p+1Tnp+1)=CpρAΔx2Δt(Tnp+1Tnp)
(1+2Fo+2FoBi)Tnp+12Fo(Tn1p+1+BiT)=Tnp
Bi=hΔxk

Das scheint für mich ziemlich gut zu funktionieren, wenn ich nur ein Material verwende. Ich gebe ihm einige Anfangsbedingungen und lasse es in den stationären Zustand laufen, dann überprüfe ich es mit einem einfachen stationären Widerstandsmodell und es gibt eine Übereinstimmung.

Ich stoße auf Probleme, wenn ich eine interne Materialgrenze einfüge. Dies ist die Gleichung, mit der ich sie simuliert habe (Diese Berechnung gilt für einen Knoten in Material A neben einem Knoten in Material B).

(kb+ka)AΔxb+Δxa(Tn+1p+1Tnp+1)+kaAΔxa(Tn1p+1Tnp+1)=CpaρaAΔxaΔt(Tnp+1Tnp)
oder Wobei und Hinweis: Wenn die Materialien gleich sind Diese Gleichung entspricht der obigen Grenzgleichung.
(1+Fo+Foab)Tnp+1FoTn1p+1FoabTn+1p+1=Tnp
Foab=αabΔtΔxa(Δxb+Δxa)αeinb=kb+keinρeinC.peinF.Öeinb=F.Ö

Mit dieser hinzugefügten Grenze habe ich erneut ein stationäres Widerstandsmodell erstellt, um dies zu überprüfen, und einen Unterschied von etwa 10% festgestellt, der nicht erwartet wurde. (Hinweis: Aktualisiert, um eine Mittelung von k Werten hinzuzufügen, um diesen Unterschied zu beseitigen. Sie sind sich nicht sicher, ob er richtig ist, aber er hat den Fehler behoben.) Nachfolgend sehen Sie ein Diagramm, das die beiden Modellkonfigurationen zeigt:

Modelldiagramm

Für den Testfall habe ich die beliebigen Konstanten verwendet: Hinweis: Die Anzahl der Knoten unterscheidet sich von der Abbildung oben (4).

Δt=0,15
N.Ödesein=N.Ödesb=5
Δxein=Δxb=L.enGth/.(N.Ödes- -0,5)=10/.4.5=2.2222
hein=hb=1
ρa=ρb=1
Cpa=Cpb=1
ka=5
kb=10

Sollte ich diesen 10% Unterschied zwischen den beiden Modellen bekommen? (aktualisiert, um den Unterschied zu beheben, aber immer noch nicht sicher, ob die neue Gleichung korrekt ist) Ist diese Gleichung, die ich für die Materialgrenze verwende, korrekt?

Übrigens stammen viele der Gleichungen für Oberflächenknoten und Grenzknoten aus dem Buch "Fundamentals of Heat and Mass Transfer" von Incropera und DeWitt. 5. Ausgabe, Abschnitt 5.9.2.


Hallo @ chap178, was ist deine Frage genau?
Algo

Was sind die Energiegleichungen für die Grenze zwischen zwei Materialien? Ist die letzte Gleichung dort oben der richtige Weg, dies zu tun?
chap178

Um ehrlich zu sein, sind die Zahlen, die ich verwendet habe, ziemlich willkürlich:
chap178

2
Fügen Sie diese Details hoffentlich mit einem schematischen Diagramm für beide Fälle zum Fragetext hinzu (da ich Ihr Problem immer noch nicht verstehe).
Algo

1
@Algo - Ich stimme zu, ein schematisches Diagramm würde definitiv zum Verständnis des Problems beitragen. Aus meiner Sicht sieht Ihre Gleichung für den Oberflächenknoten für mich nicht korrekt aus.
Nluigi

Antworten:


9

Ich vermute, Sie lösen das folgende System:

tT=αix2T.

mit αich=κich/.ρichcp,ich für Material ich, vorbehaltlich der Bedingungen:

T.(x,0)=T.T.(0,t)=T.h- -κxT.(L.,t)=h[T.(L.,t)- -T.]]

Jetzt können Sie verschiedene Materialien folgendermaßen simulieren:

  1. Definieren Sie eine Schnittstelle an einem Knoten unter xb;; machenαich eine Funktion von x, haben α=α1 in der Region 0xxb und α=α2 in der Region xbxL..
  2. Auferlegen eines thermischen Gleichgewichts und einer Kontinuität des Wärmeflusses an der Grenzfläche; dh:
    T.(xb- -)=T.(xb+)- -κ1xT.(xb- -)=- -κ2xT.(xb+)

Ich würde den Knoten entsprechend machen x=0 gleicht T=Th und der Knoten entsprechend x=L gleicht:

κ2T(L,t)T(L,t)Δx=h[T(L,t)T]
T(L,t)=T(L,t)βT1ββ=hΔxκ2

wo T(L,t) ist der Knoten links von x=L.

Lösung basierend auf endlichem Volumen

Ich beschloss, dies noch einmal zu betrachten und fand eine Lösung auf der Basis von Finite Volume, die meiner Meinung nach besser funktioniert. Zufälligerweise ist eine 1D-FV-Lösung dieselbe wie eine 1D-FD-Lösung, außer dass das Gitter versetzt ist. Beginnen wir einfach und fügen Komplexität hinzu, nachdem alles richtig funktioniert hat.

Einige wichtige Annahmen, die ich in der Analyse getroffen habe:

  • Knoten sind bei monospaced Δx=L/N wo L ist die Länge der Domain und N.die Anzahl der Knoten; Dies vereinfacht die Analyse erheblich.
  • Die Grenzen und die Grenzfläche befinden sich genau auf halber Strecke zwischen den Knoten. Dies ermöglicht eine genaue Approximation zweiter Ordnung von Temperaturen und Gradienten an diesen Grenzen.
  • Ich kümmere mich nicht um die zeitliche Integration dieser Systeme, sondern überlasse dies einem relevanten ODE-Solver, der lineare Systeme verarbeiten kann (siehe Verwendung des odeintvon Scipy bereitgestellten Solvers im unten angehängten Python-Code). Ein guter Löser verfügt über adaptive Zeitschritte, mit denen ich Probleme mit numerischer Instabilität im Zusammenhang mit dem CFL-Kriterium vermeiden kann.

Wir beginnen mit einer einfachen Diffusion zwischen zwei vom System definierten Grenzen:

tT=αx2T
T(x,0)=TT(0,t)=ThT(L,t)=T

In FV definieren wir eine Durchschnittstemperatur über dem Kontrollvolumen dV=Adx::

T¯i=VTdVVdV=1Δxi12Δxi+12ΔxTdx

Wir integrieren dann unsere PDE:

1Δxi12Δxi+12ΔxtTdx=αΔxi12Δxi+12Δxx2Tdx

tT¯i=αΔx[xT|i12ΔxxT|i+12Δx]

tT¯i=αΔx2[T¯iΔx2T¯i+T¯i+Δx]

Hier 0iN1 sind die inklusiven Knoten, dh die Knoten liegen innerhalb der Domäne gemäß diesem Schema:

Geben Sie hier die Bildbeschreibung ein

Die Umrechnung von der Knotenposition in die räumliche Position ist gegeben durch:

i=NxL12

In diesem versetzten Gitter sind die Grenzen x=0 und x=Lbefinden sich auf halber Strecke zwischen zwei Knoten. Wenn wir uns jedoch einen Geisterknoten bei vorstelleni=1 und i=Nkönnen wir die Grenztemperaturen definieren als:

Th=T¯1+T¯02T¯1=2ThT¯0

T=T¯N1+T¯N2T¯N=2TT¯N1

Dies ergibt dann die folgenden ODEs für i=0 und i=N1::

tT¯0=αΔx2[T¯12T¯0+T¯1]=αΔx2[2Th3T¯0+T¯1]

tT¯N1=αΔx2[T¯N22T¯N1+T¯N]=αΔx2[T¯N23T¯N1+2T]

Jetzt sind wir in der Lage, unser lineares System zu definieren. Wenn wir einen Temperaturvektor definieren:

T¯=[T¯0T¯1T¯N2T¯N1]T

Das ODE-System kann wie folgt geschrieben werden:

tT¯=ω(AT¯+b)ω=αΔx2

wo:

A=[3100012100000012100013]b=[2Th0002T]

Lösen dieses Systems für Th=1, T=0, L=1ergibt folgendes Ergebnis:

Geben Sie hier die Bildbeschreibung ein

wobei die Temperaturprofile zu unterschiedlichen Zeiten angegeben werden und die Marker die analytische Lösung sind, die gegeben ist durch:

T=Th(ThT)xL

Hinzufügen einer konvektiven Randbedingung

Lassen Sie uns die Randbedingung bei ändern x=L zu:

kxT(L,t)=h(T(L,t)T)

Wir diskretisieren diesen Zustand:

k(T¯NT¯N1Δx)=h(T¯N1+T¯N2T)

und neu anordnen für die Geisterknotentemperatur bei i=N::

T¯N=Nux1+12NuxT+112Nux1+12NuxT¯N1Nux=hΔxk
Dies ist nun eine Funktion einer Gitter-Nusselt-Zahl, die die relative Bedeutung der konvektiven für die leitende Wärmeübertragung angibt. WennNux1 dann ist die Konvektion im Vergleich zur Leitung vernachlässigbar und umgekehrt, wenn Nux1.

Beachten Sie, dass, wenn wir die Grenzen nehmen:

limNux0T¯N=T¯N1limNuxT¯N=2TT¯N1
Wir erhalten eine Bedingung ohne Fluss als Nux0 und die zuvor gefundene konstante Temperaturbedingung als Nux. Dies gibt einen guten Hinweis auf die Richtigkeit der Implementierung.

Um diese Bedingung zu berücksichtigen, ändern wir die ODE wie folgt:

tT¯N1=αΔx2[T¯N22T¯N1+T¯N]=αΔx2[T¯N2(2112Nux1+12Nux)T¯N1+Nux1+12NuxT]

was ändert A und b zu:

A=[310001210000001210001(2112Nux1+12Nux)]b=[2Th000Nux1+12NuxT]

Um die Temperatur bei zu erhalten x=L, wir haben:

TL=T¯N1+T¯N2=12Nux1+12NuxT+11+12NuxT¯N1

Das Ergebnis für das gleiche System wie oben mit Nu=NNux=1 ist:

enter image description here

Die analytische Lösung ist gegeben durch:

T=Th(ThT)Nu1+NuxL
Nu=hLk=NuxLΔx=NNux

Verbundmaterial simulieren

Um ein Verbundmaterial zu simulieren, definieren wir eine Schnittstelle unter x=xb befindet sich am Knoten i=ib wo die Region 1 (0x<xb) ist charakterisiert durch α1 und Region 2 (xb<xL) ist charakterisiert durch α2. An der Grenzfläche muss ein thermisches Gleichgewicht und eine Kontinuität des Wärmeflusses bestehen:

T.1(xb,t)=T.2(xb,t)

- -k1xT.1(xb,t)=- -k2xT.2(xb,t)

wo ichb- - und ichb+ sind die Knoten ich am nächsten an der Schnittstelle in der Region 1 und 2beziehungsweise; dhib=floor(ib) and ib+=ceil(ib).

We discretize the equations:

T¯ib,1+T¯ib+Δx,12=T¯ib+Δx,2+T¯ib+,22

k1T¯ib+Δx,1T¯ib,1Δx=k2T¯ib+,2T¯ib+Δx,2Δx

and solve for the ghost nodes:

T¯ib+Δx,1=κ1κ+1T¯ib,1+2κ+1T¯ib+,2

T¯ib+Δx,2=2κκ+1T¯ib,1κ1κ+1T¯ib+,2

where κ=k1/k2.

The ODEs closest to the interface node are changed to:

tT¯ib=α1Δx2[T¯ibΔx(2κ1κ+1)T¯ib+2κ+1T¯ib+Δx]

tT¯ib+=α2Δx2[2κκ+1T¯ib+Δx(2+κ1κ+1)T¯ib++T¯ib++Δx]

which modifies the linear system to:

tT¯=ω(AT¯+b)

A=[311211211(2γ)2κ+12κκ+1(2+γ)11211211(2δ)]

γ=κ1κ+1δ=112Nux1+12Nux

b=[2ThNux1+12NuxT]ω=1Δx2[α1α1α2α2]

where I have defined a new matrix ω which takes care of different values of α at different nodes.

To obtain the temperature at x=xb, we have:

Txb,1=T¯ib,1+T¯ib+Δx,12=κκ+1T¯ib,1+1κ+1T¯ib+,2

Txb,2=T¯ib+Δx,2+T¯ib+,22=κκ+1T¯ib,1+1κ+1T¯ib+,2

which shows Txb,1=Txb,2 as imposed by the boundary condition at the interface.

Solving this system, with similar parameters as above and α1=k1=10 and α2=k2=1 yields this nice result:

enter image description here

The analytical solution is given by:

T1=Th+(TTh)1κΓΠ1+ΠxL

T2=Th+(TTh)1+ΓΠxL1+Π

Γ=Nu1+NuΠ=1ΓLxbκ1κ

Python code:

The following Python code is used to generate the results.

import math
import numpy as np
import scipy.integrate as spi
import matplotlib.pyplot as plt

from __future__ import division, print_function

l, xb = 1, 0.5
a2, alpha = 1, 10 #alpha = a1/a2
k2, kappa = 1, 10 #kappa = k1/k2
Th, Tinf = 1, 0
Nu = 1 #= hL/k2
tp = l**2/a2

n = 100
dx = l/n
Nux = Nu/n

ib = n*xb/l-0.5
ibm = int(math.floor(ib))
ibp = int(math.ceil(ib))

A = np.zeros((n,n))
b = np.zeros((n,))
omega = np.zeros((n,n))

A[0,0], A[0,1], b[0], omega[0,0] = -3, 1, 2*Th, alpha*a2/dx**2
for i in xrange(1,ibm):
    A[i,i-1], A[i,i], A[i,i+1], omega[i,i] = 1, -2, 1, alpha*a2/dx**2
A[ibm,ibm-1], A[ibm,ibm], A[ibm,ibm+1], omega[ibm,ibm] = 1, -(2-(kappa-1)/(kappa+1)), 2/(kappa+1), alpha*a2/dx**2
A[ibp,ibp-1], A[ibp,ibp], A[ibp,ibp+1], omega[ibp,ibp] = 2*kappa/(kappa+1), -(2+(kappa-1)/(kappa+1)), 1, a2/dx**2
for i in xrange(ibp+1,n-1):
    A[i,i-1], A[i,i], A[i,i+1], omega[i,i] = 1, -2, 1, a2/dx**2
A[n-1,n-2], A[n-1,n-1], b[n-1], omega[n-1,n-1] = 1, -(2-(1-Nux/2)/(1+Nux/2)), Nux/(1+Nux/2)*Tinf, a2/dx**2

def diff_eq(T,t):
    return np.dot(omega, np.dot(A,T) + b)

i = np.linspace(0,n-1,n)
x = l/n*(i+1/2)
t = tp*np.logspace(-4,1,6)
T0 = Tinf*np.ones((n,))

sol = spi.odeint(diff_eq, T0, t)

## boundary condition at x=0
x = np.insert(x, 0, 0)
sol = np.insert(sol, 0, Th, axis=1)
## boundary condition at x=l
x = np.insert(x, n+1, l)
Tl = (Nux/2*Tinf + sol[:,-1])/(1+Nux/2)
sol = np.insert(sol, n+1, Tl, axis=1)

gamma = Nu/(1+Nu)
pi = l/xb/gamma*kappa/(1-kappa)
ana1 = Th+(Tinf-Th)*(gamma*pi/kappa*x/l)/(1+pi)
ana2 = Th+(Tinf-Th)*(1+gamma*pi*x/l)/(1+pi)
ana = np.append(ana1[x<xb],ana2[x>=xb])

plt.plot(x, np.transpose(sol), '-',
         x[::n//10], ana[::n//10], 'o')
plt.xlabel('Spatial coordinate, x')
plt.ylabel('Temperature coordinate, T')
plt.show()

Second order approximations on boundaries:

I want to quickly show that these approximations are indeed second-order accurate. To do this we take a Taylor expansion about the relevant boundary:

T(xb+12Δx,t)=T(xb,t)+xT(xb)12Δx+12x2T(xb)(12Δx)2+O(Δx3)

T(xb12Δx,t)=T(xb,t)xT(xb)12Δx+12x2T(xb)(12Δx)2+O(Δx3)

If we add these equations:

T(xb+12Δx,t)+T(xb12Δx,t)=2T(xb,t)+O(Δx2)

and rearrange we get:

T(xb,t)=T(xb+12Δx,t)+T(xb12Δx,t)2+O(Δx2)

which is our approximation for the temperature at a boundary shown to be indeed second-order in Δx.

If we subtract the two Taylor expansion:

T(xb+12Δx,t)T(xb12Δx,t)=xT(xb)Δx+O(Δx3)

and rearrange, we get:

xT(xb)=T(xb+12Δx,t)T(xb12Δx,t)Δx+O(Δx2)

which is the approximation for the temperature gradient at a boundary, again shown to be second-order accurate in Δx.


With the second bullet, how do you account for the transiently stored energy in the nodes?
chap178

@ chap178 - siehe meine überarbeitete Antwort, hoffentlich gibt sie dir einen Einblick, wie das geht
Nluigi

1
@ chap178 - Wenn diese Antwort Ihnen geholfen hat, ziehen Sie bitte in Betracht, sie zu akzeptieren
Nluigi

(+1) Great answer and major bummer this isnt accepted --> More upvotes required to offset questions without accepted answers. Out of curiosity, how long did this take to write?!
OnStrike

1
@theNamesCross: it's been a while so i can't remember exactly, also i didn't do the derivations/coding and writing in one go but i think the derivations/coding was about 2 hours and writing took the good part of an evening... it keeps me off the streets :)
Nluigi
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.