Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Model translation warns about failed assignments and fails with -d=dumpSimCode #10519

Closed
rfranke opened this issue Apr 8, 2023 · 15 comments · May be fixed by #10604
Closed

Model translation warns about failed assignments and fails with -d=dumpSimCode #10519

rfranke opened this issue Apr 8, 2023 · 15 comments · May be fixed by #10604
Assignees
Milestone

Comments

@rfranke
Copy link
Member

rfranke commented Apr 8, 2023

Description

The model ThermofluidStream.Examples.SimpleAirCycle, as well as 11 more models of that library, raise warnings of the form:

[1] 10:26:00 Translation Warning
SimCodeUtil.makeSES_SIMPLE_ASSIGN failed for: {splitterT1_2.outletA.state.X[1], splitterT1_2.outletA.state.X[2]} = $TMP_ThermofluidStream_Examples_SimpleAirCycle_source_outlet_Medium_ThermodynamicState1.X

[2] 10:26:00 Translation Warning
SimCodeUtil.makeSES_SIMPLE_ASSIGN failed for: {splitterT1_1.outletA.state.X[1], splitterT1_1.outletA.state.X[2]} = $TMP_ThermofluidStream_Examples_SimpleAirCycle_source1_outlet_Medium_ThermodynamicState7.X

[3] 10:26:00 Translation Warning
SimCodeUtil.makeSES_SIMPLE_ASSIGN failed for: {splitterT1_2.outletA.state.X[1], splitterT1_2.outletA.state.X[2]} = $TMP_ThermofluidStream_Examples_SimpleAirCycle_source_outlet_Medium_ThermodynamicState391.X

[4] 10:26:00 Translation Warning
SimCodeUtil.makeSES_SIMPLE_ASSIGN failed for: {splitterT1_1.outletA.state.X[1], splitterT1_1.outletA.state.X[2]} = $TMP_ThermofluidStream_Examples_SimpleAirCycle_source1_outlet_Medium_ThermodynamicState477.X

The translation fails when -d=dumpSimCode is specified.

Translation Error
[/.../OpenModelica/OMCompiler/Compiler/SimCode/SimCodeUtil.mo: 798:5-798:146]: Internal error function createSimCode failed [Transformation from optimised DAE to simulation code structure failed]

Equations like

{splitterT1_2.outletA.state.X[1], splitterT1_2.outletA.state.X[2]} = $TMP_ThermofluidStream_Examples_SimpleAirCycle_source_outlet_Medium_ThermodynamicState1.X

might better be formulated as

splitterT1_2.outletA.state.X = $TMP_ThermofluidStream_Examples_SimpleAirCycle_source_outlet_Medium_ThermodynamicState1.X

to fit into SimCodeUtil.makeSES_SIMPLE_ASSIGN and to improve the generated code (no need to create a temporary array {X[1],X[2]} for the lhs when directly assigning to X).

Steps to Reproduce

Simulate the model to get the warnings. Alternatively the smaller ThermofluidStream.Processes.Tests.Nozzle
Specify -d=dumpSimCode to make the translation fail.

Expected Behavior

The models should translate without warning and dumpSimCode should work.

Version and OS

The current master branch.

@casella
Copy link
Contributor

casella commented Apr 11, 2023

@mahge, @kabdelhak, mind having a look?

What is strange is that the model compilation, execution and verification are all fine.

@casella casella added this to the 1.22.0 milestone Apr 11, 2023
@casella
Copy link
Contributor

casella commented Apr 17, 2023

But it doesn't work with cpp runtime 😞

kabdelhak added a commit to kabdelhak/OpenModelica that referenced this issue Apr 19, 2023
 extra case to correctly parse arrays that end up in simple assignments, mainly used for record attributes that are arrays.
 partially solves ticket OpenModelica#10519
@kabdelhak
Copy link
Contributor

Can't reproduce the mentioned behavior that the model runs fine. For me it just fails, also with C-runtime.

The problematic part was a weird record assignment. It failed because record attributes that are arrays were not thought of apparently, i fixed it in the PR, now they are parsed correctly, but i still get an error:

ThermofluidStream.Examples.SimpleAirCycle.c:1641:6: note: previous definition of ‘ThermofluidStream_Examples_SimpleAirCycle_eqFunction_471’ was here
 1641 | void ThermofluidStream_Examples_SimpleAirCycle_eqFunction_471(DATA *data, threadData_t *threadData)

Multiple redefinitions of functions, i will see what is up here.

@rfranke
Copy link
Member Author

rfranke commented Apr 19, 2023

Strange. For me the C simulation runs with version 1.0.0 of ThermofluidStream (as can be installed from OMEdit). Using the current master branch:

loadModel(ThermofluidStream); getErrorString();
simulate(ThermofluidStream.Examples.SimpleAirCycle); getErrorString();

gives

true
""
record SimulationResult
    resultFile = "/home/rfranke/work/ThermofluidStream.Examples.SimpleAirCycle_res.mat",
    simulationOptions = "startTime = 0.0, stopTime = 100.0, numberOfIntervals = 1000, tolerance = 1e-06, method = 'dassl', fileNamePrefix = 'ThermofluidStream.Examples.SimpleAirCycle', options = '', outputFormat = 'mat', variableFilter = '.*', cflags = '', simflags = ''",
    messages = "LOG_SUCCESS       | info    | The initialization finished successfully without homotopy method.
LOG_SUCCESS       | info    | The simulation finished successfully.
",
    timeFrontend = 1.174497638,
    timeBackend = 0.457996175,
    timeSimCode = 0.07743319,
    timeTemplates = 0.13148054,
    timeCompile = 6.534537113,
    timeSimulation = 1.096674818,
    timeTotal = 9.472781424000001
end SimulationResult;
"Warning: SimCodeUtil.makeSES_SIMPLE_ASSIGN failed for: {splitterT1_2.outletA.state.X[1], splitterT1_2.outletA.state.X[2]} = $TMP_ThermofluidStream_Examples_SimpleAirCycle_source_outlet_Medium_ThermodynamicState1.X
Warning: SimCodeUtil.makeSES_SIMPLE_ASSIGN failed for: {splitterT1_1.outletA.state.X[1], splitterT1_1.outletA.state.X[2]} = $TMP_ThermofluidStream_Examples_SimpleAirCycle_source1_outlet_Medium_ThermodynamicState7.X
Warning: SimCodeUtil.makeSES_SIMPLE_ASSIGN failed for: {splitterT1_2.outletA.state.X[1], splitterT1_2.outletA.state.X[2]} = $TMP_ThermofluidStream_Examples_SimpleAirCycle_source_outlet_Medium_ThermodynamicState391.X
Warning: SimCodeUtil.makeSES_SIMPLE_ASSIGN failed for: {splitterT1_1.outletA.state.X[1], splitterT1_1.outletA.state.X[2]} = $TMP_ThermofluidStream_Examples_SimpleAirCycle_source1_outlet_Medium_ThermodynamicState477.X
"

@rfranke
Copy link
Member Author

rfranke commented Apr 19, 2023

Trying out your PR,

  • the warnings disappear
  • dumpSimCode still crashes
  • C++ fails as before
  • C now also fails as reported by you

@kabdelhak
Copy link
Contributor

Oh nevermind, i see now what i did wrong. I think my PR is part of the solution, but there is more to it.

kabdelhak added a commit to kabdelhak/OpenModelica that referenced this issue Apr 20, 2023
@kabdelhak
Copy link
Contributor

kabdelhak commented Apr 20, 2023

I fixed the broken simcode dump in #10581. It could not handle printing a function pointer being passed to a function, i added the missing cases and also made a backup case of <unknown> to prevent missing cases from failing entirely in the future.

Back on the original problem now.

kabdelhak added a commit that referenced this issue Apr 20, 2023
kabdelhak added a commit to kabdelhak/OpenModelica that referenced this issue Apr 20, 2023
 extra case to correctly parse arrays that end up in simple assignments, mainly used for record attributes that are arrays.
 partially solves ticket OpenModelica#10519
kabdelhak added a commit that referenced this issue Apr 20, 2023
* [BE] parse arrays as record attributes

 extra case to correctly parse arrays that end up in simple assignments, mainly used for record attributes that are arrays.
 partially solves ticket #10519

* [SimCode] return correct equation index

  - fix typo

* [testsuite] fixed model - remove error msg
kabdelhak added a commit to kabdelhak/OpenModelica that referenced this issue Apr 24, 2023
@kabdelhak
Copy link
Contributor

Attempts to fix this problem are in PR #10604

With this PR, the model generates code, but i might have made errors in the code changes. I just added lines of code so that it would first of all not fail during code generation.

Running it with the current version of the PR yields following error 4 times:

OMCppThermofluidStream.Examples.SimpleAirCycle.h:255:131: error: expected parameter name, found \"2\"
  255 |     #define __omcQ_24TMP_5FThermofluidStream_5FExamples_5FSimpleAirCycle_5Fsource1_5Foutlet_5FMedium_5FThermodynamicState474_P_X_(2) _pointerToRealVars[61]
      |    

My assumption is, that this error is just the result of the compiler trying to parse an array variable while still having a subscript or dimension indicator at the end.

After removing these with dirty changes just to see what happens and if it can actually compile, the following error occurs approx 100 times:

OMCppThermofluidStream.Examples.SimpleAirCycleAlgloop666.cpp:74:12: error: ‘class SimpleAirCycle’ has no member named ‘_junctionT1_1_P_junctionN_P_r_in_1’; did you mean ‘_junctionT1_1_P_junctionN_P_r_in_’?
   74 |   _system->_junctionT1_1_P_junctionN_P_r_in_1 = ((_system->_junctionT1_1_P_outlet_P_state_P_p_ + _system->_junctionT1_1_P_junctionN_P_r_mix_) - _system->_junctionT1_1_P_junctionN_P_p_1);
      |            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Which seems like there is an extra 1 at the end of each name. This might be a result of my dirty fix, but could lead to the core of the problem.

My understanding so far of this problem is that we have records containing arrays, which are tried to be parsed as scalar because it does not expect arrays here (i had to add code to SimCode to make it work). Sine this should be a common structure there is probably something special about this record (individual record variable bindings, special constructor?). As a result the naming of the variables seems to be off. What would be the expected code at the mentioned places?

@rfranke
Copy link
Member Author

rfranke commented Apr 25, 2023

Thank you for your effort so far @kabdelhak!
There is some confusion between arrays and array elements. The model header file OMCppThermofluidStream.Examples.SimpleAirCycle.h defines the first array element as array of size 1 and the second array element as scalar (define into overall vector of variables):

    StatArrayDim1<double, 1, true> __omcQ_24TMP_5FThermofluidStream_5FExamples_5FSimpleAirCycle_5Fsource1_5Foutlet_5FMedium_5FThermodynamicState474_P_X_;
    #define __omcQ_24TMP_5FThermofluidStream_5FExamples_5FSimpleAirCycle_5Fsource1_5Foutlet_5FMedium_5FThermodynamicState474_P_X_(2) _pointerToRealVars[61]

Only one can be right: either array of size 2 or expanded element with with 2 at the end instead of (2). In most if not all cases an array should be an array.

dumpSimCode says:

algVars (367)
----------------------
...
index:5: $TMP_11[1] (no alias)  protected  hideResult  initial: 	arrCref:$TMP_11 index:(34) [1]
index:6: $TMP_120[1] (no alias)  protected  hideResult  initial: 	arrCref:$TMP_120 index:(35) [1]
index:7: $TMP_132[1] (no alias)  protected  hideResult  initial: 	arrCref:$TMP_132 index:(36) [1]
...
index:32: $TMP_ThermofluidStream_Examples_SimpleAirCycle_source1_outlet_Medium_ThermodynamicState474.X[1] (no alias)  protected  hideResult  initial: 	arrCref:$TMP_ThermofluidStream_Examples_SimpleAirCycle_source1_outlet_Medium_ThermodynamicState474.X index:(61) []
index:33: $TMP_ThermofluidStream_Examples_SimpleAirCycle_source1_outlet_Medium_ThermodynamicState474.X[2] (no alias)  protected  hideResult  initial: 	no arrCref index:(62) []
...

ThermodynamicState474.X[1] is "arrCref", whereas ThermodynamicState474.X[2] is "no arrCref". There is no size given (lines ending with []). Is this correct?
Also the $TMP arrays of size 1 don't appear efficient, but this is another issue and they might be needed.

A similar confusion, but the other way around happens in Algloop666. The model header file declares an array of size 2:

    StatArrayDim1<double, 2, true> _junctionT1_1_P_junctionN_P_r_in_;

The first element should be accessed with _junctionT1_1_P_junctionN_P_r_in_(1).
dumpSimCode declares them similarly:

index:268: junctionT1_1.junctionN.r_in[1] (no alias)  protected  initial: 	arrCref:junctionT1_1.junctionN.r_in index:(297) [2]
index:269: junctionT1_1.junctionN.r_in[2] (no alias)  protected  initial: 	no arrCref index:(298) [2]

At least the declaration in the model header file is correct in this case. Note that in SimCode the lines for index 268 and 269 end with size [2], whereas for ThermodynamicState474.X (index 32, 33) they end with [].

@rfranke
Copy link
Member Author

rfranke commented Apr 25, 2023

@kabdelhak it looks that you have solved the second problem with Algloop666 already.
If I fix the remaining first problem of bad declarations of four TMP arrays manually, everything compiles and simulates!
_junctionT1_1_P_junctionN_P_r_in_ still serves as good example for generated SimCode (see above).

--- a/OMCppThermofluidStream.Examples.SimpleAirCycle.generated.h
+++ b/OMCppThermofluidStream.Examples.SimpleAirCycle.h
@@ -251,20 +251,16 @@ protected:
     StatArrayDim1<double, 1, true> __omcQ_24TMP_5F594_;
     StatArrayDim1<double, 1, true> __omcQ_24TMP_5F72_;
     #define __omcQ_24TMP_5FThermofluidStream_5FExamples_5FSimpleAirCycle_5Fsource1_5Foutlet_5FMedium_5FThermodynamicState474_P_T_ _pointerToRealVars[59]
-    StatArrayDim1<double, 1, true> __omcQ_24TMP_5FThermofluidStream_5FExamples_5FSimpleAirCycle_5Fsource1_5Foutlet_5FMedium_5FThermodynamicState474_P_X_;
-    #define __omcQ_24TMP_5FThermofluidStream_5FExamples_5FSimpleAirCycle_5Fsource1_5Foutlet_5FMedium_5FThermodynamicState474_P_X_(2) _pointerToRealVars[61]
+    StatArrayDim1<double, 2, true> __omcQ_24TMP_5FThermofluidStream_5FExamples_5FSimpleAirCycle_5Fsource1_5Foutlet_5FMedium_5FThermodynamicState474_P_X_;
     #define __omcQ_24TMP_5FThermofluidStream_5FExamples_5FSimpleAirCycle_5Fsource1_5Foutlet_5FMedium_5FThermodynamicState474_P_p_ _pointerToRealVars[62]
     #define __omcQ_24TMP_5FThermofluidStream_5FExamples_5FSimpleAirCycle_5Fsource1_5Foutlet_5FMedium_5FThermodynamicState6_P_T_ _pointerToRealVars[63]
-    StatArrayDim1<double, 1, true> __omcQ_24TMP_5FThermofluidStream_5FExamples_5FSimpleAirCycle_5Fsource1_5Foutlet_5FMedium_5FThermodynamicState6_P_X_;
-    #define __omcQ_24TMP_5FThermofluidStream_5FExamples_5FSimpleAirCycle_5Fsource1_5Foutlet_5FMedium_5FThermodynamicState6_P_X_(2) _pointerToRealVars[65]
+    StatArrayDim1<double, 2, true> __omcQ_24TMP_5FThermofluidStream_5FExamples_5FSimpleAirCycle_5Fsource1_5Foutlet_5FMedium_5FThermodynamicState6_P_X_;
     #define __omcQ_24TMP_5FThermofluidStream_5FExamples_5FSimpleAirCycle_5Fsource1_5Foutlet_5FMedium_5FThermodynamicState6_P_p_ _pointerToRealVars[66]
     #define __omcQ_24TMP_5FThermofluidStream_5FExamples_5FSimpleAirCycle_5Fsource_5Foutlet_5FMedium_5FThermodynamicState1_P_T_ _pointerToRealVars[67]
-    StatArrayDim1<double, 1, true> __omcQ_24TMP_5FThermofluidStream_5FExamples_5FSimpleAirCycle_5Fsource_5Foutlet_5FMedium_5FThermodynamicState1_P_X_;
-    #define __omcQ_24TMP_5FThermofluidStream_5FExamples_5FSimpleAirCycle_5Fsource_5Foutlet_5FMedium_5FThermodynamicState1_P_X_(2) _pointerToRealVars[69]
+    StatArrayDim1<double, 2, true> __omcQ_24TMP_5FThermofluidStream_5FExamples_5FSimpleAirCycle_5Fsource_5Foutlet_5FMedium_5FThermodynamicState1_P_X_;
     #define __omcQ_24TMP_5FThermofluidStream_5FExamples_5FSimpleAirCycle_5Fsource_5Foutlet_5FMedium_5FThermodynamicState1_P_p_ _pointerToRealVars[70]
     #define __omcQ_24TMP_5FThermofluidStream_5FExamples_5FSimpleAirCycle_5Fsource_5Foutlet_5FMedium_5FThermodynamicState389_P_T_ _pointerToRealVars[71]
-    StatArrayDim1<double, 1, true> __omcQ_24TMP_5FThermofluidStream_5FExamples_5FSimpleAirCycle_5Fsource_5Foutlet_5FMedium_5FThermodynamicState389_P_X_;
-    #define __omcQ_24TMP_5FThermofluidStream_5FExamples_5FSimpleAirCycle_5Fsource_5Foutlet_5FMedium_5FThermodynamicState389_P_X_(2) _pointerToRealVars[73]
+    StatArrayDim1<double, 2, true> __omcQ_24TMP_5FThermofluidStream_5FExamples_5FSimpleAirCycle_5Fsource_5Foutlet_5FMedium_5FThermodynamicState389_P_X_;
     #define __omcQ_24TMP_5FThermofluidStream_5FExamples_5FSimpleAirCycle_5Fsource_5Foutlet_5FMedium_5FThermodynamicState389_P_p_ _pointerToRealVars[74]
     #define __omcQ_24cse1_ _pointerToRealVars[75]
     #define __omcQ_24cse10_ _pointerToRealVars[76]

@rfranke
Copy link
Member Author

rfranke commented Apr 25, 2023

Btw. just for information: these arrays are only wrappers around a chunk of variables in the overall _pointerToRealVars (last template argument true). They are set up with

void SimpleAirCycle::initAlgVars_0()
{
...
__omcQ_24TMP_5FThermofluidStream_5FExamples_5FSimpleAirCycle_5Fsource1_5Foutlet_5FMedium_5FThermodynamicState474_P_X_
  .init(&_pointerToRealVars[60]);
...
}

and then directly used with array operations, like assignments:

/*
equation index: 474
type: ALGORITHM

  $TMP_ThermofluidStream_Examples_SimpleAirCycle_source1_outlet_Medium_ThermodynamicState474 := if not source1.setEnthalpy then ThermofluidStream.Examples.SimpleAirCycle.source1.Medium.ThermodynamicState(source1.p0_par, source1.T0_par, {source1.Xi0_par[1], 1.0 - source1.Xi0_par[1]}) else ThermofluidStream.Examples.SimpleAirCycle.source1.Medium.ThermodynamicState(source1.p0_par, Modelica.Math.Nonlinear.solveOneNonlinearEquation(function ThermofluidStream.Examples.SimpleAirCycle.source1.Medium.T_phX.f_nonlinear(#(source1.p0_par), #(source1.h0_par), #({source1.Xi0_par[1]})), 190.0, 647.0, 1e-13), {source1.Xi0_par[1], 1.0 - source1.Xi0_par[1]});
*/
void SimpleAirCycle::evaluate_474()
{
  ThermofluidStream_Examples_SimpleAirCycle_source1_Medium_ThermodynamicStateType tmp1216;
  ThermofluidStream_Examples_SimpleAirCycle_source1_Medium_ThermodynamicStateType tmp1218;
  Modelica_Math_Nonlinear_solveOneNonlinearEquationRetType tmp1220;
  ThermofluidStream_Examples_SimpleAirCycle_source1_Medium_ThermodynamicStateType tmp1222;
  if (!_source1_P_setEnthalpy_) {
  ...
  } else {
    double tmp1219_data[]={_source1_P_Xi0_par_(1)};
    StatArrayDim1<double, 1> tmp1219(tmp1219_data);
    _functions->Modelica_Math_Nonlinear_solveOneNonlinearEquation(_Closure23_ThermofluidStream_Examples_SimpleAirCycle_source1_Medium_T__phX_f__nonlinear(_functions, /*box double*/_source1_P_p0_par_, /*box double*/_source1_P_h0_par_, /*box BaseArray<double>*/tmp1219), 190.0, 647.0, 1e-13, tmp1220);
    double tmp1221_data[]={_source1_P_Xi0_par_(1), (1.0 - _source1_P_Xi0_par_(1))};
    StatArrayDim1<double, 2> tmp1221(tmp1221_data);
    tmp1218.p_ = _source1_P_p0_par_;
    tmp1218.T_ = tmp1220;
    tmp1218.X_ = tmp1221;
    tmp1222 = tmp1218;
  }
  __omcQ_24TMP_5FThermofluidStream_5FExamples_5FSimpleAirCycle_5Fsource1_5Foutlet_5FMedium_5FThermodynamicState474_P_p_ = tmp1222.p_;
  __omcQ_24TMP_5FThermofluidStream_5FExamples_5FSimpleAirCycle_5Fsource1_5Foutlet_5FMedium_5FThermodynamicState474_P_T_ = tmp1222.T_;
  __omcQ_24TMP_5FThermofluidStream_5FExamples_5FSimpleAirCycle_5Fsource1_5Foutlet_5FMedium_5FThermodynamicState474_P_X_
    .assign(tmp1222.X_);
}

Assignment of arrays with = operator should also work, but is generally not used for historical reasons. Whole records are sometimes already assigned the simple way, like tmp1222 = tmp1218; above. Obviously this works for records with arrays too.

A pity that we still have separate equations for assignments of individual array elements in the SimCode, like:

/*
equation index: 477
type: SIMPLE_ASSIGN
splitterT1_1.outletA.state.X[1] = $TMP_ThermofluidStream_Examples_SimpleAirCycle_source1_outlet_Medium_ThermodynamicState474.X[1]
*/
void SimpleAirCycle::evaluate_477()
{
  _splitterT1_1_P_outletA_P_state_P_X_(1) = __omcQ_24TMP_5FThermofluidStream_5FExamples_5FSimpleAirCycle_5Fsource1_5Foutlet_5FMedium_5FThermodynamicState474_P_X_(1);
}
/*
equation index: 478
type: SIMPLE_ASSIGN
splitterT1_1.outletA.state.X[2] = $TMP_ThermofluidStream_Examples_SimpleAirCycle_source1_outlet_Medium_ThermodynamicState474.X[2]
*/
void SimpleAirCycle::evaluate_478()
{
  _splitterT1_1_P_outletA_P_state_P_X_(2) = __omcQ_24TMP_5FThermofluidStream_5FExamples_5FSimpleAirCycle_5Fsource1_5Foutlet_5FMedium_5FThermodynamicState474_P_X_(2);
}

rfranke added a commit to rfranke/OpenModelica that referenced this issue Apr 28, 2023
This addresses OpenModelica#10519 --
Model translation warns about failed assignments and fails with -d=dumpSimCode.
@rfranke
Copy link
Member Author

rfranke commented Apr 28, 2023

PR #10630 adds the missing array dimensions. This seems to have been the root cause as the issue disappears without further changes.

rfranke added a commit that referenced this issue Apr 28, 2023
This addresses #10519 --
Model translation warns about failed assignments and fails with -d=dumpSimCode.
rfranke added a commit to rfranke/OpenModelica that referenced this issue Apr 28, 2023
…mCode

This should be handled in the following template phase more efficiently.
The given comment might be historic:
"The routines generate bad code for arrays inside the record unless we expand them"
See also example in issue OpenModelica#10519.
@rfranke
Copy link
Member Author

rfranke commented Apr 28, 2023

PR #10632 changes the above assignment of individual array elements to a combined

/*
equation index: 474
type: SIMPLE_ASSIGN
splitterT1_1.outletA.state.X = $TMP_ThermofluidStream_Examples_SimpleAirCycle_source1_outlet_Medium_ThermodynamicState471.X
*/
void SimpleAirCycle::evaluate_474()
{
  //Array assign
  _splitterT1_1_P_outletA_P_state_P_X_ = __omcQ_24TMP_5FThermofluidStream_5FExamples_5FSimpleAirCycle_5Fsource1_5Foutlet_5FMedium_5FThermodynamicState471_P_X_;
}

... and Jenkins shows that it does not work for all cases :(

@rfranke
Copy link
Member Author

rfranke commented May 3, 2023

... the generated assignments don't mach in all cases without expansion. Expanding everything matches them brute force. But that's another issue. This one is solved with PR #10630.

@rfranke rfranke closed this as completed May 3, 2023
@casella casella assigned rfranke and unassigned mahge and kabdelhak May 3, 2023
@rfranke
Copy link
Member Author

rfranke commented May 4, 2023

Thank's to the work by @kabdelhak on dumpSimCode, we could better analyse the problem and then solve it.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging a pull request may close this issue.

4 participants