Opened 10 years ago
Last modified 7 years ago
#2847 new defect
OM recognizes an algebraic loop where there is none.
Reported by: | 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 , 10 years ago
comment:2 by , 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 , 10 years ago
Milestone: | 1.9.1 → 1.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 , 10 years ago
Milestone: | 1.9.2 → 1.9.3 |
---|
Milestone changed to 1.9.3 since 1.9.2 was released.
comment:9 by , 8 years ago
Milestone: | 1.11.0 → 1.12.0 |
---|
Milestone moved to 1.12.0 due to 1.11.0 already being released.
comment:10 by , 7 years ago
Milestone: | 1.12.0 → Future |
---|
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.
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.