@@ -965,7 +965,7 @@ public
965965 input SplitType splitType;
966966 input VarType varType;
967967 protected
968- VariablePointers scalar_vars ;
968+ VariablePointers sim_vars = if Flags . getConfigBool( Flags . SIM_CODE_SCALARIZE ) then VariablePointers . scalarize(vars) else vars ;
969969 Pointer < list< SimVar >> acc = Pointer . create({});
970970 Pointer < list< SimVar >> real_lst = Pointer . create({});
971971 Pointer < list< SimVar >> int_lst = Pointer . create({});
@@ -974,17 +974,15 @@ public
974974 Pointer < list< SimVar >> enum_lst = Pointer . create({});
975975 Pointer < SimCode . SimCodeIndices > indices_ptr = Pointer . create(simCodeIndices);
976976 algorithm
977- // scalarize variables for simcode
978- scalar_vars := VariablePointers . scalarize(vars);
979977 if splitType == SplitType . NONE then
980978 // Do not split and return everything as one single list
981- VariablePointers . map(scalar_vars , function SimVar . traverseCreate(acc = acc, indices_ptr = indices_ptr, varType = varType));
979+ VariablePointers . map(sim_vars , function SimVar . traverseCreate(acc = acc, indices_ptr = indices_ptr, varType = varType));
982980 simVars := {listReverse(Pointer . access(acc))};
983981 simCodeIndices := Pointer . access(indices_ptr);
984982 elseif splitType == SplitType . TYPE then
985983 // Split the variables by basic type (real, integer, boolean, string)
986984 // and return a list for each type
987- VariablePointers . map(scalar_vars , function splitByType(real_lst = real_lst, int_lst = int_lst, bool_lst = bool_lst, string_lst = string_lst, enum_lst = enum_lst, indices_ptr = indices_ptr, varType = varType));
985+ VariablePointers . map(sim_vars , function splitByType(real_lst = real_lst, int_lst = int_lst, bool_lst = bool_lst, string_lst = string_lst, enum_lst = enum_lst, indices_ptr = indices_ptr, varType = varType));
988986 simVars := {listReverse(Pointer . access(real_lst)),
989987 listReverse(Pointer . access(int_lst)),
990988 listReverse(Pointer . access(bool_lst)),
@@ -1009,7 +1007,7 @@ public
10091007 protected
10101008 SimCode . SimCodeIndices simCodeIndices = Pointer . access(indices_ptr);
10111009 algorithm
1012- () := match (var . ty, varType)
1010+ () := match (Type . arrayElementType( var . ty) , varType)
10131011
10141012 case (Type . REAL (), VarType . SIMULATION )
10151013 algorithm
@@ -1189,8 +1187,13 @@ public
11891187 input UnorderedMap < ComponentRef , SimVar > simcode_map;
11901188 output list< SimVar > vars = {};
11911189 algorithm
1192- vars := list(UnorderedMap . getSafe(BVariable . getVarName(v), simcode_map, sourceInfo()) for v in VariablePointers . scalarizeList({var }));
1190+ if Flags . getConfigBool(Flags . SIM_CODE_SCALARIZE ) then
1191+ vars := list(UnorderedMap . getSafe(BVariable . getVarName(v), simcode_map, sourceInfo()) for v in VariablePointers . scalarizeList({var }));
1192+ else
1193+ vars := {UnorderedMap . getSafe(BVariable . getVarName(var ), simcode_map, sourceInfo())};
1194+ end if ;
11931195 end getVars;
1196+
11941197 end SimVars ;
11951198
11961199 constant SimVars emptySimVars = SIMVARS (
0 commit comments