FMU export fails for a block with algorithm section and discrete variables

I’m trying to export a Co-simulation FMU (2.0) of a model with a block class with discrete variables and an algorithm section but it gives errors when compiling. I can’t post the
whole code of the block here because I’m not authorized by the company. But the block code is something like:

block model_name
    Real real_var1;
    Modelica.Blocks.Interfaces.RealInput array_input_var1[10];
    Modelica.Blocks.Interfaces.RealOutput output_var1;
    
    parameter Integer int_limit;
    Boolean bool_var1;
    Integer int_var1;
equation
    real_var1 = array_input_var1[0];
algorithm
    if array_input_var1[0] > 8.0 and int_var1 < int_limit then
        int_var1:=int_var1+1;
    elseif array_input_var1[0] <8.0 and int_var1 > 1 then
        int_var1:=int_var1-1;
    else
         int_var1:=0;
    end if;

    if real_var1 > 5.0 and int_var1 >1 then
        bool_var1 := true;
    else
        bool_var1 := false;
    end if;

    output_var1 := array_input_var1[1] + real_var1;

end model_name

The code above may not make too much sense but it is just to give an idea. The main problem is with the discrete variables. Also the block inputs and outputs are connected with other blocks. Its is part of a bigger model.

When I try to export I receive the following error:

[Absyn::0:0-0:0] Internal error:
ClassifyEquations.buildContinuousSystem: Expected non-discrete-valued
variables to be continuous-valued: bool_var1
(DAELowTypes.DISCRETE_TIME{ state = false; }))

Variable name changed to match the code example. and If I comment the boolean variable i have an error with the integer variable:

[Absyn::0:0-0:0] Internal error:
SimCodegen.generateNonlinearSystemSingleAlgorithmResidual:
Discrete-valued algorithm outputs not matched to algorithm: int_var1

Again variable name changed to match the code example. I also tried to put
the discrete keyword before the boolean and integer variables, but it didn’t help. Any ideas of what is causing this problem ?

System information:

Product version: 12.1.0.8

Client: Model Center

Client version: 12.1.0.30

Client creation date: 2020-03-02T13:38:32.855263

Client build revisions: S:2b715d78e, J:6a53ed2a2, L:41ddb1b72

Client build type: 64 bit

Kernel version: 12.1.0.34

Kernel creation date: 2020-03-02T13:39:13.038056

Kernel build revisions: S:2b715d78e, J:6a53ed2a2, L:41ddb1b72

Platform: Ubuntu 14.04.6 LTS

There seems to be a confusion regarding array indexing. Modelica uses 1-based indexing of arrays, so expressions like these are problematic: array_input_var1[0]. If I change index 1 to 2, index 0 to 1, and set int_limit = 3, then the block simulates fine with a recent version of System Modeler. I could also successfully perform FMI 2 CS export of the block. How does that work for you?

Thanks for the help.
I just missed this point in example, but it is not what was causing the problem.
Actually for some reason SM version 12.1 couldn’t export an FMU for that model, but 12.3 version does! So the update solved my problem.

Good to hear. Even though the update fixed your problem, this report helped us identify a corner case problem that will be fixed in the next version. Thanks!