﻿id	summary	reporter	owner	description	type	status	priority	milestone	component	version	resolution	keywords	cc
2853	Annex60 model fails after new lookup	Martin Sjölund	Adrian Pop	"Annex60.Utilities.Psychrometrics.Functions.BaseClasses.Examples.DewPointTemperatureDerivativeCheck_amb in the following model fails after the changes to the front-end. Note that DewPointTemperatureDerivativeCheck_amb works fine.

{{{#!mo
package Modelica

  package Math

    function exp
      input Real u;
      output Real y;
      external ""builtin"" y = exp(u);
    end exp;

    function log
      input Real u;
      output Real y;
      external ""builtin"" y = log(u);
    end log;
  end Math;

  package SIunits
    type Pressure = Real(final quantity = ""Pressure"", final unit = ""Pa"", displayUnit = ""bar"");
    type ThermodynamicTemperature = Real(final quantity = ""ThermodynamicTemperature"", final unit = ""K"", min = 0.0, start = 288.15, nominal = 300, displayUnit = ""degC"");
    type Temperature = ThermodynamicTemperature;
  end SIunits;
end Modelica;

package Annex60
  package Utilities
    package Psychrometrics
      package Functions
        function pW_TDewPoi_amb
          extends Annex60.Utilities.Psychrometrics.Functions.BaseClasses.pW_TDewPoi_amb;
          input Modelica.SIunits.Temperature T;
          output Modelica.SIunits.Pressure p_w(displayUnit = ""Pa"", min = 100);
        algorithm
          p_w := Modelica.Math.exp(a1 + a2 * T);
        end pW_TDewPoi_amb;

        package BaseClasses
          package Examples
            model DewPointTemperatureDerivativeCheck_amb
              Real x;
              Real y;
              parameter Real uniCon(unit = ""K/s"") = 1;
            initial equation
              y = x;
            equation
              x = Annex60.Utilities.Psychrometrics.Functions.pW_TDewPoi_amb(T = time * uniCon);
              der(y) = der(x);
              assert(abs(x - y) < 1E-2, ""Model has an error"");
            end DewPointTemperatureDerivativeCheck_amb;
          end Examples;

          function der_pW_TDewPoi_amb
            extends Annex60.Utilities.Psychrometrics.Functions.BaseClasses.pW_TDewPoi_amb;
            input Modelica.SIunits.Temperature T;
            input Real dT;
            output Real dp_w;
          algorithm
            dp_w := a2 * Modelica.Math.exp(a1 + a2 * T) * dT;
          end der_pW_TDewPoi_amb;

          partial function pW_TDewPoi_amb
          protected
            constant Modelica.SIunits.Temperature T1 = 283.15;
            constant Modelica.SIunits.Temperature T2 = 293.15;
            constant Modelica.SIunits.Pressure p1 = 1227.97;
            constant Modelica.SIunits.Pressure p2 = 2338.76;
            constant Real a1 = (Modelica.Math.log(p2) - Modelica.Math.log(p1) * T2 / T1) / (1 - T2 / T1);
            constant Real a2(unit = ""1/K"") = (Modelica.Math.log(p1) - a1) / T1;
          end pW_TDewPoi_amb;
        end BaseClasses;
      end Functions;
    end Psychrometrics;
  end Utilities;
end Annex60;

model DewPointTemperatureDerivativeCheck_amb
  extends Annex60.Utilities.Psychrometrics.Functions.BaseClasses.Examples.DewPointTemperatureDerivativeCheck_amb;
  annotation(__Dymola_Commands(file = ""modelica://Annex60/Resources/Scripts/Dymola/Utilities/Psychrometrics/Functions/BaseClasses/Examples/DewPointTemperatureDerivativeCheck_amb.mos""), experiment(StartTime = 273.15, StopTime = 323.15));
end DewPointTemperatureDerivativeCheck_amb;
}}}"	defect	closed	high	1.9.1	Frontend	trunk	fixed		
