Bei einigen Bauteilen besteht die Möglichkeit, anstelle eines oder mehrere Vorgabewerte jeweils eine EbsScript-Funktion vorzugeben, in der der entsprechende Wert berechnet wird. Diese Funktion muss den Namen „evalexpr“ haben und den gewünschten Wert einer Real-Variablen „evalexpr“ zuweisen. Die Namen dieser Vorgabewerte beginnen in der Regel mit einem "E" (Beispiele: EMATT, EALPH12, EFCWIND).
Bevor diese Möglichkeit bestand, konnte immer nur ein Vorgabewert eines Bauteils mit Hilfe von ADAPT / EADAPT durch eine Funktion bzw. Formel ersetzt werden.
Bei manchen KernelExpressions stehen einige zusätzliche interne Werte aus dem aktuellen Berechnungsschritt zur Verfügung. Auf sie kann mit Funktionen aus dieser Unit zugegriffen werden. Zum Beispiel können sie mit der Funktion ksGetInternals aufgelistet werden.
function evalexpr:REAL;
begin
evalexpr:=0.01;
end;
Für die „Kernelexpressions“ gibt es einige spezielle Datentypen und Funktionen / Prozeduren die in der EbsScript Interface-Unit @KernelExpression zu finden sind:
Name |
Zweck |
Argumente |
Rückgabe- |
Beispiel |
keGetComp |
liefert die gerade berechnete Komponente (als “ebscomp”) |
- |
ebsComp: |
function evalexpr:REAL; var eComp:ebscomp; begin eComp:=keGetComp; for i:=0 to (n-1) do begin str:=printToString (str,ar[i].name," ",ar[i].value,"\n"); end; if (keGetInternalVar("PHIINC", r)) then begin str:=printToString (str,"PHIINC is ",r,"\n"); end; r:=keGetInternal("TAVER"); messagebox (str); end; |
keGetInternals |
liefert ein Feld mit zusätzlichen internen Größen, die für die Berechnung des Vorgabewerts verfügbar sind (Bauteiltyp-spezifisch) |
- |
array of InternalValue |
|
keGetInternal | liefert als Funktionswert den Wert eines dieser zusätzlichen Größen. im Fehlerfall den unter on_error_return angegebenen Wert. |
1: STRING: Name der internen Größe 2: REAL: on_error_return (optional ) |
REAL: Wert der internen Größe |
|
keGetInternalVar |
ermöglicht die Abfrage des Wertes eines dieser zusätzlichen Größen und liefert den Status dieser Abfrage zurück |
1: STRING: Name der internen Größe 2: REAL: Wert des internen Größe |
BOOLEAN: Status der Ausführung. True, wenn erfolgreich, sonst false |
|
keGetItNo |
Nummer des aktuellen Iterationsschritt | - |
INTEGER: Nummer des aktuellen Iterationsschritt |
|
keGetKernelExpression |
liefert eine Referenz auf den aktuell berechneten ebs-Wert (Aktualisierungen werden erst bei der nächsten Simulation wirksam) |
- |
ebsVar |
|
keGetIndicatedValue |
liefert die angegebenen Werte der Komponenten 45 ohne Rückgabe vom Berechnungsstatus (zur Verwendung in Ausdrücken)
|
1.INTEGER: Index der Komponente 45 2: REAL: on_error_return (optional ) |
REAL: Wert der Komponente 45 |
|
keGetIndicatedValueByObject |
liefert den Wert der Komponenten 45 für die vorgegebene Referenz (EBSCOMP45) ohne Rückgabe vom Berechnungsstatus (zur Verwendung in Ausdrücken) |
1: EBSCOMP45 die Referenz auf Komp. 45 2: REAL: on_error_return (optional ) |
REAL: Wert der Komponente 45 |
|
keGetIndicatedValueByObjectVar |
liefert den Wert der Komponenten 45 für die vorgegebene Referenz (EBSCOMP45) und den Berechnungsstatus
|
1: EBSCOMP45 die Referenz auf Komp. 45 2: REAL: Wert der Komponente 45 |
BOOLEAN: Status der Ausführung. True, wenn erfolgreich, sonst false |
|
keGetIndicatedValueVar |
liefert die angegebenen Werte der Komponenten 45 und liefert den Berechnungsstatus zurück
|
1.INTEGER: 2: REAL: |
BOOLEAN: |
|
Prozeduren: |
|
|
|
|
keSetComment |
Ausgabe von Kommentaren die in der Fehlerliste angezeigt werden |
1.STRING:
|
- |
|
keSetError |
Ausgabe von Fehlern die in der Fehlerliste angezeigt werden .Das Aufrufen von keSetError mit abortCalculation = true führt zu einem Abbruch der laufenden Simulation |
1.STRING: 2.BOOLEAN: |
- |
|
keSetWarning |
Ausgabe von Warnungen, die in der Fehlerliste angezeigt werden |
1: STRING: |
- |
Bauteilnummer, gefolgt von den zur Verfügung stehenden internen Größen
7: T_WALL VF
9: T_WALL
10: T_WALL VF
11: COSPHI H2P GENF
12: TARGET ACTUAL CORRECTION ERRORLEVEL
39: TARGET ACTUAL CORRECTION ERRORLEVEL
69: TARGET ACTUAL CORRECTION ERRORLEVEL
20: T_WALL
21: RATCOS TBED
83: ROTSPEED
89: PH2O_FLUEGAS XASH_FLUEGAS T_FLUEGAS P_FLUEGAS M_FLUEGAS
T_WALL THLAY CSASH DIAASH
DISTASH FUELTYPE M_FUEL_WAF PERCCOKE CSCOAL
DIACOAL DISTCOKE SOOTCONT ETA_FLUEGAS
CP_FLUEGAS LAMBDA_FLUEGAS LAMBDA_FIN WIDTH_FGDUCT DEPTH_FGDU
CT RHO_FLUEGAS RHOIN_FLUEGAS RHOOUT_FLUEGAS
90: RCATOS TBED TAD_FLUEGAS_KELVIN TOUT_FLUEGAS_KELVIN
113: PHIINC PHITRAN TAVER TAMB DNI VWIND AWIND
116: PHIINC PHITRAN TAVER TAMB DNI VWIND AWIND
119: T_WALL T_FLUID
120: TAVER TAMB VWIND AWIND
121: RSHEIGHT RSAZIM RDNI VWIND AWIND
126: T_BWALL T_OWALL
160: T_WALL
function evalexpr:REAL;
// result must be in m³/m³ if FCON=1, in mg/Nm³ if FCON=2
var myComp: ebsComp21;
begin
myComp := ebscomp21(keGetComp ());
if (myComp.ALAM < 1.1 and Fluegas.T > 1000.0) then begin
evalexpr := Fluegas.T-1000;
end else begin
evalexpr := 0.0;
end;
end;
function evalexpr:REAL;
var
eVar:ebsvar; eComp:ebscomp;
eComp83:ebscomp83;
str, strName:string;
ar:array of InternalValue;
i,n:integer;
r,g,x:real;
begin
eComp := keGetComp;
eComp83 := ebscomp83(ecomp);
eVar := keGetKernelExpression;
getName (eVar, strName);
ar := keGetInternals;
n := Length(ar);
str := printToString (strName," (",n);
keGetInternalVar ("ROTSPEED", r);
g := r / ecomp83.REVN;
if keGetItNo() = 6 then begin
str := printToString (str,") ROTSPEED is ",r, " ", g," ", log(g),"\n");
print (str);
end;
if (g > 1.0) then begin
x := 0.99;
println ("x1:", x);
evalexpr := x;
end else begin
x := ((0.0367 * log(g)) + 0.9898);
println ("x2:", x);
evalexpr := x;
end;
end;