﻿id	summary	reporter	owner	description	type	status	priority	milestone	component	version	resolution	keywords	cc
4239	Errors in compilation of AdvancedNoise.Examples.TimeBasedNoise	Adrian Pop	Lennart Ochel	"See also:
https://www.openmodelica.org/forum/default-topic/2091-advancednoise

I tried model {{{AdvancedNoise.Examples.TimeBasedNoise}}} and got errors such as:
{{{
AdvancedNoise.Examples.TimeBasedNoise.c: In function 'AdvancedNoise_Examples_TimeBasedNoise_eqFunction_13':
AdvancedNoise.Examples.TimeBasedNoise.c:315:32: error: '$PnBuffer' undeclared (first use in this function)
     switch((((modelica_integer)$PnBuffer == ((modelica_integer) 1))?((modelica_integer) 1):((modelica_integer) 1) + (_event_integer(DIVISION_SIM(data->localData[0]->timeValue - data->localData[0]->realVars[4] /* timeBasedNoise._bufferStartTime DISCRETE */,data->simulationInfo->realParameter[2] /* timeBasedNoise._samplePeriod PARAM */,""timeBasedNoise.samplePeriod"",equationIndexes), ((modelica_integer) 0), data))))
}}}

Seems to be an issue with inlining of function:
{{{#!mo
function AdvancedNoise.Sources.TimeBasedNoise$timeBasedNoise.interpolation.interpolate ""Inline before index reduction"" ""Constant interpolation in a buffer of random values""
  input Real[:] buffer ""Buffer of random numbers"";
  input Real offset ""Offset from buffer start (0..size(buffer)-1"";
  input Real samplePeriod = 1.0 ""The sample period of the noise buffer"";
  output Real y ""Interpolated value at position offset"";
  protected Integer nBuffer = size(buffer, 1) ""Size of the buffer"";
algorithm
  y := buffer[if nBuffer == 1 then 1 else 1 + integer(offset)];
end AdvancedNoise.Sources.TimeBasedNoise$timeBasedNoise.interpolation.interpolate;
}}}
in equation
{{{
  timeBasedNoise.y = if not timeBasedNoise.generateNoise or time < timeBasedNoise.startTime then timeBasedNoise.y_off else AdvancedNoise.Sources.TimeBasedNoise$timeBasedNoise.interpolation.interpolate({timeBasedNoise.buffer[1], timeBasedNoise.buffer[2]}, (time - timeBasedNoise.bufferStartTime) / timeBasedNoise.samplePeriod + /*Real*/(timeBasedNoise.nPast), timeBasedNoise.samplePeriod);
}}}
as it produces this C code:
{{{
    switch((((modelica_integer)$PnBuffer == ((modelica_integer) 1))?((modelica_integer) 1):((modelica_integer) 1) + (_event_integer(DIVISION_SIM(data->localData[0]->timeValue - data->localData[0]->realVars[4] /* timeBasedNoise._bufferStartTime DISCRETE */,data->simulationInfo->realParameter[2] /* timeBasedNoise._samplePeriod PARAM */,""timeBasedNoise.samplePeriod"",equationIndexes), ((modelica_integer) 0), data))))
}}}
where {{{$PnBuffer}}} is not declared at all.
"	defect	closed	high	1.19.0	Backend		fixed	AdvancedNoise	
