Outline

Glas

Gleichungen

Rechnung

Auswertung

Berechnung mit Singular


Durch symbolische Manipulationen werden aus gegebenen Eingangsdaten (Molekulargewichte, Temperatur, Ausgangskonzentrationen) die Gleichungen in einem Ring mit langen "Floats" automatisch generiert. Die Gleichungen werden durch ein global konvergentes Newtonferfahren berechnet. Danach sind die chemischen Aktivitäten der Ausgangsstoffe leicht zu ermitteln.

Lade benötigte Biblioteken
LIB "glas.lib";    // Prozeduren: gemischsnamen, createchemkoeff,
                   //             gleichungen, konzplus, getstart
LIB "ntsolve.lib"; // Prozedur:   nt_solve
Eingabe der Daten
// Bezeichnung der Ausgangsstoffe
list n="C","M","A","S";
// Matrix der Molekulargewichte der Verbindungen
intmat vb[4][16]=
1,2,0,3,12,1,1,1,2,0,1,0,0,0,2,1,
0,0,0,0, 0,0,0,0,0,2,1,1,2,1,1,1,
0,0,3,1, 7,2,6,1,1,2,0,0,0,1,0,0,
1,1,2,0, 0,0,0,2,1,5,2,1,1,0,2,1;
// Temperatur T (in Grad Kelvin)
number T=1273;
// Quasipotentiale der Ausgangsstoffe
vector Gb=[710.32,632.11,1832.41,1014.23];
// Quasipotentiale der Verbindungen
vector Gv=[1809.47,2614.19,7538.19,4066.45,21839.93,
          4446.45,11777.19,4704.59,4462.73,10137.22,
          3543.27,1702.53,2399.79,2470.85,4365.37,
          2536.67];
// Ausgangkonzentrationen
vector z=[0.1,0.25,0.4,0.25];
Automatische symbolische Modellgenerierung
// generiere geeignete Bezeichner der Unbekannten
string namen=gemischsnamen(n,vb);
// bilde den Ring
string rr="ring gemisch=(real,30),("+namen+",Mol),(c,dp);";
execute(rr);
// generiere die (transformierten) Gleichungen
int trans=2; // Potenz der Transformation
vector Ch=createchemkoeff(trans,T,Gb,Gv,vb);
ideal gl=gleichungen(trans,Ch,vb);
gl=homog(gl,Mol);
ideal in=konzplus(gl,z);
Lösung mit SINGULAR
// bilde (heuristische) Startwerte
ideal st=getstart(16,0.001,z);
// Verfahrensparameter
intvec pp=100,15,0;
// Lösung durch automatisch gedämpftes Newton Verfahren
ideal aa=nt_solve(in,st,pp);
// aa enthält die Lösungen

Karlsruhe http://www.singular.uni-kl.de/