EBSILON®Professional Online Dokumentation
EbsScript / EbsScript Interface Units / InterfaceUnit-Kernel Expression
In diesem Thema
    InterfaceUnit-Kernel Expression
    In diesem Thema

    InterfaceUnit - Kernel Expression

    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.

    Beispiel

    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:

     

    Funktionen

    Name

    Zweck

    Argumente

    Rückgabe-
    wert

    Beispiel

    keGetComp

    liefert die gerade berechnete Komponente (als “ebscomp”)

    -

    ebsComp:

    function evalexpr:REAL;

    var eComp:ebscomp;
    eVar:ebsvar;
    str, strName:string;
    ar:array of InternalValue;
    i,n:integer;
    r:real;

    begin

    eComp:=keGetComp;
    eVar:=keGetKernelExpression;
    getName(eVar, strName);
    ar:=keGetInternals;
    n:=Length(ar);
    str:=printToString (eComp," ",strName," ",n,"\n");

    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");
    str:=printToString (str,"TAVER is ",r,"\n");

    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

    keGetIndicatedValueByObjekt

    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

    keGetIndicatedValueByObjektVar

    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:
    Index der Komp. 45

    2: REAL: 
    Wert der Komponente 45

    BOOLEAN:
    Status der Ausführung. True, wenn erfolgreich, sonst false

    Prozeduren:

     

     

     

     

    keSetComment

    Ausgabe von Kommentaren die in der Fehlerliste angezeigt werden

     

    1.STRING:
    Kommentartext

     

     -

    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:
    Fehlertext

    2.BOOLEAN:
    abort Calculation Flag

    keSetWarning

    Ausgabe von Warnungen, die in der Fehlerliste angezeigt werden

     

    1: STRING:
    Warnung

     -

     

    Liste interner Größen, die in bestimmten KernelExpression-Vorgabewerten eines Bauteils zur Verfügung stehen (Stand 11.2021):

    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

    Weitere Beispiele

    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;