Opened 10 years ago

Last modified 7 years ago

#2847 new defect

OM recognizes an algebraic loop where there is none.

Reported by: e1026754@… Owned by: somebody
Priority: high Milestone: Future
Component: Backend Version: trunk
Keywords: initialization Cc:

Description

During initiallization OM (R22462) reports an algebraic loop where there is actually none.
In the section of the code, where the error is reported, parameters are passed down from the reactor object to the inner casing, the pipe and the outer casing. Also there should be no need for iteration.

This error did not occur in R22052, although the initialization crashed with another error.

simulate(MetalHydrideStorage.M, stopTime=1000, simflags="", method="dassl")
record SimulationResult
    resultFile = "",
    simulationOptions = "startTime = 0.0, stopTime = 1000.0, numberOfIntervals = 500, tolerance = 1e-006, method = 'dassl', fileNamePrefix = 'MetalHydrideStorage.M', options = '', outputFormat = 'mat', variableFilter = '.*', cflags = '', simflags = ''",
    messages = "Simulation execution failed for model: MetalHydrideStorage.M
",
    timeFrontend = 47.74968853897553,
    timeBackend = 38.34561539851902,
    timeSimCode = 3.609517678727312,
    timeTemplates = 6.031960890188393,
    timeCompile = 21.9803886463405
end SimulationResult;
Notification: It was not possible to analyze the given system symbolically, because the relevant equations are part of an algebraic loop. This is not supported yet.
Warning: Assuming redundant initial conditions for the following 12 initial equations:
         reactor.outerCasing.s = reactor.s_oCasing
         reactor.pipe.crossArea = 3.141592653589793 * ((0.035 - reactor.s_oCasing) ^ 2.0 - (0.02755 + reactor.s_iCasing) ^ 2.0)
         reactor.pipe.crossAreas[1] = reactor.pipe.crossArea
         reactor.pipe.crossAreas[2] = reactor.pipe.crossArea
         reactor.pipe.crossAreas[3] = reactor.pipe.crossArea
         reactor.pipe.crossAreas[4] = reactor.pipe.crossArea
         reactor.pipe.crossAreas[5] = reactor.pipe.crossArea
         reactor.outerCasing.T[4] = reactor.outerCasing.T_start
         initialState.T = T0
         reactor.innerCasing.area_h = 1.570796326794897 * (0.0007590025000000001 + (0.02755 + reactor.s_iCasing) ^ 2.0) * reactor.h_Casing
         reactor.outerCasing.area_h = 1.570796326794897 * (0.001225 + (0.035 - reactor.s_iCasing) ^ 2.0) * reactor.h_Casing
         reactor.outerCasing.T_start = reactor.Twall_start
Warning: Iteration variables with default zero start attribute in torn nonlinear equation system:
         reactor.outerCasing.s:VARIABLE()  = reactor.s_oCasing  "Wall thickness".MetalHydrideStorage.M, .MetalHydrideStorage.Setup.Reactor, .MetalHydrideStorage.Setup.Wall, .Modelica.SIunits.Length type: Real 
         reactor.outerCasing.area_h:VARIABLE()  = 1.570796326794897 * (0.001225 + (0.035 - reactor.s_iCasing) ^ 2.0) * reactor.h_Casing  "Heat transfer area".MetalHydrideStorage.M, .MetalHydrideStorage.Setup.Reactor, .MetalHydrideStorage.Setup.Wall, .Modelica.SIunits.Area type: Real 
         reactor.innerCasing.area_h:VARIABLE()  = 1.570796326794897 * (0.0007590025000000001 + (0.02755 + reactor.s_iCasing) ^ 2.0) * reactor.h_Casing  "Heat transfer area".MetalHydrideStorage.M, .MetalHydrideStorage.Setup.Reactor, .MetalHydrideStorage.Setup.Wall, .Modelica.SIunits.Area type: Real
Warning: Iteration variables with default zero start attribute in torn nonlinear equation system:
         reactor.pipe.crossAreas[6]:VARIABLE()  = reactor.pipe.crossArea  "cross flow areas of flow segments".MetalHydrideStorage.M, .MetalHydrideStorage.Setup.Reactor, .Modelica.Fluid.Pipes.DynamicPipe, .Modelica.SIunits.Area type: Real 
         reactor.pipe.dimensions[1]:VARIABLE()  = 4.0 * reactor.pipe.crossArea / reactor.pipe.perimeter  "hydraulic diameters of flow segments".MetalHydrideStorage.M, .MetalHydrideStorage.Setup.Reactor, .Modelica.Fluid.Pipes.DynamicPipe, .Modelica.SIunits.Length type: Real 
         reactor.pipe.dimensions[2]:VARIABLE()  = 4.0 * reactor.pipe.crossArea / reactor.pipe.perimeter  "hydraulic diameters of flow segments".MetalHydrideStorage.M, .MetalHydrideStorage.Setup.Reactor, .Modelica.Fluid.Pipes.DynamicPipe, .Modelica.SIunits.Length type: Real 
         reactor.pipe.dimensions[3]:VARIABLE()  = 4.0 * reactor.pipe.crossArea / reactor.pipe.perimeter  "hydraulic diameters of flow segments".MetalHydrideStorage.M, .MetalHydrideStorage.Setup.Reactor, .Modelica.Fluid.Pipes.DynamicPipe, .Modelica.SIunits.Length type: Real 
         reactor.pipe.dimensions[4]:VARIABLE()  = 4.0 * reactor.pipe.crossArea / reactor.pipe.perimeter  "hydraulic diameters of flow segments".MetalHydrideStorage.M, .MetalHydrideStorage.Setup.Reactor, .Modelica.Fluid.Pipes.DynamicPipe, .Modelica.SIunits.Length type: Real 
         reactor.pipe.dimensions[5]:VARIABLE()  = 4.0 * reactor.pipe.crossArea / reactor.pipe.perimeter  "hydraulic diameters of flow segments".MetalHydrideStorage.M, .MetalHydrideStorage.Setup.Reactor, .Modelica.Fluid.Pipes.DynamicPipe, .Modelica.SIunits.Length type: Real 
         reactor.pipe.dimensions[6]:VARIABLE()  = 4.0 * reactor.pipe.crossArea / reactor.pipe.perimeter  "hydraulic diameters of flow segments".MetalHydrideStorage.M, .MetalHydrideStorage.Setup.Reactor, .Modelica.Fluid.Pipes.DynamicPipe, .Modelica.SIunits.Length type: Real 
         reactor.pipe.crossAreas[1]:VARIABLE()  = reactor.pipe.crossArea  "cross flow areas of flow segments".MetalHydrideStorage.M, .MetalHydrideStorage.Setup.Reactor, .Modelica.Fluid.Pipes.DynamicPipe, .Modelica.SIunits.Area type: Real 
         reactor.pipe.crossAreas[2]:VARIABLE()  = reactor.pipe.crossArea  "cross flow areas of flow segments".MetalHydrideStorage.M, .MetalHydrideStorage.Setup.Reactor, .Modelica.Fluid.Pipes.DynamicPipe, .Modelica.SIunits.Area type: Real 
         reactor.pipe.crossAreas[3]:VARIABLE()  = reactor.pipe.crossArea  "cross flow areas of flow segments".MetalHydrideStorage.M, .MetalHydrideStorage.Setup.Reactor, .Modelica.Fluid.Pipes.DynamicPipe, .Modelica.SIunits.Area type: Real 
         reactor.pipe.crossAreas[5]:VARIABLE()  = reactor.pipe.crossArea  "cross flow areas of flow segments".MetalHydrideStorage.M, .MetalHydrideStorage.Setup.Reactor, .Modelica.Fluid.Pipes.DynamicPipe, .Modelica.SIunits.Area type: Real 
         reactor.pipe.crossAreas[4]:VARIABLE()  = reactor.pipe.crossArea  "cross flow areas of flow segments".MetalHydrideStorage.M, .MetalHydrideStorage.Setup.Reactor, .Modelica.Fluid.Pipes.DynamicPipe, .Modelica.SIunits.Area type: Real

Change History (10)

comment:1 by Lennart Ochel, 10 years ago

Well, how should one analyze the issue without any information about the model? As far as I can say from the error message, your initialization system is over-determined. In general, it should be tried to avoid over-determined initialization problems.

comment:2 by anonymous, 10 years ago

Hey lochel,
What information would you need?

All variables on the left hand side are not yet determined parameters in children-objects (casing, pipe) and the variables on the right hand side are regular parameters, that have been assigned a value in the parent object (reactor).

To me the error message itself does not make any sense at all.
1) I do not see any loop in the equations in the error message.
2) There are only parameters involved. So iteration should not be necessary (or should it?).
3) The equation initialState.T = T0 involves two parameters that do not show up in any of the other equations. How do they get there?

So as far as I can tell the problem should not be within my code. Also this part of the initialization worked in previous versions of OM.

comment:3 by Martin Sjölund, 10 years ago

Milestone: 1.9.11.9.2

This ticket was not closed for 1.9.1, which has now been released. It was batch modified for milestone 1.9.2 (but maybe an empty milestone was more appropriate; feel free to change it).

comment:4 by Martin Sjölund, 10 years ago

Milestone: 1.9.21.9.3

Milestone changed to 1.9.3 since 1.9.2 was released.

comment:5 by Martin Sjölund, 9 years ago

Milestone: 1.9.31.9.4

Moved to new milestone 1.9.4

comment:6 by Martin Sjölund, 9 years ago

Milestone: 1.9.41.9.5

Milestone pushed to 1.9.5

comment:7 by Martin Sjölund, 9 years ago

Milestone: 1.9.51.10.0

Milestone renamed

comment:8 by Martin Sjölund, 8 years ago

Milestone: 1.10.01.11.0

Ticket retargeted after milestone closed

comment:9 by Martin Sjölund, 8 years ago

Milestone: 1.11.01.12.0

Milestone moved to 1.12.0 due to 1.11.0 already being released.

comment:10 by Francesco Casella, 7 years ago

Milestone: 1.12.0Future

The milestone of this ticket has been reassigned to "Future".

If you think the issue is still valid and relevant for you, please select milestone 1.13.0 for back-end, code generation and run-time issues, or 2.0.0 for front-end issues.

If you are aware that the problem is no longer present, please select the milestone corresponding to the version of OMC you used to check that, and set the status to "worksforme".

In both cases, a short informative comment would be welcome.

Note: See TracTickets for help on using tickets.