diff --git a/Modelica/Blocks/Continuous.mo b/Modelica/Blocks/Continuous.mo index 47c28ac063..d6d6a9eaa2 100644 --- a/Modelica/Blocks/Continuous.mo +++ b/Modelica/Blocks/Continuous.mo @@ -918,10 +918,6 @@ to compute u by an algebraic equation. annotation(Dialog(enable=withFeedForward)); parameter .Modelica.Blocks.Types.InitPID initType= .Modelica.Blocks.Types.InitPID.DoNotUse_InitialIntegratorState "Type of initialization (1: no init, 2: steady state, 3: initial state, 4: initial output)" - annotation(Evaluate=true, - Dialog(group="Initialization")); - parameter Boolean limitsAtInit = true - "= false, if limits are ignored during initialization" annotation(Evaluate=true, Dialog(group="Initialization")); parameter Real xi_start=0 "Initial or guess value for integrator output (= integrator state)" @@ -936,8 +932,14 @@ to compute u by an algebraic equation. parameter Real y_start=0 "Initial value of output" annotation(Dialog(enable=initType == .Modelica.Blocks.Types.InitPID.InitialOutput, group= "Initialization")); + parameter Modelica.Blocks.Types.LimiterHomotopy homotopyType = Modelica.Blocks.Types.LimiterHomotopy.Linear + "Simplified model for homotopy-based initialization" + annotation (Evaluate=true, Dialog(group="Initialization")); parameter Boolean strict=false "= true, if strict limits with noEvent(..)" annotation (Evaluate=true, choices(checkBox=true), Dialog(tab="Advanced")); + parameter Boolean limitsAtInit=true + "Has no longer an effect and is only kept for backwards compatibility (the implementation uses now the homotopy operator)" + annotation (Dialog(tab="Dummy"),Evaluate=true, choices(checkBox=true)); constant Modelica.SIunits.Time unitTime=1 annotation (HideResult=true); Modelica.Blocks.Interfaces.RealInput u_ff if withFeedForward "Optional connector of feed-forward input signal" @@ -984,7 +986,8 @@ to compute u by an algebraic equation. uMax=yMax, uMin=yMin, strict=strict, - limitsAtInit=limitsAtInit) + limitsAtInit=limitsAtInit, + homotopyType=homotopyType) annotation (Placement(transformation(extent={{70,-10},{90,10}}))); protected parameter Boolean with_I = controllerType==SimpleController.PI or @@ -1242,13 +1245,23 @@ to compute u_m by an algebraic equation.
-If parameter limitAtInit = false, the limits at the -output of this controller block are removed from the initialization problem which -leads to a much simpler equation system. After initialization has been -performed, it is checked via an assert whether the output is in the -defined limits. For backward compatibility reasons -limitAtInit = true. In most cases it is best -to use limitAtInit = false. +When initializing in steady-state, homotopy-based initialization can help the convergence of the solver, +by using a simplified model a the beginning of the solution process. Different options are available. +
+The parameter limitAtInit is obsolete since MSL 3.2.2 and only kept for backwards compatibility.