Hier möchte ich mit euch meine Erfolge und Rückschläge teilen bei dem Versuch selbst ein h-x – Diagramm zu zeichnen.
Erste Anlaufstelle um mehr über das Diagramm zu erfahren war der Wikipedia Eintrag zum Mollier-h-x-Diagramm. Dieser Eintrag ist zwar sehr interessant, hilft aber nicht wirklich dabei zu verstehen, wie das Diagramm erstellt wird 😦
Über den Artikel relative Feuchte gelangt man dann aber schnell zum Begriff des Sättigungsdampfdrucks, und von dort zur Magnus-Formel
t = relative Teperatur in °C
Mit der Magnus-Formel lässt sich der Sättigungsdampfdruck von Wasserdampf annähernd bestimmen. Im genannten Wikipedia-Artikel gibt es einen Link zur Unterseite Formeln und Tabellen, diese enthält neben einer Tabelle (an Hand derer man seine eigenen Berechnungen prüfen kann) auch eine bessere Näherungsformel – Am Ende habe ich diese dann auch benutzt.
T = absoulte Temperatur in K
Die Ergebnisse beider Formeln gelten nur für ebene Oberflächen und in der Abwesenheit anderer Gase bzw. Gasgemische wie Luft. Sie gelten also lediglich für reine Phasen und benötigen einen Korrekturfaktor bei der Anwesenheit von Luft.
das ganze sieht in Javascript dann so aus:
function saettigungsdampfdruck(T){ var term1=(-6094.4642/T); var term2=21.1249952 - (2.7245552e-2) * T; var term3=(1.6853396e-5) * (T*T); var term4=2.4575506 * Math.log(T); return Math.exp(term1 + term2 + term3 + term4)*1.00519; }
Da wir nun eine Formel zur Berechnung des Sättigungsdampfdrucks haben, die nur von der Temperatur T abhängt, ist es nur noch ein kleiner Schritt zur ersten Etappe. Wir können uns nun der relativ einfachen Formel für die Sättigungsmenge von Wasserdampf zuwenden. Die maximale Sättigungsmenge beträgt
hier ist
der Sättigungsdampfdruck nach der oben genannten Formel.
T die absolute Temperatur in K
die individuelle Gaskonstante des Wassers = 461,52
function saettigungsmenge(t){ var T= 273+t; return (saettigungsdampfdruck(t)*1000)/(461,52*(T)) }
das Ergebnis dieser Formel ist allerdings in g/m³, wir brauchen jedoch die ausgabe in g/kg. Das Ergebnis muss also noch durch die Dichte der Luft bei Temperatur T geteilt werden. Die Formel dafür ist,
athmosphärischer Normdruck 101325Pa
Gaskonstante der Luft 287
function luftdichte(T){ return 101325/(287*T) }
unsere obere Formel für die Sättigungsmenge können wir nun abändern, so dass sie einen Wert in g/kg zurück gibt.
function saettigungsmenge(t){ var T= 273+t; return (saettigungsdampfdruck(T)*1000)/(461.52*(T))/luftdichte(T) }
Nun können wir ein erstes Diagramm zeichnen:
Dies ist die Sättigungskurve für Wasserdampf, also die Kurve für eine reletive Luftfeuchte von 100%. Was uns feht ist die Möglichkeit eine Kurvenschaar für belibige relative feuchten zu zeichnen. Dies ist allerdings sehr simple. Wir müssen unserer Funktion lediglich einen Parameter für die relative Luftfeuchte übergeben, und das Ergebnis einfach damit multiplizieren.
function saettigungsmenge(t,rel){ var T= 273+t; return ((saettigungsdampfdruck(T)*1000)/(461.52*(T))/luftdichte(T))*rel }
Nun können wir die absolute Menge Wasser in der Luft bei gegebener Temperatur und relativer Feuchte berechnen.
der vollständige Code zum Zeichnen des Diagramms sieht wie folgst aus:
<html> <script> function luftdichte(T){ return 101325/(287*T) } function saettigungsdampfdruck(T){ var term1=(-6094.4642/T); var term2=21.1249952 - (2.7245552e-2) * T; var term3=(1.6853396e-5) * (T*T); var term4=2.4575506 * Math.log(T); return Math.exp(term1 + term2 + term3 + term4)*1.00519; } function saettigungsmenge(t,rel){ var T= 273+t; var x=(saettigungsdampfdruck(T)*1000)/(461.52*(T))/luftdichte(T) return x*rel } </script> <style> body{background:#eee} </style> <body> <svg id="svg" xmlns="http://www.w3.org/2000/svg" width="600" height="400" viewBox="0 0 600 400" fill="none" stroke="black"> <rect x="0" y="0" width="600" height="400" fill="white"/> </svg> </body> <script> var svgns="http://www.w3.org/2000/svg" var svg=document.getElementById("svg") for(var t=0;t<=60;t+=5){ var path=document.createElementNS(svgns,"line") var y1=400-t*7 path.setAttribute("x1",0) path.setAttribute("y1",y1) path.setAttribute("x2",600) path.setAttribute("y2",y1) path.setAttribute("stroke","#ddd") svg.appendChild(path) } for(var k=0;k<=60;k+=2){ var path=document.createElementNS(svgns,"line") var x1=k*10 path.setAttribute("x1",x1) path.setAttribute("y1",0) path.setAttribute("x2",x1) path.setAttribute("y2",400) path.setAttribute("stroke","#ddd") svg.appendChild(path) } for(var r=0;r<=1;r+=0.1){ var d="M0,400" for(var t=0;t<=60;t++){ d+=`L${saettigungsmenge(t,r)*10} ${400-t*7}` } var path=document.createElementNS(svgns,"path") path.setAttribute("d",d) path.setAttribute("stroke","red") path.setAttribute("stroke-width",2) svg.appendChild(path) } </script> </html>
Weiter gehts im 2ten Teil…
Hey,
ich wäre sehr an dem zweiten Teil interessiert. Gibt es den irgendwo und ich bin nur zu blöd ihn zu finden?
LikeGefällt 1 Person
Das würde mich auch Interessieren
LikeLike